亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Sonar 使用 arduino 并在处理 IDE 上显示

组件和用品

Arduino UNO
× 1
SG90 微伺服电机
× 1
超声波传感器 - HC-SR04(通用)
× 1
跳线(通用)
× 1
无焊面包板全尺寸
× 1

必要的工具和机器

热胶枪(通用)
烙铁套件,SolderPro 150

应用和在线服务

Arduino IDE
处理基础处理

关于这个项目

大家好,有人建议我做一个避障车,但我觉得做一个太常见了,不切实际……所以我想用避障车的伺服和HC-SR04传感器的概念来做一个声纳。

我没有 tft lcd 屏幕,因为我不知道如何显示声纳的输出。然后我想使用处理 IDE,因为它能够在我的电脑上以很好的分辨率显示声纳的输出!但由于我是处理 IDE 的新手,我不知道如何使用它,所以为了练习,我使用了 p5 网络编辑器(仅用于练习),而不是使用处理 Ide 和一些库来读取声纳的输出并在 PC 上显示!

我使用热胶枪在伺服电机上安装了超声波传感器,以便超声波传感器随伺服旋转并覆盖 180 度的范围,然后在处理 IDE 上显示是否检测到物体的输出,我编写了更多代码准确显示距离和角度!

朋友们我也分享了处理 IDE 上的输出看起来如何,您可以将图像用作项目的参考:)

正如我们所知,组装和输出看起来如何,唯一剩下的就是输出的视频,观看视频直到最后才能更正确地理解输出。

代码

  • arduino IDE 的声纳代码
  • 用于处理 IDE 的声纳代码
arduino IDE 的声纳代码C/C++
#include const int trigPin=12;const int echoPin=11;long duration;int distance;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);延迟(30);距离 =calDist(); Serial.print(i); Serial.print(",");串行打印(距离); Serial.print("."); } for(int i=180;i>0;i=i-1){ s1.write(i);延迟(30);距离 =calDist(); Serial.print(i); Serial.print(",");串行打印(距离); Serial.print("."); }} int calDist(){ digitalWrite(trigPin, LOW);延迟微秒(2);数字写入(触发引脚,高);延迟微秒(10);数字写入(trigPin,低);持续时间 =脉冲输入(echoPin,高);距离=持续时间*0.034/2;返回距离;}
处理IDE的声纳代码Java
import processing.serial.*;串行 myPort; String ang="";String distance="";String data="";int angle, dist;void setup() { size (2000,800); myPort =new Serial(this,"COM3", 9600); myPort.bufferUntil('.'); background(0);}void draw() { fill(0,5); noStroke(); rect(0, 0, 宽度, 高度*0.93); noStroke();填充(0,255);矩形(0,高度* 0.93,宽度,高度);绘制雷达();画线();绘制对象(); drawText();}void serialEvent (Serial myPort) { data =myPort.readStringUntil('.'); data =data.substring(0,data.length()-1); int index1 =data.indexOf(","); ang=data.substring(0, index1);距离=data.substring(index1+1, data.length());角度 =int(ang); dist =int(距离); System.out.println(angle);}void drawRadar(){ pushMatrix(); noFill();行程重量(0.5);中风(10,255,10);翻译(宽/2,高-高*0.06);线(-宽度/2,0,宽度/2,0); arc(0,0,(width*0.5),(width*0.5),PI,TWO_PI); arc(0,0,(width*0.25),(width*0.25),PI,TWO_PI); arc(0,0,(width*0.75),(width*0.75),PI,TWO_PI); arc(0,0,(width*0.95),(width*0.95),PI,TWO_PI); line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30))); line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60))); line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90))); line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120))); line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150)));中风(175,255,175); line(0,0,(-width/2)*cos(radians(15)),(-width/2)*sin(radians(15))); line(0,0,(-width/2)*cos(radians(45)),(-width/2)*sin(radians(45))); line(0,0,(-width/2)*cos(radians(75)),(-width/2)*sin(radians(75))); line(0,0,(-width/2)*cos(radians(105)),(-width/2)*sin(radians(105))); line(0,0,(-width/2)*cos(radians(135)),(-width/2)*sin(radians(135))); line(0,0,(-width/2)*cos(radians(165)),(-width/2)*sin(radians(165))); popMatrix();}void drawLine() { pushMatrix();行程重量(9);中风(0,255,0);翻译(宽/2,高-高*0.06); line(0,0,(width/2)*cos(radians(angle)),(-width/2)*sin(radians(angle))); popMatrix();}void drawObject() { pushMatrix();行程重量(9);中风(255,0,0);翻译(宽/2,高-高*0.06); float pixleDist =(dist/40.0)*(width/2.0); float pd=(width/2)-pixleDist; float x=-pixleDist*cos(radians(angle));浮动 y=-pixleDist*sin(radians(angle)); if(dist<=40){ line(-x,y,-x+(pd*cos(radians(angle))),y-(pd*sin(radians(angle)))); } popMatrix();}void drawText(){ pushMatrix();填充(100,200,255);文本大小(25); text("10cm",(width/2)+(width*0.115),height*0.93); text("20cm",(width/2)+(width*0.24),height*0.93); text("30cm",(width/2)+(width*0.365),height*0.93); text("40cm",(width/2)+(width*0.45),height*0.93); if(dist<=40) { text("距离:"+dist,width*0.7,height*0.99); } 翻译(宽/2,高-高*0.06);文本大小(25); text(" 30",(width/2)*cos(radians(30)),(-width/2)*sin(radians(30))); text(" 60",(width/2)*cos(radians(60)),(-width/2)*sin(radians(60))); text("90",(width/2)*cos(radians(91)),(-width/2)*sin(radians(90))); text("120",(width/2)*cos(radians(123)),(-width/2)*sin(radians(118))); text("150",(width/2)*cos(radians(160)),(-width/2)*sin(radians(150))); popMatrix(); }

示意图


制造工艺

  1. TinyML-Language Detector-基于 Edge Impulse &Arduino
  2. Arduino Gyroscope Game with MPU-6050
  3. Arduino 数字骰子
  4. 使用 ARDUINO 的超声波悬浮机器
  5. 使用 Arduino 和智能手机的 DIY 电压表
  6. 温湿度数据记录仪
  7. IOT - 使用 ESP8266、Arduino 和超声波传感器的智能罐
  8. Car Counter using Arduino + Processing + PHP
  9. 使用 Bolt 和 Arduino 控制 LED 亮度
  10. 使用 Alexa 和 Arduino IoT Cloud 完全控制您的电视
  11. 使用 Arduino 和 RDA8057M 的 FM 收音机
  12. 如何使用 Arduino 和 Processing IDE 制作指南针