Livraison gratuite à partir de 74,95 € NL (99,95 € BE / DE)

Livraison rapide avec DHL

Commandé avant 16:00 = Expédié aujourd'hui

14 jours de retour*


Pays

Dans ce projet, je vais vous montrer comment créer vous-même un radar Arduino.

Il s'agit d'un projet intermédiaire / avancé.

Lorsque votre projet est assemblé, des objets jusqu'à 50 cm du capteur s'affichent. Si vous modifiez le code, le radar peut détecter des objets jusqu'à 5 mètres.

Pour ce projet, vous avez besoin de deux programmes différents IDE Arduino en En cours. Le langage utilisé par le traitement est Java, alors gardez cela à l'esprit.

  • Niveau - Avancé / Expert 65% 65%
  • Durée - 30/45 Min 40% 40%
  • Coûts - 49.75 € complets 40% 40%

Étape 1: Fournitures

1X Arduino UNO

1X painboard

Câbles volants 4X m / m

Câbles volants 4X f / m

Servo 1X 180

1XHC-SR04

1X support HC-SR04

Étape 2: Construire et câbler

Nous allons maintenant assembler le projet.

Vous commencez par envoyer le 5V de l'Arduino à la maquette. Ensuite, vous passez de la maquette au port plus du servo et du capteur.

Lorsque vous avez fait cela, passez du GND du servo et du capteur au GND de l'Arduino.

Enfin, connectez le câble de commande du servo à la broche 9, la broche d'écho à la broche 6 et la goupille à la broche 7.

Étape 3: programmation

 

Maintenant que vous avez terminé le câblage et la construction de votre radar Arduino, vous pouvez commencer à programmer le Arduino Uno.

Pour ce code, nous devons inclure un fichier d'inclusion.

Un fichier Library ou Include contient souvent du code qui peut souvent être réutilisé dans d'autres esquisses. Les bibliothèques (bibliothèques) sont souvent un ensemble de fonctions associées destinées à une application particulière. Par exemple pour contrôler une bande avec des LED, des fonctions mathématiques spéciales ou par exemple pour contrôler un écran LCD.

Pour ce projet, nous utilisons le fichier servo d'inclusion, si vous ne le mettez pas, votre Arduino ne pourra pas contrôler le servo et votre sonar ne fonctionnera pas.

Vous pouvez copier et coller le code ci-dessous. Nous vous recommandons de copier le code vous-même car vous en apprendrez plus.

   leftRightServo.write (leftRightPos);

      pour (index = 0, index <= numReadings, index ++) {         

        digitalWrite (trigPin, LOW);

        delayMicrosecondes (2);

        digitalWrite (trigPin, HIGH);                        

        delayMicrosecondes (10);                              

        digitalWrite (trigPin, LOW);                          

        pulseTime = pulseIn (echoPin, HIGH);             

        distance = pulseTime / 13;                           

        total = total + distance ;                       

        délai (10);

      }

    moyenne = total / numReadings;                              

    if (index> = numReadings) {                             

      index = 0;

      total = 0 ;

    }

    if (moyenne> = 300) {

      moyenne = 300;

    }

    Serial.print («X»);                                       

    Serial.print (leftRightPos);                             

    Serial.print («V»);                                        

    Serial.println (moyenne);                                

  }

 

  for (leftRightPos = 180; leftRightPos> 0; leftRightPos–) {

    leftRightServo.write (leftRightPos);

    pour (index = 0, index <= numReadings, index ++) {

      digitalWrite (trigPin, LOW);

      delayMicrosecondes (2);

      digitalWrite (trigPin, HIGH);

      delayMicrosecondes (10);

      digitalWrite (trigPin, LOW);

      pulseTime = pulseIn (echoPin, HIGH);

      distance = pulseTime / 13;

      total = total + distance ;

      délai (10);

    }

    moyenne = total / numReadings;

    if (index> = numReadings) {

      index = 0;

      total = 0 ;

    }

    if (moyenne> = 300) {

      moyenne = 300;

    }

    Serial.print («X»);

    Serial.print (leftRightPos);

    Serial.print («V»);

    Serial.println (moyenne);

   }

}

Après avoir entré le code dans l'IDE Arduino, vous pouvez entrer le code ci-dessous dans Traitement.


import processing.serial. *;   

Port série en pierre bleue;                

flotter x, y ;                      

rayon int = 350;              

entier w = 300 ;                   

degré int = 0;                

valeur int = 0;                  

mouvement int = 0;                

int [] newValue = new int [181]; 

int [] oldValue = new int [181];

PFont maFont;                 

int radarDist = 0 ;            

int premierExécution = 0 ;              

void setup () {

 

taille (750, 450);

arrière-plan (0);

myFont = createFont ("verdana", 12);

textFont (maFont);

arduinoport = nouveau Serial (ceci, «COM10», 9600);

 

}

 

 

