超音波センサで計測器(SO1602AWWB使用)
動作しているところ
オンステでは相方にArduinoのプログラムを任せていて(Pythonはやったことある)、ほぼArduinoのプログラムをやったことのないJunがArduinoのプログラムを書いてみました!今回は、誰でもわかるような、このプログラムについて書いていきたいと思います。w
出来ること
超音波センサで読み取った値を距離に変換し、それをPCに送り、同時にディスプレイに表示します。また、10cm以下だった場合は、音と光で知らせます。
使用部品(秋月で揃えました)
- Arduino Uno http://akizukidenshi.com/catalog/g/gM-07385/
- 有機ELキャラクタディスプレイモジュール 16×2行 白色 http://akizukidenshi.com/catalog/g/gP-08277/
- HC-SR04(超音波センサ) http://akizukidenshi.com/catalog/g/gM-11009/
- 圧電ブザー(掘り出し物)
- 適当なLED
- 3K、2K、330Ωの抵抗
- 0.1μFのセラミックコンデンサ
回路図
これから、Eagleで基板を制作していこうと思っているので練習として回路図も作ってみました。
ソースコード
//ライブラリ宣言 #include <I2CLiquidCrystal.h> #include <Wire.h> #define echoPin 12 // 超音波_Echo #define trigPin 13 // 超音波_Trigger int pin = 11; // ブザー int led = 10; // LED //変数初期化 double Duration = 0; //受信した間隔 double Distance = 0; //距離 I2CLiquidCrystal lcd(0x3c, (uint8_t)127); // | +--- contrast (0-255) // +-------- I2C ADDR (SA0=L: 0x3c, SA0=H: 0x3d) void setup() { lcd.begin(16,2); //LCDディスプレイをオン lcd.noCursor(); //LCDカーソルを非表示 Serial.begin( 9600 ); //ポートを開き、速度を設定 pinMode(echoPin,INPUT); //echoPinを入力に設定 pinMode(trigPin,OUTPUT); //trigPinを出力に設定 pinMode(led,OUTPUT); //ledPinを出力に設定 } void loop() { digitalWrite(led,LOW); //ledをON digitalWrite(trigPin,LOW); //超音波(音)を停止 delayMicroseconds(2); //2μ秒待機 digitalWrite(trigPin,HIGH); //超音波(音)を出力 delayMicroseconds(10); //10μ秒待機 digitalWrite(trigPin,LOW); //超音波(音)を停止 Duration = pulseIn(echoPin,HIGH); //パルスを計測(音が行って帰ってくるまでの時間) if (Duration > 0) { //Duration内の値が数かどうか判断 //数だった場合の処理 Duration = Duration/2; //往復距離なので半分にする Distance = Duration*340*100/1000000; // 音速を340m/sなのでそこから距離を算出(cm) Serial.println(Distance); //シリアルで出力 } if (Distance < 10) { //距離が10cm以下かどうか判断 //10cm以下だった場合の処理 tone(pin,262,200); //ドを鳴らす digitalWrite(led,HIGH); //ledをOFF } lcd.clear(); //LCDをクリア lcd.print(Distance); //LCDに距離を表示 delay(100); //0.1秒待機 }
工夫点
ディスプレイに新しいデータを送るたびに続いてしまっていたので lcd.clear(); を入れたりして安定するようにしました。
これからは、距離によって音階が変わるようにしたり、たまに変な値が出てしまうので、それを防ぐため、5回分のデーターの最上値と最低値を省き平均するプログラムができたらいいなと思っています。
他にも、タクトスイッチを使用しディスプレイで操作出来るプログラムを書きたいです。いい方法があったら教えて下さい!
参考にさせてもらったブログ様
不快にさせてしまったら、すいません。消せと言われたらすぐ消します。
ストロベリー・リナックス/秋月電子のI2C液晶/OLEDほかをArduinoで使う https://n.mtng.org/ele/arduino/i2c.html
圧電ブザーを鳴らせてみよう · Arduino docs
液晶表示(LiquidCrystalクラス)ライブラリ | ルネサス エレクトロニクス
Arduinoでパーツやセンサを使ってみよう~超音波モジュール編 | Device Plus - デバプラ
最後まで読んでくださりありがとうございました。
アドバイスなどお願いします。🙏
ロボットの構想①
今回は、どんなロボットを作っていこうとしているのかについて書いていきたいと思います。
①ルールについて
まずは、ルールを読んで大事そうだった部分をまとめました。他にも、大事なことがあったら教えて下さい🙏
サッカーチャレンジ: ジャパンオープン2020和歌山のルールについて(2020.03.15更新)
・重量1.1kg
・ボール補足エリア3.0cm
・12.0Vまでのバッテリー
・高さ22cm(ハンドルは超えてもOK)
・直径22cm
・ハンドル必須(最も高いところから5㎝以上)
・自律制御型ロボット
・10分ハーフ(間5分休み)
・ラインゴールなし
・白線を完全に超えるとアウト(1分)
・青、黃、オレンジ禁止
・塗装するならツヤ消し
・ロボット間通信○
・一方向にしか動かない☓
・白いプラバンをロボットの上につける。(直径4㎝)
大事な部分はこの位かなと判断しました。
②どんな機体にしていきたいか
僕たちのロボットのコンセプトは、近未来的なかっこいいロボットにしました。そのために、必須条件として、
できるだけ機械で加工する
→レーザーカッター、3Dプリンタ、基板外注など…
LEDを搭載する。
(できたらディスプレイも)
にしました。また、モーターは3軸にして、軽くし、キッカーやドリブラーもつけたいなと考えています。
他にも、様々なことを組み込んだロボットを作っていきたいです。なので、これをつけたらいいんじゃないか、などいろいろなアドバイス待ってます!
次回はもっと具体的なことをかけるようがんばります。
自己紹介
はじめまして~
これからロボカップジュニアライトウェイトに出場しようと考えている、現在、中2のJunです!fTomoと協力して書いていきたいと思います。
今回は、作文が超苦手な僕がやってきたこととなぜ、ブログを始めるのか&ライトを始めるのかについて書いていきたいと思います。
僕はこれまで、中学の部活のチーム、Forest(知らないと思うけどw)のメンバーでした。そこで、中1(2019シーズン)から科学部に入り、オンステージに出ていました。
成績は、2019では日本リーグで全国1位、2020は世界リーグでブロック大会優勝しました。しかし、コロナのせいで全国中止(泣)(←今現在)
技術的には、Python(顔認識とか)、基板制作、動画編集(Aviutl)、タスク管理、CAD(Fusion360 ちょっとかじっただけ…)などができます!
これまで作ってきたロボット、基板↓
ブログを始めた理由は研究した成果などをまとめておきたいというのと、いろいろな人に見てもらって、評価や感想をもらえたらなと思ったからです。
オンステしかやったことない僕がオンステを引退し、ライトウェイトを始めようとしている理由は、2つです。
まず、1つ目は、部活では、規制が多く、学校外で公民館の会議室などを借りて作業することがダメなことや、自費でもロボット関連のものを購入しようとする場合は顧問に許可を取らなければいけないなどの決まりが多かったため、部活として、ロボットを作るのは、諦め3年になってからは1,2年生の教育に回ろうと思ったからです。
また、オンステでは、大きなロボットを作ったりするため、大人数でないとできないと感じたからです。
2つ目は、全国大会で全力出しきって、一旦ロボットを辞めて受験に切り替えていこう思っていました。
しかし、コロナのせいで全国大会が中止になってしまい、まだやりきっていない感があります。(←言い訳w)なので少なくとも、8月下旬に開催される僕の住んでいる地区で開催されるNESTロボコンをいう、大会に出ようと思いました
。NESTロボコンにはオンステが無かったため、サッカーかレスキューにすることになりました。サッカーを選んだのは、僕が所属している部活内で、サッカーに出場するチームがあるので、少しサッカーに興味があったからです。
僕はまず、8月下旬のNESTロボコンを目指してロボットを作っていこうと思います。そして、受験なのですが余裕があれば2021シーズンの大会にも出られればなと思っています。その後、高校に入ってからもロボットを続けていければなと思っています。