Halo semuanya, saya disarankan untuk membuat mobil penghindar rintangan tapi saya pikir itu terlalu umum dan tidak praktis untuk membuatnya..., jadi saya berpikir untuk membuat sonar menggunakan konsep servo mobil penghindar rintangan dan sensor HC-SR04.
Saya tidak memiliki layar tft lcd karena itu saya tidak tahu bagaimana menampilkan output sonar. Kemudian saya berpikir untuk menggunakan IDE pemrosesan karena memungkinkan untuk menampilkan output sonar pada pc saya yang juga dengan resolusi yang bagus! tetapi karena saya baru dalam pemrosesan IDE, saya tidak tahu cara menggunakannya, jadi untuk latihan saya menggunakan editor web p5 (hanya untuk latihan) daripada saya menggunakan Ide pemrosesan dan beberapa perpustakaan untuk membaca keluaran sonar dan ditampilkan di pc!
Saya telah memasang sensor ultrasonik pada motor servo menggunakan pistol lem panas sehingga sensor ultrasonik berputar dengan servo dan mencakup kisaran 180 derajat dan kemudian output apakah suatu objek terdeteksi atau tidak ditampilkan pada pemrosesan IDE dan saya menulis beberapa kode lagi yang secara akurat menampilkan jarak dan sudut!
Teman-teman Saya juga telah berbagi bagaimana output pada pemrosesan IDE terlihat seperti Anda dapat menggunakan gambar sebagai referensi dengan proyek Anda :)
Seperti yang kita ketahui bagaimana perakitan dan outputnya, satu-satunya yang tersisa adalah video output, tonton video sampai akhir untuk memahami output dengan lebih baik.
Kode
- Kode sonar untuk arduino IDE
- Kode sonar untuk memproses IDE
Kode sonar untuk arduino IDEC/C++
#include const int trigPin=12;const int echoPin=11;durasi panjang;int jarak;Servo s1;void setup() { Serial.begin(9600); pinMode(trigPin,OUTPUT); pinMode(echoPin,INPUT); s1.attach(9);}void loop(){ for(int i=0;i<180;i=i+1){ s1.write(i); penundaan (30); jarak =calDist(); Serial.print(i); Serial.print(","); Serial.print(jarak); Serial.print("."); } untuk(int i=180;i>0;i=i-1){ s1.tulis(i); penundaan (30); jarak =calDist(); Serial.print(i); Serial.print(","); Serial.print(jarak); Serial.print("."); }} int calDist(){ digitalWrite(trigPin, RENDAH); delayMicroseconds(2); digitalWrite(trigPin, TINGGI); delayMicroseconds(10); digitalWrite(trigPin, RENDAH); durasi =pulseIn(echoPin, TINGGI); jarak=durasi*0,034/2; jarak kembali;}
Kode sonar untuk memproses IDEJava
import processing.serial.*; Port saya serial; String ang="";String distance="";String data="";int angle, dist;void setup() { size (2000.800); myPort =Serial baru(ini,"COM3", 9600); myPort.bufferSampai('.'); background(0);}void draw() { fill(0,5); tidak ada Stroke(); rect(0, 0, lebar, tinggi*0,93); tidak ada Stroke(); isi (0,255); persegi (0, tinggi * 0,93, lebar, tinggi); drawRadar(); drawLine(); drawObject(); drawText();}void serialEvent (Serial myPort) { data =myPort.readStringUntil('.'); data =data.substring(0,data.panjang()-1); int indeks1 =data.indexOf(","); ang=data.substring(0, indeks1); jarak=data.substring(indeks1+1, data.panjang()); sudut =int(ang); dist =int(jarak); System.out.println(angle);}void drawRadar(){ pushMatrix(); tidak ada Isi(); strokeBerat(0.5); pukulan (10,255,10); terjemahkan (lebar/2, tinggi-tinggi * 0,06); garis(-lebar/2,0,lebar/2,0); busur(0,0,(lebar*0,5),(lebar*0,5),PI,TWO_PI); busur(0,0,(lebar*0,25),(lebar*0,25),PI,TWO_PI); busur(0,0,(lebar*0,75),(lebar*0,75),PI,TWO_PI); busur(0,0,(lebar*0,95),(lebar*0,95),PI,TWO_PI); baris(0,0,(-lebar/2)*cos(radian(30)),(-lebar/2)*sin(radian(30))); baris(0,0,(-lebar/2)*cos(radian(60)),(-lebar/2)*sin(radian(60))); baris(0,0,(-lebar/2)*cos(radian(90)),(-lebar/2)*sin(radian(90))); baris(0,0,(-lebar/2)*cos(radian(120)),(-lebar/2)*sin(radian(120))); baris(0,0,(-lebar/2)*cos(radian(150)),(-lebar/2)*sin(radian(150))); pukulan (175.255.175); baris(0,0,(-lebar/2)*cos(radian(15)),(-lebar/2)*sin(radian(15))); baris(0,0,(-lebar/2)*cos(radian(45)),(-lebar/2)*sin(radian(45))); baris(0,0,(-lebar/2)*cos(radian(75)),(-lebar/2)*sin(radian(75))); baris(0,0,(-lebar/2)*cos(radian(105)),(-lebar/2)*sin(radian(105))); baris(0,0,(-lebar/2)*cos(radian(135)),(-lebar/2)*sin(radian(135))); baris(0,0,(-lebar/2)*cos(radian(165)),(-lebar/2)*sin(radian(165))); popMatrix();}kosongkan drawLine() { pushMatrix(); strokeBerat (9); pukulan (0,255,0); terjemahkan (lebar/2, tinggi-tinggi * 0,06); line(0,0,(lebar/2)*cos(radian(sudut)),(-lebar/2)*sin(radian(sudut))); popMatrix();}kosongkan drawObject() { pushMatrix(); strokeBerat (9); pukulan(255,0,0); terjemahkan (lebar/2, tinggi-tinggi * 0,06); float pixleDist =(dist/40.0)*(width/2.0); float pd=(lebar/2)-pixleDist; float x=-pixleDist*cos(radian(sudut)); float y=-pixleDist*sin(radian(sudut)); if(dist<=40){ baris(-x,y,-x+(pd*cos(radian(sudut))),y-(pd*sin(radian(sudut)))); } popMatrix();}kosongkan drawText(){ pushMatrix(); isi(100.200.255); ukuran teks(25); teks("10cm",(lebar/2)+(lebar*0,115),tinggi*0,93); teks("20cm",(lebar/2)+(lebar*0,24),tinggi*0,93); teks("30cm",(lebar/2)+(lebar*0,365),tinggi*0,93); teks("40cm",(lebar/2)+(lebar*0.45),tinggi*0.93); if(dist<=40) { text("Jarak :"+dist,lebar*0,7,tinggi*0,99); } terjemahkan(lebar/2,tinggi-tinggi*0,06); ukuran teks(25); teks(" 30",(lebar/2)*cos(radian(30)),(-lebar/2)*sin(radian(30))); teks(" 60",(lebar/2)*cos(radian(60)),(-lebar/2)*sin(radian(60))); teks("90",(lebar/2)*cos(radian(91)),(-lebar/2)*sin(radian(90))); teks("120",(lebar/2)*cos(radian(123)),(-lebar/2)*sin(radian(118))); teks("150",(lebar/2)*cos(radian(160)),(-lebar/2)*sin(radian(150))); popMatriks(); }
Skema