Мазмұны:

聲納: 4 қадам
聲納: 4 қадам

Бейне: 聲納: 4 қадам

Бейне: 聲納: 4 қадам
Бейне: 世界上最大的水晶洞穴,人在洞內不能超過5分鐘,墨西哥奈卡水晶洞穴,Naica crystal cave,Naica,Chihuahua,Mexico,the largest crystal cave 2024, Шілде
Anonim

改作:

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

Қосымша: arduino uno, 超音波 感測器, 驅動 馬達, 喇叭

Өлшемі: 掃描 到 物品 時 加速 傳 述 述 接近 接近 接近 接近 cm 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) {қайтару; } 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 (); инсульт салмағы (2); инсульт (98, 245, 31); // DrawRadarArcLine (0.9375) доға сызықтарын салады; DrawRadarArcLine (0.7300); DrawRadarArcLine (0.5210); DrawRadarArcLine (0.3130); // соңғы сызықтарды салады int halfWidth = width/2; сызық (-falWidth, 0, halfWidth, 0); үшін (int бұрышы = 30; бұрыш <= 150; бұрыш+= 30) {DrawRadarAngledLine (бұрыш); } сызық (-falWidth * cos (радиандар (30)), 0, жартылай ені, 0); popMatrix (); } жарамсыз DrawRadarArcLine (соңғы қалқымалы коэффициент) {arc (0, 0, коэффициент * ені, коэффициент * ені, PI, TWO_PI); } жарамсыз DrawRadarAngledLine (соңғы int бұрышы) {сызық (0, 0, (-ені/2) * cos (радиандар (бұрыш)), (-ені/2) * sin (радиандар (бұрыш))); } жарамсыз DrawObject () {pushMatrix (); аудару (ені/2, 0,926 * биіктігі); инсульт салмағы (9); инсульт (255, 10, 10); int pixsDistance = int (iDistance * 0.020835 * биіктік); if (iDistance 40? «Range Out»: «Range In»), 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 (Жолдық жол) {int мәні = 0; for (int i = 0; i = '0' && string.charAt (i) <= '9') {мән *= 10; мәні = = (string.charAt (i) - '0'); }} қайтару мәні;}

Ұсынылған: