Kostenloser Versand ab €74,95 NL

Vor 16:00 bestelt = Heute versendet

Schnelle Lieferung mit DHL

XNUMX Tage Rückgaberecht *


Land

In diesem Projekt zeige ich Ihnen, wie Sie selbst ein Arduino-Radar herstellen.

Dies ist ein fortgeschrittenes Projekt.

Wenn Ihr Projekt zusammengestellt ist, werden Objekte bis zu 50 cm vom Sensor entfernt angezeigt. Wenn Sie den Code ändern, kann das Radar Objekte bis zu 5 Metern erkennen.

Für dieses Projekt benötigen Sie zwei verschiedene Programme Arduino IDE en In Bearbeitung. Die von Processing verwendete Sprache ist Java. Denken Sie also daran.

  • Level - Fortgeschritten / Experte 65% 65%
  • Dauer - 30/45 min 40% 40%
  • Kosten - 49.75 € abgeschlossen 40% 40%

Schritt 1: Anforderungen

1X Arduino UNO

1x Brotboard

4X m / m Überbrückungskabel

4X f / m Überbrückungskabel

1X 180-Servo

1X HC-SR04

1X HC-SR04 Halter

Schritt 2: Bauen und Verkabeln

Jetzt werden wir das Projekt zusammenstellen.

Sie beginnen, indem Sie die 5V vom Arduino an das Steckbrett senden. Dann gehen Sie vom Steckbrett zum Plus-Port des Servos und des Sensors.

Sobald Sie dies getan haben, gehen Sie vom GND des Servos und des Sensors zum GND des Arduino.

Schließen Sie abschließend das Servosteuerungskabel an Pin 9, den Echo-Pin an Pin 6 und den Trigpin an Pin 7 an.

Schritt 3: Programmierung

 

Nachdem Sie Ihr Arduino-Radar verdrahtet und aufgebaut haben, können Sie mit der Programmierung beginnen Arduino Uno.

Für diesen Code müssen wir eine Include-Datei einfügen.

Eine Bibliothek oder Include-Datei enthält häufig Code, der häufig in anderen Skizzen wiederverwendet werden kann. Oft sind Bibliotheken (Bibliotheken) eine Sammlung verwandter Funktionen, die auf eine bestimmte Anwendung abzielen. Zum Beispiel zur Steuerung eines Streifens mit LEDs, speziellen mathematischen Funktionen oder zum Beispiel zur Steuerung eines LCD-Bildschirms.

Für dieses Projekt verwenden wir die Include-Servodatei. Wenn Sie sie nicht einfügen, können Sie das Arduino-Servo nicht steuern, und Ihr Sonar funktioniert nicht.

Sie können den folgenden Code kopieren und einfügen. Wir empfehlen, dass Sie den Code selbst kopieren, wenn Sie mehr daraus lernen.

   leftRightServo.write (leftRightPos);

      for (index = 0; index <= numReadings; index ++) {         

        digitalWrite (trigPin, LOW);

        delayMicroseconds (2);

        digitalWrite (trigPin, HIGH);                        

        delayMicroseconds (10);                              

        digitalWrite (trigPin, LOW);                          

        pulsTime = pulsIn (echoPin, HIGH);             

        Entfernung = Pulszeit / 13;                           

        gesamt = gesamt + entfernung;                       

        Verzögerung (10);

      }

    Durchschnitt = Gesamt / AnzahlReadings;                              

    if (index> = numReadings) {                             

      index = 0;

      gesamt = 0;

    }

    if (Durchschnitt> = 300) {

      Durchschnitt = 300;

    }

    Serial.print ("X");                                       

    Serial.print (leftRightPos);                             

    Serial.print ("V");                                        

    Serial.println (Durchschnitt);                                

  }

 

  für (leftRightPos = 180; leftRightPos> 0; leftRightPos–) {

    leftRightServo.write (leftRightPos);

    for (index = 0; index <= numReadings; index ++) {

      digitalWrite (trigPin, LOW);

      delayMicroseconds (2);

      digitalWrite (trigPin, HIGH);

      delayMicroseconds (10);

      digitalWrite (trigPin, LOW);

      pulsTime = pulsIn (echoPin, HIGH);

      Entfernung = Pulszeit / 13;

      gesamt = gesamt + entfernung;

      Verzögerung (10);

    }

    Durchschnitt = Gesamt / AnzahlReadings;

    if (index> = numReadings) {

      index = 0;

      gesamt = 0;

    }

    if (Durchschnitt> = 300) {

      Durchschnitt = 300;

    }

    Serial.print ("X");

    Serial.print (leftRightPos);

    Serial.print ("V");

    Serial.println (Durchschnitt);

   }

}

Nachdem Sie den Code in die Arduino IDE eingegeben haben, können Sie den folgenden Code unter Verarbeitung eingeben.


import process.serial. *;   

Serieller Arduinoport;                

Schwimmer x, y;                      

int Radius = 350;              

intw = 300;                   

int Grad = 0;                

int-Wert = 0;                  

Intmotion = 0;                

int [] newValue = new int [181]; 

int [] oldValue = new int [181];

PFont myFont;                 

int RadarDist = 0;            

int firstRun = 0;              

void setup () {

 

Größe (750, 450);

Hintergrund (0);

myFont = createFont ("verdana", 12);

textFont (myFont);

arduinoport = new Serial (dies ist "COM10", 9600);

 

}

 

 

