有了库文件一切就方便多了😋

思路是拿一块遥控板,然后把各个按键的信号测出来。需要一个红外接收头,大概一颗糖的价钱。一般红外接收头有三个脚,GND接地,VCC接5V,剩下的一个脚一般接digital 11。

然后上Github找头文件,扔到库里。接着就可以写程序了。

    #include <IRremoteInt.h>
    #include <IRremote.h>
    
    int RECV_PIN = 11; //定义模块的输入脚
    IRrecv irrecv(RECV_PIN);
    decode_results results;
    
    void setup() {
      Serial.begin(9600);
      irrecv.enableIRIn(); //初始模块
    }
    void loop() {
      if (irrecv.decode(&results)) {
        Serial.println(results.value, HEX);
        irrecv.resume();  //接收下一个信号
      }
    }

对着红外接收头发信号就能在串口监视器里看到各种奇特的编码了。

最后就能根据得到的表写小车的控制程序了,譬如:

    #include <IRremoteInt.h>
    #include <IRremote.h>
    
    long KEY_W = 0xFF629D;
    long KEY_A = 0xFF22DD;
    long KEY_D = 0xFFC23D;
    long KEY_S = 0xFFA857;
    long KEY_OK = 0xFF02FD;
    long KEY_1 = 0xFF6897;
    long KEY_2 = 0xFF9867;
    long KEY_3 = 0xFFB04F;
    long KEY_4 = 0xFF30CF;
    long KEY_5 = 0xFF18E7;
    long KEY_6 = 0xFF7A85;
    long KEY_7 = 0xFF10EF;
    long KEY_8 = 0xFF38C7;
    long KEY_9 = 0xFF5AA5;
    long KEY_0L = 0xFF42BD;
    long KEY_0 = 0xFF4AB5;
    long KEY_0R = 0xFF52AD;
    int IN1 = 6;
    int IN2 = 7;
    int IN3 = 8;
    int IN4 = 9;
    int RECV_PIN = 11; //定义模块的输入脚
    IRrecv irrecv(RECV_PIN);
    decode_results results;
    
    void setup() {
      pinMode(IN1, OUTPUT);
      pinMode(IN2, OUTPUT);
      pinMode(IN3, OUTPUT);
      pinMode(IN4, OUTPUT);
      irrecv.enableIRIn(); // 初始模块
    }
    void loop() {
      if (irrecv.decode(&results)) {
        if (results.value == KEY_W)
        {
          digitalWrite(IN1, 1);
          digitalWrite(IN2, 0);
          digitalWrite(IN3, 0);
          digitalWrite(IN4, 1);
        }
        else if (results.value == KEY_A)
        {
          digitalWrite(IN1, 0);
          digitalWrite(IN2, 0);
          digitalWrite(IN3, 0);
          digitalWrite(IN4, 1);
        }
        else if (results.value == KEY_OK)
        {
          digitalWrite(IN1, 1);
          digitalWrite(IN2, 1);
          digitalWrite(IN3, 1);
          digitalWrite(IN4, 1);
        }
        else if (results.value == KEY_D)
        {
          digitalWrite(IN1, 1);
          digitalWrite(IN2, 0);
          digitalWrite(IN3, 0);
          digitalWrite(IN4, 0);
        }
        else if (results.value == KEY_S)
        {
          digitalWrite(IN1, 0);
          digitalWrite(IN2, 1);
          digitalWrite(IN3, 1);
          digitalWrite(IN4, 0);
        }
        else if (results.value == KEY_1)
        {
          digitalWrite(IN1, 0);
          digitalWrite(IN2, 1);
          digitalWrite(IN3, 0);
          digitalWrite(IN4, 1);
        }
        else if (results.value == KEY_3)
        {
          digitalWrite(IN1, 1);
          digitalWrite(IN2, 0);
          digitalWrite(IN3, 1);
          digitalWrite(IN4, 0);
        }
        else if (results.value == KEY_2)
        {
          digitalWrite(IN1, 1);
          digitalWrite(IN2, 1);
          digitalWrite(IN3, 1);
          digitalWrite(IN4, 1);
        }
        irrecv.resume();
      }
    }

其中L298N的使用与上一篇博客相同。

大致以上,简单的不像教程😂