Arduino nanoとモータドライバTA7291PとIR赤外線障害物回避センサLM393
Arduino nano 3.0互換ボードATMEGA 328 Pを介して、IR赤外線障害物回避センサLM393で物体を検知していなければモータを回し、検知するとモータを止める。上記の他に準備したものは、電池ボックス(単三×2)とタミヤのギヤボックスセット
今回つかっているこのIRセンサは、検知距離の調節までは厳しかった。本体のメータを調節しても、数センチの距離で検知しているか、していないか程度が測定可能(ただし安い。Amazonでも5個550円だった)
物理的な接続とスケッチは下記のとおり。参考サイトも下記の中に記載。検出状態をシリアルモニタに出力させながら実施しているので、コンソール(USBケーブル)はPCにつないだままで実行している。
/*モータドライバ接続 *https://fabkura.gitbooks.io/arduino-docs/content/chapter17.html * モータドライバ#10 OUT2 --- モータ(+) * モータドライバ#9 使用無し --- 無し * モータドライバ#8 出力側電源 --- 電池ボックス(+) * モータドライバ#7 電源+ --- 電源5V=PIN5V * モータドライバ#6 IN2(信号2) --- digital#2=PIN2 * モータドライバ#5 IN1(信号1) --- digital#4=PIN4 * モータドライバ#4 制御電源(速度) --- digital#3(PWM)=PIN3 * モータドライバ#3 使用無し --- 無し * モータドライバ#2 OUT1 --- モータ(-) * モータドライバ#1 GND --- GND * * *電池ボックス(-) --- GND */ /*モータの動作参考 * https://www.petitmonte.com/robot/motor_driver_ta7291p.html */ /*赤外線センサ接続 * OUT --- digital#12=PIN12 * GND --- GND * VCC --- 電源5V=PIN5V * センサはデジタルで通常"1"を返し、検知時に0を返す */ int val = 0; //for Infrared sensor void setup() { pinMode(2,OUTPUT); //IN2 pinMode(4,OUTPUT); //IN1 pinMode(12,INPUT); //infrared sensor Serial.begin(9600); } void loop() { analogWrite(3,255); //モーターの回転速度を設定。最大にしている val = digitalRead(12); //赤外線センサの読み取り用 if (val==1) { //センサが何も検出していない //モータを回転 Serial.println(val); //シリアルモニタにセンサの状態を出す用 digitalWrite(4,HIGH); digitalWrite(2,LOW); delay(1000); } else { //センサが検出した条件 //ブレーキ Serial.println(val); //シリアルモニタにセンサの状態を出す用 digitalWrite(4,HIGH); digitalWrite(2,HIGH); delay(1000); } }