Мазмуну:

聲納: 4 кадам
聲納: 4 кадам

Video: 聲納: 4 кадам

Video: 聲納: 4 кадам
Video: 《鹤唳华亭·别云间/Royal Nirvana》第4集-高能番外篇|罗晋 李一桐 黄志忠 张志坚 苗圃 金瀚 郑业成 王劲松 EP4【捷成华视偶像剧场】 2024, Ноябрь
Anonim
Ж
Ж

改作:

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

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

功能: 掃描 到 物品 時 加速 傳 傳 述 接近 接近 接近 接近 接近 接近 10см 時 喇叭 會 警告

1 -кадам: 1 -кадам

1 -кадам
1 -кадам

這 是 電路圖

2 -кадам: 2 -кадам 寫 程式 (arduino)

2 -кадам 寫 程式 (arduino)
2 -кадам 寫 程式 (arduino)

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

3 -кадам: 3 -кадам (иштетүү)

импортту иштетүү.сериал.*;

java.awt.event. KeyEvent импорттоо; java.io. IOException импорттоо;

Сериялык myPort; PFont orcFont; int iAngle; int iDistance; void setup () {size (1000, 500); жылмакай (); myPort = жаңы серия (бул, "COM7", 9600); myPort.clear (); myPort.bufferUntil ('\ n');

} void draw () {fill (98, 245, 31); noStroke (); толтуруу (0, 4); түз (0, 0, туурасы, 0.935 * бийиктик); толтуруу (98, 245, 31); DrawRadar (); DrawLine (); DrawObject (); DrawText (); } void serialEvent (Serial myPort) {аракет кылыңыз {String data = myPort.readStringUntil ('\ n'); if (data == null) {return; } int commaIndex = data.indexOf (","); Сап бурчу = data.substring (0, commaIndex); Сап аралык = data.substring (commaIndex+1, data.length ()-1); iAngle = StringToInt (бурч); iDistance = StringToInt (расстояние); } catch (RuntimeException e) {}} DrawRadar () {pushMatrix (); которуу (туурасы/2, 0,926 * бийиктиги); noFill (); strokeWeight (2); инсульт (98, 245, 31); // DrawRadarArcLine (0.9375) жаа сызыктарын тартат; DrawRadarArcLine (0.7300); DrawRadarArcLine (0.5210); DrawRadarArcLine (0.3130); // бурчтук сызыктарды тартат int int halfWidth = туурасы/2; сызык (-halfWidth, 0, halfWidth, 0); үчүн (int бурч = 30; бурч <= 150; бурч+= 30) {DrawRadarAngledLine (бурч); } сызык (-halfWidth * cos (радиандар (30)), 0, halfWidth, 0); popMatrix (); } жараксыз DrawRadarArcLine (акыркы калкыма коэффициенти) {arc (0, 0, коэффициент * туурасы, коэффициент * туурасы, PI, TWO_PI); } жараксыз DrawRadarAngledLine (акыркы int бурчу) {сызык (0, 0, (-width/2) * cos (радиандар (бурч)), (-width/2) * sin (радиандар (бурч)))) } DrawObject () {pushMatrix (); которуу (туурасы/2, 0,926 * бийиктиги); strokeWeight (9); инсульт (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * бийиктиги); if (iDistance 40? "Out Of Range": "In Range"), 0.125 * туурасы, 0.9723 * бийиктиги); текст ("Бурч:" + iAngle + "°", 0,52 * туурасы, 0,9723 * бийиктик); текст ("Расстояние:", 0,74 * туурасы, 0,9723 * бийиктик); if (iDistance <40) {текст ("" + iDistance + "cm", 0,775 * туурасы, 0,9723 * бийиктик); } textSize (25); толтуруу (98, 245, 60); которуу (0.5006 * туурасы + туурасы/2 * cos (радиандар (30)), 0.9093 * бийиктиги - туурасы/2 * sin (радиандар (30))); айлануу (-радиандар (-60)); текст ("30 °", 0, 0); resetMatrix (); которуу (0,497 * туурасы + туурасы/2 * cos (радиандар (60)), 0,9112 * бийиктик - туурасы/2 * sin (радиандар (60))); айлануу (-радиандыктар (-30)); текст ("60 °", 0, 0); resetMatrix (); которуу (0,493 * туурасы + туурасы/2 * cos (радиандар (90)), 0,9167 * бийиктиги - туурасы/2 * sin (радиандар (90))); айлануу (радиандар (0)); текст ("90 °", 0, 0); resetMatrix (); которуу (0,487 * туурасы + туурасы/2 * cos (радиандар (120)), 0,92871 * бийиктиги - туурасы/2 * sin (радиандар (120))); айлануу (радиандар (-30)); текст ("120 °", 0, 0); resetMatrix (); которуу (0,4896 * туурасы + туурасы/2 * cos (радиандар (150)), 0,9426 * бийиктиги - туурасы/2 * sin (радиандар (150))); айлануу (радиандар (-60)); текст ("150 °", 0, 0); popMatrix (); }

int StringToInt (String string) {int мааниси = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {value *= 10; мааниси += (string.charAt (i) - '0'); }} кайтаруу мааниси;}

Сунушталууда: