ブログだいちゃん

ブログだいちゃん

趣味のブログ

ブログだいちゃん

赤外線リモコンでロボカーを動かす その3

f:id:blogdaichan:20190103180448j:plain

前の記事でリモコンコードとボタンの対応が一致しているのが分かったので、実際にモーターを動かしてみます。

モータードライバー

ブレッドボードにArduino NANOとモータードライバーIC L298N で仮組みしてモーターを動作させてみました。

ロボカーにはL298Nモジュールを使いますが、動作試験はICチップで行います。

f:id:blogdaichan:20190103180445j:plainf:id:blogdaichan:20190103180442j:plain

回路図と配線

回路図は実際とは多少違いますので参考程度に、ブレッドボードに配置して配線しました。

f:id:blogdaichan:20190103180438j:plainf:id:blogdaichan:20190103180435j:plainf:id:blogdaichan:20190103180432j:plain

スケッチ

#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 AArduino 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);
 }

動作確認