nul tirage () {

fill (0);                             

noStroke ();                        

ellipse (rayon, rayon, 750, 750);

rectMode (CENTRE);                  

rect (350,402,800,100);             

if (degré> = 179) {             

mouvement = 1;                      

}

if (degré <= 1) {                 

mouvement = 0;                       

}

 

strokeWeight (7);                    

if (mouvement == 0) {                   

pour (int i = 0; i <= 20; i ++) { 

course (0, (10 * i), 0);          

ligne (rayon, rayon, rayon + cos (radians (degré + (180 + i))) * w, rayon + sin (radians (degré + (180 + i))) * w);

}

} Else {                            

pour (int i = 20, i> = 0, i–) {   

course (0,200- (10 * i), 0);       

ligne (rayon, rayon, rayon + cos (radians (degré + (180 + i))) * w, rayon + sin (radians (degré + (180 + i))) * w);

}

}

 

noStroke ();                         

 

fill (0,50,0);                       

beginShape ();                        

pour (int i = 0; i <180; i ++) {    

x = rayon + cos (radians ((180 + i))) * ((oldValue [i]));

y = rayon + sin (radians ((180 + i))) * ((oldValue [i]));

sommet (x, y);                    

}

endShape ();                          

 

fill (0,110,0);

beginShape ();

pour (int i = 0; i <180; i ++) {

x = rayon + cos (radians ((180 + i))) * (newValue [i]);

y = rayon + sin (radians ((180 + i))) * (newValue [i]);

sommet (x, y);

}

endShape ();

 

fill (0,170,0);

beginShape ();

pour (int i = 0; i <180; i ++) {

x = rayon + cos (radians ((180 + i))) * ((newValue [i] + oldValue [i]) / 2);

y = rayon + sin (radians ((180 + i))) * ((newValue [i] + oldValue [i]) / 2);

sommet (x, y);

}

endShape ();

 

if (firstRun> = 360) {

course (150,0,0);

strokeWeight (1);

aucun remplissage ();

pour (int i = 0; i <180; i ++) {

if (oldValue [i] - newValue [i]> 35 || newValue [i] - oldValue [i]> 35) {

x = rayon + cos (radians ((180 + i))) * (newValue [i]);

y = rayon + sin (radians ((180 + i))) * (newValue [i]);

ellipse (x, y, 10, 10);

}

}

}

 

pour (int i = 0; i <= 5; i ++) {

aucun remplissage ();

strokeWeight (1);

course (0, 255- (30 * i), 0);

ellipse (rayon, rayon, (120 * i), (120 * i));

remplir (0, 100, 0);

}

pour (int i = 0; i <= 6; i ++) {

strokeWeight (1);

course (0);

ligne (rayon, rayon, rayon + cos (radians (180+ (30 * i))) * w, rayon + sin (radians (180+ (30 * i))) * w);

remplir (0, 55, 0);

noStroke ();

si (180+ (30 * i)> = 300) {

text (Integer.toString (180+ (30 * i)), (radius + 10) + cos (radians (180+ (30 * i))) * (w + 10), (radius + 10) + sin (radians (180+ (30 * i))) * (w + 10), 25,50);

} Else {

text (Integer.toString (180+ (30 * i)), rayon + cos (radians (180+ (30 * i))) * w, rayon + sin (radians (180+ (30 * i))) * w , 60,40);

}

}

noStroke ();

fill (0);

rect (350,402,800,100);

remplir (0, 100, 0);

texte ("Degrés:" + Integer.toString (degré), 100, 380, 100, 50);           

texte ("Code d'écran radar", 540, 380, 250, 50);

fill (0);

rect (70,60,150,100);

remplir (0, 100, 0);

texte ("Clé d'écran:", 100, 50, 150, 50);

fill (0,50,0);

rect (30,53,10,10);

texte ("Premier balayage", 115, 70, 150, 50);

fill (0,110,0);

rect (30,73,10,10);

texte ("Second balayage", 115, 90, 150, 50);

fill (0,170,0);

rect (30,93,10,10);

texte ("Moyenne", 115, 110, 150, 50);

remplir (0, 255, 0);

texte ("10", 455, 375, 200, 200);

remplir (0, 255, 0);

texte ("20", 455, 310, 200, 200);

remplir (0, 255, 0);

texte ("30", 455, 250, 200, 200);

remplir (0, 255, 0);

texte ("40", 455, 190, 200, 200);

remplir (0, 255, 0);

texte ("50", 455, 130, 200, 200);

}

 

 

void serialEvent (port arduino série) {

Chaîne xString = arduinoport.readStringUntil ('\ n'); 

if (xString! = null) { 

xString = trim (xString);

Chaîne getX = xString.substring (1, xString.indexOf («V»));

Chaîne getV = xString.substring (xString.indexOf («V») + 1, xString.length ());

degré = Integer.parseInt (getX);

valeur = Integer.parseInt (getV);

oldValue [degré] = nouvelleValeur [degré];

newValue [degré] = valeur; 

firstRun ++;

if (firstRun> 330) {

premierRun = 333 ;

}

}

}

La note de www.elektronicavoorjou.nl à Avis sur WebwinkelKeur est 9.3 / 10 basé sur 4778 avis.