工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

arduinoを使用したソナーと処理IDEでの表示

コンポーネントと消耗品

>
Arduino UNO
× 1
SG90マイクロサーボモーター
× 1
超音波センサー-HC-SR04(汎用)
× 1
ジャンパー線(汎用)
× 1
無はんだブレッドボードフルサイズ
× 1

必要なツールとマシン

>
ホットグルーガン(汎用)
はんだごてキット、SolderPro 150

アプリとオンラインサービス

>
Arduino IDE
処理基盤の処理

このプロジェクトについて

みなさん、こんにちは。障害物回避車を作るように言われましたが、あまりにも一般的で実用的ではないと思ったので、障害物回避車のサーボとHC-SR04センサーのコンセプトでソナーを作ろうと思いました。

ソナーの出力を表示する方法がわからなかったため、tft液晶画面がありませんでした。それから、ソナーの出力をPCに表示できるようになっているので、処理IDEを使用することを考えました。しかし、IDEの処理に慣れていないので、IDEを使用することを知らなかったので、練習にはp5 Webエディターを使用しました(練習用)。Ideといくつかのライブラリの処理を使用してソナーの出力を読み取り、PCに表示しました!

>

<図>

超音波センサーをサーボで回転させて180度の範囲をカバーするようにホットグルーガンを使用してサーボモーターに超音波センサーを取り付け、物体が検出されたかどうかの出力が処理IDEに表示され、さらにコードを記述しました。距離と角度を正確に表示します!

<図>

友人私はまた、IDEの処理での出力が、プロジェクトの参照として画像を使用できるように見えることを共有しました:)

アセンブリと出力がどのように見えるかを知っているので、残っているのは出力のビデオだけです。出力をより適切に理解するために、最後までビデオを見てください。

コード

  • arduinoIDEのソナーコード
  • IDEを処理するためのソナーコード
arduinoIDEのソナーコード 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); delay(30);距離=calDist(); Serial.print(i); Serial.print( "、"); Serial.print(距離); Serial.print( "。"); } for(int i =180; i> 0; i =i-1){s1.write(i); delay(30);距離=calDist(); Serial.print(i); Serial.print( "、"); Serial.print(距離); Serial.print( "。"); }} int calDist(){digitalWrite(trigPin、LOW); delayMicroseconds(2); digitalWrite(trigPin、HIGH); delayMicroseconds(10); digitalWrite(trigPin、LOW);期間=pulseIn(echoPin、HIGH);距離=期間* 0.034 / 2;戻り距離;} 
IDE Java を処理するためのソナーコード
 importprocessing.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、width、height * 0.93); noStroke(); fill(0,255); rect(0、height * 0.93、width、height); drawRadar(); drawLine(); drawObject(); drawText();} void serialEvent(Serial myPort){data =myPort.readStringUntil( '。'); data =data.substring(0、data.length()-1); int index1 =data.indexOf( "、"); ang =data.substring(0、index1); distance =data.substring(index1 + 1、data.length());角度=int(ang); dist =int(distance); System.out.println(angle);} void drawRadar(){pushMatrix(); noFill(); strokeWeight(0.5);ストローク(10,255,10); translate(width / 2、height-height * 0.06); line(-width / 2,0、width / 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(); strokeWeight(9);ストローク(0,255,0); translate(width / 2、height-height * 0.06); line(0,0、(width / 2)* cos(radians(angle))、(-width / 2)* sin(radians(angle))); popMatrix();} void drawObject(){pushMatrix(); strokeWeight(9);ストローク(255,0,0); translate(width / 2、height-height * 0.06); float pixleDist =(dist / 40.0)*(width / 2.0); float pd =(width / 2)-pixleDist; float x =-pixleDist * cos(radians(angle)); float 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(); fill(100,200,255); textSize(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( "Distance:" + dist、width * 0.7、height * 0.99); } translate(width / 2、height-height * 0.06); textSize(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-言語検出器-エッジインパルスとArduinoに基づく
  2. MPU-6050を搭載したArduinoジャイロスコープゲーム
  3. Arduino Digital Dice
  4. ARDUINOを使用した超音波浮揚機
  5. Arduinoとスマートフォンを使用したDIY電圧計
  6. 温度および湿度データロガー
  7. IOT-ESP8266、Arduino、超音波センサーを使用したスマートジャー
  8. Arduino +処理+ PHPを使用したカーカウンター
  9. BoltとArduinoを使用したLEDの明るさの制御
  10. AlexaとArduinoIoTCloudを使用したテレビのフルコントロール
  11. ArduinoとProcessingIDEを使用してコンパスを作成する方法