Hallo allemaal, mij werd voorgesteld om een auto voor het vermijden van obstakels te maken, maar ik vond het te gewoon en onpraktisch om er een te maken... dus ik dacht om een sonar te maken met behulp van het concept van de servo van de auto voor het vermijden van obstakels en de HC-SR04-sensor.
Ik had geen tft-lcd-scherm waardoor ik niet wist hoe ik de output van de sonar moest weergeven. Toen dacht ik om de verwerkings-IDE te gebruiken, omdat hierdoor de output van de sonar op mijn pc kon worden weergegeven met een mooie resolutie! maar omdat ik nog niet bekend was met het verwerken van IDE, wist ik niet hoe ik het moest gebruiken, dus voor de praktijk gebruikte ik de p5-webeditor (alleen om te oefenen) dan dat ik de verwerkings-ID en enkele bibliotheken gebruikte om de uitvoer van sonar te lezen en op de pc weer te geven!
Ik heb een ultrasone sensor op de servomotor bevestigd met behulp van een heet lijmpistool, zodat de ultrasone sensor met servo roteert en een bereik van 180 graden bestrijkt en dan wordt de uitvoer weergegeven of een object wordt gedetecteerd of niet op de verwerkings-IDE en ik schreef wat meer code die geeft nauwkeurig de afstand en hoek weer!
Vrienden, ik heb ook gedeeld hoe de uitvoer bij het verwerken van IDE eruitziet, je kunt de afbeelding als referentie gebruiken voor je project :)
Omdat we weten hoe de montage en uitvoer eruit zien, is het enige dat overblijft de video van de uitvoer, bekijk de video tot het einde om de uitvoer veel beter te begrijpen.
Code
- Sonarcode voor arduino IDE
- Sonarcode voor het verwerken van IDE
Sonarcode voor arduino IDEC/C++
#include const int trigPin=12;const int echoPin=11;lange duur;int afstand;Servo s1;void setup() { Serial.begin(9600); pinMode (trigPin, UITGANG); pinMode (echoPin, INPUT); s1.attach(9);}void loop(){ for(int i=0;i<180;i=i+1){ s1.write(i); vertraging (30); afstand =calDist(); Serial.print(i); Serieel.print(","); Serial.print(afstand); Serieel.print("."); } for(int i=180;i>0;i=i-1){ s1.write(i); vertraging (30); afstand =calDist(); Serial.print(i); Serieel.print(","); Serial.print(afstand); Serieel.print("."); }} int calDist(){ digitalWrite(trigPin, LOW); vertragingMicroseconden(2); digitalWrite(trigPin, HOOG); vertraging Microseconden (10); digitalWrite(trigPin, LAAG); duur =pulseIn(echoPin, HOOG); afstand=duur*0.034/2; terugreis;}
Sonarcode voor het verwerken van IDEJava
import processing.serial.*; Seriële myPort; String ang="";String distance="";String data="";int angle, dist;void setup() { size (2000.800); myPort =nieuw serieel (deze, "COM3", 9600); mijnPort.bufferUntil('.'); background(0);}void draw() { fill(0,5); geen slag(); rect(0, 0, breedte, hoogte*0.93); geen slag(); vul (0,255); rect(0,hoogte*0.93,breedte,hoogte); tekenRadar(); teken lijn(); tekenObject(); drawText();}void serialEvent (Serial myPort) { data =myPort.readStringUntil('.'); data =data.substring(0,data.length()-1); int index1 =data.indexOf(","); ang=data.substring(0, index1); afstand=data.substring(index1+1, data.length()); hoek =int(ang); dist =int(afstand); System.out.println(hoek);}void drawRadar(){ pushMatrix(); geen vulling(); slaggewicht (0,5); slag (10,255,10); vertalen(breedte/2,hoogte-hoogte*0.06); lijn(-breedte/2,0,breedte/2,0); arc(0,0,(breedte*0,5),(breedte*0,5),PI,TWO_PI); arc(0,0,(breedte*0,25),(breedte*0,25),PI,TWO_PI); arc(0,0,(breedte*0,75),(breedte*0,75),PI,TWO_PI); arc(0,0,(breedte*0.95),(breedte*0.95),PI,TWO_PI); line(0,0,(-width/2)*cos(radialen(30)),(-width/2)*sin(radialen(30))); line(0,0,(-width/2)*cos(radialen(60)),(-width/2)*sin(radialen(60))); line(0,0,(-width/2)*cos(radialen(90)),(-width/2)*sin(radialen(90))); line(0,0,(-width/2)*cos(radialen(120)),(-width/2)*sin(radialen(120))); line(0,0,(-width/2)*cos(radialen(150)),(-width/2)*sin(radialen(150))); beroerte (175,255,175); line(0,0,(-width/2)*cos(radialen(15)),(-width/2)*sin(radialen(15))); line(0,0,(-width/2)*cos(radialen(45)),(-width/2)*sin(radialen(45))); line(0,0,(-width/2)*cos(radialen(75)),(-width/2)*sin(radialen(75))); line(0,0,(-width/2)*cos(radialen(105)),(-width/2)*sin(radialen(105))); line(0,0,(-width/2)*cos(radialen(135)),(-width/2)*sin(radialen(135))); line(0,0,(-width/2)*cos(radialen(165)),(-width/2)*sin(radialen(165))); popMatrix();}void drawLine() { pushMatrix(); slagGewicht (9); slag (0,255,0); vertalen(breedte/2,hoogte-hoogte*0.06); line(0,0,(breedte/2)*cos(radialen(hoek)),(-breedte/2)*sin(radialen(hoek))); popMatrix();}void drawObject() { pushMatrix(); slagGewicht (9); slag (255,0,0); vertalen(breedte/2,hoogte-hoogte*0.06); float pixleDist =(dist/40.0)*(width/2.0); float pd=(breedte/2)-pixleDist; float x=-pixleDist*cos(radialen(hoek)); float y=-pixleDist*sin(radialen(hoek)); if(dist<=40){ line(-x,y,-x+(pd*cos(radialen(hoek))),y-(pd*sin(radialen(hoek)))); } popMatrix();}void drawText(){ pushMatrix(); vul(100,200,255); tekstgrootte(25); tekst("10cm",(breedte/2)+(breedte*0.115),hoogte*0.93); tekst("20cm",(breedte/2)+(breedte*0,24),hoogte*0,93); tekst("30cm",(breedte/2)+(breedte*0.365), hoogte*0.93); tekst("40cm",(breedte/2)+(breedte*0.45),hoogte*0.93); if(dist<=40) { text("Afstand:"+dist,width*0.7,height*0.99); } vertalen(breedte/2,hoogte-hoogte*0.06); tekstgrootte(25); text(" 30",(width/2)*cos(radialen(30)),(-width/2)*sin(radialen(30))); text(" 60",(width/2)*cos(radialen(60)),(-width/2)*sin(radialen(60))); text("90",(width/2)*cos(radialen(91)),(-width/2)*sin(radialen(90))); text("120",(width/2)*cos(radialen(123)),(-width/2)*sin(radialen(118))); text("150",(breedte/2)*cos(radialen(160)),(-breedte/2)*sin(radialen(150))); popMatrix(); }
Schema's