Kazalo:

Število: 4 koraki
Število: 4 koraki

Video: Število: 4 koraki

Video: Število: 4 koraki
Video: ⚠️ 4 ТОЧКИ ОТ ИНСУЛЬТА 2024, November
Anonim
聲納
聲納

改作:

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

材料: arduino uno, 超音波 感測器, 驅動 馬達, 喇叭

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

1. korak: 1. korak 電路圖

1. korak
1. korak

這 是 電路圖

2. korak: 2. korak 寫 程式 (arduino)

2. korak 寫 程式 (arduino)
2. korak 寫 程式 (arduino)

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

3. korak: 3. korak processing 程式 (obdelava)

uvozna obdelava.serial.*;

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

Serijski myPort; PFont orcFont; int iAngle; int iDistance; void setup () {velikost (1000, 500); gladko (); myPort = nov serijski (to, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {fill (98, 245, 31); noStroke (); izpolni (0, 4); rect (0, 0, width, 0.935 * height); izpolnite (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } void serialEvent (Serial myPort) {try {String data = myPort.readStringUntil ('\ n'); if (podatki == ničelno) {return; } int commaIndex = data.indexOf (","); Kot niza = data.substring (0, commaIndex); Razdalja niza = data.substring (commaIndex+1, data.length ()-1); iAngle = StringToInt (kot); iDistance = StringToInt (razdalja); } catch (RuntimeException e) {}} void DrawRadar () {pushMatrix (); prevesti (širina/2, 0,926 * višina); noFill (); strokeWeight (2); kap (98, 245, 31); // nariše ločne črte DrawRadarArcLine (0,9375); DrawRadarArcLine (0,7300); DrawRadarArcLine (0,5210); DrawRadarArcLine (0,3130); // nariše kotne črte final int halfWidth = width/2; vrstica (-halfWidth, 0, halfWidth, 0); for (int kot = 30; kot <= 150; kot+= 30) {DrawRadarAngledLine (kot); } vrstica (-halfWidth * cos (radiani (30)), 0, halfWidth, 0); popMatrix (); } void DrawRadarArcLine (končni plavajoči koeficient) {lok (0, 0, koeficient * širina, koeficient * širina, PI, TWO_PI); } void DrawRadarAngledLine (končni int kot) {vrstica (0, 0, (-width/2) * cos (radiani (kot)), (-width/2) * sin (radiani (kot))); } void DrawObject () {pushMatrix (); prevesti (širina/2, 0,926 * višina); strokeWeight (9); kap (255, 10, 10); int pixsDistance = int (iDistance * 0,020835 * višina); if (iDistance 40? "Out of Range": "V dosegu"), 0,125 * širina, 0,9723 * višina); besedilo ("Kot:" + iAngle + "°", 0,52 * širina, 0,9723 * višina); besedilo ("Razdalja:", 0,74 * širina, 0,9723 * višina); if (iDistance <40) {text ("" + iDistance + "cm", 0,775 * širina, 0,9723 * višina); } textSize (25); napolni (98, 245, 60); prevesti (0.5006 * širina + širina/2 * cos (radiani (30)), 0.9093 * višina - širina/2 * sin (radiani (30))); vrtenje (-radiani (-60)); besedilo ("30 °", 0, 0); resetMatrix (); prevesti (0,497 * širina + širina/2 * cos (radiani (60)), 0,9112 * višina - širina/2 * sin (radiani (60))); vrtenje (-radiani (-30)); besedilo ("60 °", 0, 0); resetMatrix (); prevesti (0,493 * širina + širina/2 * cos (radiani (90)), 0,9167 * višina - širina/2 * sin (radiani (90))); vrtenje (radiani (0)); besedilo ("90 °", 0, 0); resetMatrix (); prevesti (0,487 * širina + širina/2 * cos (radiani (120)), 0,92871 * višina - širina/2 * sin (radiani (120))); vrtenje (radiani (-30)); besedilo ("120 °", 0, 0); resetMatrix (); prevesti (0,4896 * širina + širina/2 * cos (radiani (150)), 0,9426 * višina - širina/2 * sin (radiani (150))); vrtenje (radiani (-60)); besedilo ("150 °", 0, 0); popMatrix (); }

int StringToInt (niz niza) {vrednost int = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {vrednost *= 10; vrednost += (string.charAt (i) - '0'); }} vrnjena vrednost;}

Priporočena: