前の記事でリモコンコードとボタンの対応が一致しているのが分かったので、実際にモーターを動かしてみます。
モータードライバー
ブレッドボードにArduino NANOとモータードライバーIC L298N で仮組みしてモーターを動作させてみました。
ロボカーにはL298Nモジュールを使いますが、動作試験はICチップで行います。
回路図と配線
回路図は実際とは多少違いますので参考程度に、ブレッドボードに配置して配線しました。
スケッチ
#include <IRremote.h> //リモコンライブラリー int RECV_PIN = 4; //受信モジュール信号を4ピンへ IRrecv irrecv(RECV_PIN); decode_results results; //受信信号を格納する const long prev_button1 = 0xFF18E7; //ボタンのHexコードUPボタン const long prev_button2 = 0xFF4AB5; //ボタンのHexコードDownボタン // const long prev_button3 = 0xFF38C7; //ボタンのHexコードOKボタン // ENABLE A → Arduino D3 void setup() { Serial.begin(9600); //赤外線の通信速度 irrecv.enableIRIn(); // 受信を開始 pinMode(7, OUTPUT); //モーターの出力ピン設定 pinMode(6, OUTPUT); //モーターのブレーキピン設定 pinMode(10, OUTPUT); //LED } void loop() { if (irrecv.decode(&results)) { // 受信コードの値が if(results.value == prev_button1) { // 0xFF18E7だったら Forward(); } else if(results.value == prev_button2) { // 0xFF4AB5だったら Backward(); } irrecv.resume(); // 受信をリセット } } // ====前進==== void Forward() { digitalWrite(10, HIGH); // LED点灯 delay(500); // .5秒間 digitalWrite(10, LOW); // LED消灯 digitalWrite(7, HIGH); // 7ピンをハイにする digitalWrite(6, LOW); // 6ピンをローにする analogWrite(3, 255); // モータースピード delay(2000); Stop(); } //====バック==== void Backward() { digitalWrite(10, HIGH); delay(500); digitalWrite(10, LOW); digitalWrite(7, LOW); digitalWrite(6, HIGH); analogWrite(3, 255); delay(2000); Stop(); } //====モーター停止==== void Stop() { digitalWrite(10, HIGH); delay(500); digitalWrite(10, LOW); digitalWrite(7, LOW); digitalWrite(6, LOW); }