Arduino 红外遥控电机
2018-01-21 本文已影响93人
wwyyzz
Arduino 红外遥控电机
1-使用元件:
- HX1838遥控模块 1838红外接收模块
- L298N电机驱动板
- 电机
- 遥控器
- ARDUINO UNO
- 面包板
- 跳线
2-实现功能
1、通过遥控器的1-控制左侧电机前进,4-控制左侧电机停止, 7-控制左侧电机后退
2、通过遥控器的3-控制右侧电机前进,6-控制右侧电机停止, 9-控制右侧电机后退
3-代码:
#include <IRremote.h>
long Left_Forward = 0x00FF30CF;
long Left_Stop = 0x00FF10EF;
long Left_Backward = 0x00FF42BD;
long Right_Forward = 0x00FF7A85;
long Right_Stop = 0x00FF5AA5;
long Right_Backward = 0x00FF52AD;
int input1 = 5; // 定义uno的pin 5 向 input1 输出
int input2 = 6; // 定义uno的pin 6 向 input2 输出
int input3 = 9; // 定义uno的pin 9 向 input3 输出
int input4 = 10; // 定义uno的pin 10 向 input4 输出
int RECV_PIN = 2;//定义红外接收器的引脚为2
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin (9600);
irrecv.enableIRIn(); // 初始化红外接收器
//初始化各IO,模式为OUTPUT 输出模式
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT);
pinMode(input3,OUTPUT);
pinMode(input4,OUTPUT);
}
void loop() {
//forward 向前转
if (irrecv.decode(&results)){
if(results.value == Left_Forward){
digitalWrite(input1,HIGH); //给高电平
digitalWrite(input2,LOW); //给低电平
}
if(results.value == Left_Stop){
digitalWrite(input1,LOW); //给高电平
digitalWrite(input2,LOW); //给低电平
}
if(results.value == Left_Backward){
digitalWrite(input1,LOW); //给高电平
digitalWrite(input2,HIGH); //给低电平
}
if(results.value == Right_Forward){
digitalWrite(input3,HIGH); //给高电平
digitalWrite(input4,LOW); //给低电平
}
if(results.value == Right_Stop){
digitalWrite(input3,LOW); //给高电平
digitalWrite(input4,LOW); //给低电平
}
if(results.value == Right_Backward){
digitalWrite(input3,LOW); //给高电平
digitalWrite(input4,HIGH); //给低电平
}
irrecv.resume();
}
}