ultimatemasashi が 2021年02月28日09時38分29秒 に編集
コメント無し
記事種類の変更
製作品
本文の変更
M5paperで超音波レーダーを作ってみました。 360度サーボモーターで超音波センサーを回転させます。 液晶で距離とどの方角かを出力します。 ![キャプションを入力できます](https://camo.elchika.com/c973706e9d261fdb040cb6b7588931fdf736114f/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39643262396565612d616335622d343033622d626338662d3435616561313734316263302f31396639363961662d333735342d346537612d613963302d303730643332373237313039/) 動画はこちら↓ [https://www.tiktok.com/@ultimatemasashi/video/6931192766097558786?referer_url=http%3A%2F%2Fsetsubi.no-mania.com%2F&referer_video_id=6931192766097558786&is_copy_url=0&is_from_webapp=v2&sender_device=pc&sender_web_id=6932259320226973186](https://www.tiktok.com/@ultimatemasashi/video/6931192766097558786?referer_url=http%3A%2F%2Fsetsubi.no-mania.com%2F&referer_video_id=6931192766097558786&is_copy_url=0&is_from_webapp=v2&sender_device=pc&sender_web_id=6932259320226973186) M5paperはarduino IDEで開発できます。 ↓コードはこちら ```arduino: #include <M5EPD.h> int servoPin = 26; void servoSet(int Angle,int Time) { int pulseWidth; int TimeCount; TimeCount = Time/20; for(int i=0; i <= TimeCount; i++){ pulseWidth = map(Angle, 0, 180, 544, 2400); digitalWrite(servoPin, HIGH); delayMicroseconds(pulseWidth); digitalWrite(servoPin, LOW); delayMicroseconds(20000 - pulseWidth); } } int interval = 0; double distance = 0; int a = 0 ; int b = 0 ; int c = 0 ; int d = 0 ; int f = 0 ; double e = 0 ; unsigned long duration; M5EPD_Canvas canvas(&M5.EPD); void setup() { pinMode(servoPin, OUTPUT); pinMode( 25, OUTPUT ); pinMode( 32, INPUT ); M5.begin(); M5.EPD.SetRotation(90); M5.EPD.Clear(true); canvas.createCanvas(400, 500); canvas.setTextSize(4); //Serial.begin( 9600 ); servoSet(90,100); } void loop() { digitalWrite( 25, HIGH ); delayMicroseconds( 100 ); digitalWrite( 25, LOW ); interval = pulseIn( 32, HIGH ); distance = interval * 0.017; Serial.println( distance, 1 ); Serial.println("cm"); uint8_t percent = 80; //b = (3.14*d)/6 ; a = 200 + distance*cos(b); c = 330 + distance*sin(b); b = d ; f = f+ 1; if (f <=22 ){ e = 6 ; servoSet(135,12); } else{e = -6 ; servoSet(45,12); } d = d + e ; canvas.drawCircle(200, 330, 150, BLUE); canvas.drawCircle(200, 330, 100, BLUE); canvas.drawCircle(200, 330, 50, BLUE); canvas.drawString(String(distance) , 10, 10); canvas.drawString(String(d) , 350, 500); canvas.drawString("cm" , 300, 10); canvas.pushCanvas(0,300,UPDATE_MODE_A2); if (f == 24 ) { M5.EPD.Clear(WHITE); servoSet(90,100); canvas.deleteCanvas(); canvas.createCanvas(400, 500); // canvas.fillRect(100, 280, 200, 200, WHITE); } // if ( 50<= f <= 100 ){ e = -6 ;} canvas.drawLine(200, 330,a ,c,WHITE); if (f == 48 ) { M5.EPD.Clear(WHITE); canvas.deleteCanvas(); canvas.createCanvas(400, 500); f = 0; } delay(200); } ``` 接続はPOAT Aに超音波センサー(HC-SR04)とPOAT Bにサーボモーター(AS3103)を接続しています。 サーボモーターとセンサーは3Dプリンタで合体させています。 ![キャプションを入力できます](https://camo.elchika.com/987ab3750f71b3bdcbb43a1b76861f09a084aeeb/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39643262396565612d616335622d343033622d626338662d3435616561313734316263302f39303665363433632d316433302d343431632d623764642d663066306466616466346336/)
接続は下図の通りです。ケーブルが絡まるので1回転ずつ反転します。 ![キャプションを入力できます](https://camo.elchika.com/3afc04d38c9ca6ed3368d50b767eb881eb50f49a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39643262396565612d616335622d343033622d626338662d3435616561313734316263302f61346339313338662d353638662d343865632d623832342d656266393363343135336130/)