void draw () {

füllen (0);                             

noStroke ();                        

Ellipse (Radius, Radius 750, 750);

rectMode (CENTER);                  

rect (350,402,800,100);             

if (Grad> = 179) {             

Bewegung = 1;                      

}

if (Grad <= 1) {                 

Bewegung = 0;                       

}

 

Schlaganfallgewicht (7);                    

wenn (Bewegung == 0) {                   

für (int i = 0; i <= 20; i ++) { 

Strich (0, (10 · i), 0);          

Linie (Radius, Radius, Radius + cos (Bogenmaß (Grad + (180 + i))) * w, Radius + sin (Bogenmaß (Grad + (180 + i))) * w);

}

} Else {                            

für (int i = 20, i> = 0, i–) {   

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

Linie (Radius, Radius, Radius + cos (Bogenmaß (Grad + (180 + i))) * w, Radius + sin (Bogenmaß (Grad + (180 + i))) * w);

}

}

 

noStroke ();                         

 

füllen (0,50,0);                       

beginShape ();                        

für (int i = 0; i <180; i ++) {    

x = Radius + cos (Bogenmaß ((180 + i))) * ((alter Wert [i]));

y = Radius + sin (Bogenmaß ((180 + i))) * ((alter Wert [i]));

Scheitelpunkt (x, y);                    

}

endShape ();                          

 

füllen (0,110,0);

beginShape ();

für (int i = 0; i <180; i ++) {

x = Radius + cos (Bogenmaß ((180 + i))) * (neuer Wert [i]);

y = Radius + sin (Bogenmaß ((180 + i))) * (neuer Wert [i]);

Scheitelpunkt (x, y);

}

endShape ();

 

füllen (0,170,0);

beginShape ();

für (int i = 0; i <180; i ++) {

x = Radius + cos (Bogenmaß ((180 + i))) * ((neuer Wert [i] + alter Wert [i]) / 2);

y = Radius + sin (Bogenmaß ((180 + i))) * ((neuer Wert [i] + alter Wert [i]) / 2);

Scheitelpunkt (x, y);

}

endShape ();

 

if (firstRun> = 360) {

Hub (150,0,0);

Schlaganfallgewicht (1);

noFill ();

für (int i = 0; i <180; i ++) {

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

x = Radius + cos (Bogenmaß ((180 + i))) * (neuer Wert [i]);

y = Radius + sin (Bogenmaß ((180 + i))) * (neuer Wert [i]);

Ellipse (x, y, 10, 10);

}

}

}

 

für (int i = 0; i <= 5; i ++) {

noFill ();

Schlaganfallgewicht (1);

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

Ellipse (Radius, Radius, (120 * i), (120 * i));

füllen (0, 100, 0);

}

für (int i = 0; i <= 6; i ++) {

Schlaganfallgewicht (1);

Schlaganfall (0, 55);

Linie (Radius, Radius, Radius + cos (Bogenmaß (180+ (30 * i))) * w, Radius + sin (Bogenmaß (180+ (30 * i))) * w);

füllen (0, 55, 0);

noStroke ();

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

Text (Integer.toString (180+ (30 * i)), (Radius + 10) + cos (Bogenmaß (180+ (30 * i))) * (w + 10), (Radius + 10) + sin (Bogenmaß) (180+ (30 * i)) * (w + 10), 25,50);

} Else {

Text (Integer.toString (180+ (30 * i))), Radius + cos (Bogenmaß (180+ (30 * i))) * w, Radius + sin (Bogenmaß (180+ (30 * i))) * w 60,40, XNUMX);

}

}

noStroke ();

füllen (0);

rect (350,402,800,100);

füllen (0, 100, 0);

Text ("Grad:" + Integer.toString (Grad), 100, 380, 100, 50);           

Text ("Radarbildschirmcode", 540, 380, 250, 50);

füllen (0);

rect (70,60,150,100);

füllen (0, 100, 0);

Text ("Bildschirmtaste:", 100, 50, 150, 50);

füllen (0,50,0);

rect (30,53,10,10);

Text ("First Sweep", 115, 70, 150, 50);

füllen (0,110,0);

rect (30,73,10,10);

Text ("Zweiter Sweep", 115, 90, 150, 50);

füllen (0,170,0);

rect (30,93,10,10);

Text ("Durchschnitt", 115, 110, 150, 50);

füllen (0, 255, 0);

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

füllen (0, 255, 0);

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

füllen (0, 255, 0);

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

füllen (0, 255, 0);

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

füllen (0, 255, 0);

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

}

 

 

void serialEvent(Serieller Arduinoport) {

String xString = arduinoport.readStringUntil ('\ n'); 

if (xString! = null) { 

xString = trim (xString);

String getX = xString.substring (1, xString.indexOf ("V"));

String getV = xString.substring (xString.indexOf ("V") + 1, xString.length ());

Grad = Integer.parseInt (getX);

value = Integer.parseInt (getV);

oldValue [Grad] = newValue [Grad];

newValue [Grad] = Wert; 

firstRun ++;

if (firstRun> 330) {

firstRun = 333;

}

}

}

Die Bewertung von www.elektronicavoorjou.nl bei WebwinkelKeur-Bewertungen ist 9.3 / 10 basierend auf 4989 Bewertungen.