Tartalomjegyzék:

聲納: 4 lépés
聲納: 4 lépés

Videó: 聲納: 4 lépés

Videó: 聲納: 4 lépés
Videó: 菲利普.霍华德:修复残缺法律体系的四种方法 2024, November
Anonim
聲納
聲納

改作:

我 在 原本 聲納 的 基礎 下 加裝 了 喇叭 以 達到 警告 的 作用

Cím: arduino uno, 超音波 感測器, 驅動 馬達, 喇叭

功能: 掃描 到 物品 時 加速 並 傳 述 到 電腦 , 物品 接近 10 cm 時 喇叭 會 警告

1. lépés: 1. lépés 電路圖

1. lépés
1. lépés

這 是 電路圖

2. lépés: 2. lépés 寫 程式 (arduino)

2. lépés 寫 程式 (arduino)
2. lépés 寫 程式 (arduino)

create.arduino.cc/editor/dwdawdad/ef6b26a2-3f40-410d-9fdd-3413816090fe/preview

3. lépés: 3. lépés 寫 程式 (feldolgozás)

import feldolgozás.sorozat.*;

import java.awt.event. KeyEvent; import java.io. IOException;

Soros myPort; PFont orcFont; int iAngle; int iDistance; void setup () {méret (1000, 500); sima(); myPort = új soros (ez, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {fill (98, 245, 31); noStroke (); kitöltés (0, 4); rect (0, 0, szélesség, 0,935 * magasság); kitöltés (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } void serialEvent (Soros myPort) {try {String data = myPort.readStringUntil ('\ n'); if (adatok == null) {return; } int vesszőIndex = adat.indexOf (","); Karakterlánc szög = data.substring (0, vesszőIndex); Karakterlánc távolsága = adat.substring (vesszőindex+1, adat.hossz ()-1); iAngle = StringToInt (szög); iDistance = StringToInt (távolság); } catch (RuntimeException e) {}} void DrawRadar () {pushMatrix (); fordítás (szélesség/2, 0,926 * magasság); noFill (); strokeSúly (2); stroke (98, 245, 31); // rajzolja az ívvonalakat DrawRadarArcLine (0.9375); DrawRadarArcLine (0,7300); DrawRadarArcLine (0,5210); DrawRadarArcLine (0,3130); // megrajzolja a szögvonalakat végső int halfWidth = width/2; vonal (-fél szélesség, 0, fél szélesség, 0); for (int szög = 30; szög <= 150; szög+= 30) {DrawRadarAngledLine (szög); } vonal (-fél szélesség * cos (radián (30)), 0, fél szélesség, 0); popMatrix (); } void DrawRadarArcLine (végső lebegési együttható) {arc (0, 0, együttható * szélesség, együttható * szélesség, PI, TWO_PI); } void DrawRadarAngledLine (végső int szög) {line (0, 0, (-szélesség/2) * cos (radián (szög)), (-szélesség/2) * sin (radián (szög))); } void DrawObject () {pushMatrix (); fordítás (szélesség/2, 0,926 * magasság); strokeSúly (9); ütés (255, 10, 10); int pixsDistance = int (iDistance * 0,020835 * magasság); if (iDistance 40? "Out of Range": "In Range"), 0,125 * szélesség, 0,9723 * magasság); szöveg ("Szög:" + iAngle + "°", 0,52 * szélesség, 0,9723 * magasság); szöveg ("Távolság:", 0,74 * szélesség, 0,9723 * magasság); if (iTávolság <40) {text ("" + iTávolság + "cm", 0,775 * szélesség, 0,9723 * magasság); } textSize (25); kitöltés (98, 245, 60); fordítás (0,5006 * szélesség + szélesség/2 * cos (radián (30)), 0,9093 * magasság - szélesség/2 * sin (radián (30))); forgatás (-radiánok (-60)); szöveg ("30 °", 0, 0); resetMatrix (); fordítás (0,497 * szélesség + szélesség/2 * cos (radián (60)), 0,9112 * magasság - szélesség/2 * sin (radián (60))); forgatás (-radiánok (-30)); szöveg ("60 °", 0, 0); resetMatrix (); fordítás (0,493 * szélesség + szélesség/2 * cos (radián (90)), 0,9167 * magasság - szélesség/2 * sin (radián (90))); forgatás (radián (0)); szöveg ("90 °", 0, 0); resetMatrix (); fordítás (0,487 * szélesség + szélesség/2 * cos (radián (120))), 0,92871 * magasság - szélesség/2 * sin (radián (120))); forgatás (radián (-30)); szöveg ("120 °", 0, 0); resetMatrix (); lefordítani (0,4896 * szélesség + szélesség/2 * cos (radián (150)), 0,9426 * magasság - szélesség/2 * sin (radián (150))); forgatás (radián (-60)); szöveg ("150 °", 0, 0); popMatrix (); }

int StringToInt (Karakterlánc) {int érték = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {érték *= 10; érték += (string.charAt (i) - '0'); }} visszatérési érték;}

Ajánlott: