自制风扇
/** * 风扇 **/ #include <IRremote.h> //////////千水星电机驱动///////////////////////////////////////// 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 = 3;//红外使用针脚 IRrecv irrecv(RECV_PIN);//定义接收对象 decode_results results;//暂存结果的变量 long control[7][3] = {//遥控器矫正数字 {16580863, 16613503, 16597183}, {16589023, 16621663, 16605343}, {16584943, 16617583, 16601263}, {16593103, 16625743, 16609423}, {16582903, 16615543, 16599223}, {16591063, 16623703, 16607383}, {16586983, 16619623, 16603303} }; //////////////////定义红外接收方法///////////////////////////////////// void initIR() { irrecv.enableIRIn(); } void setup() { Serial.begin (9600); //初始化各IO,模式为OUTPUT 输出模式 pinMode(input1, OUTPUT); pinMode(input2, OUTPUT); pinMode(input3, OUTPUT); pinMode(input4, OUTPUT); //初始化红外接收 initIR(); } void loop() { if (irrecv.decode(&results)) //如果接收到有红外发射器发送过来的数据 { Serial.println(results.value, HEX);//以16进制换行输出接收代码 if (results.value == 4294967295) {//红外长按得时候获取固定值 } else { if (results.value == control[0][0]) { } else if (results.value == control[0][1]) {//上 } else if (results.value == control[0][2]) { } else if (results.value == control[1][0]) {//左 } else if (results.value == control[1][1]) {//中 } else if (results.value == control[1][2]) {//右 } else if (results.value == control[2][0]) { } else if (results.value == control[2][1]) {//下 } else if (results.value == control[2][2]) { } else if (results.value == control[3][0]) {//0 } else if (results.value == control[3][1]) { } else if (results.value == control[3][2]) {//st } else if (results.value == control[4][0]) {//1 } else if (results.value == control[4][1]) {//2 } else if (results.value == control[4][2]) {//3 } else if (results.value == control[5][0]) {//4 } else if (results.value == control[5][1]) {//5 } else if (results.value == control[5][2]) {//6 } else if (results.value == control[6][0]) {//7 //forward 向前转 digitalWrite(input1, HIGH); //给高电平 digitalWrite(input2, LOW); //给低电平 digitalWrite(input3, HIGH); //给高电平 digitalWrite(input4, LOW); //给低电平 delay(1000); //延时1秒 } else if (results.value == control[6][1]) {//8 //stop 停止 digitalWrite(input1, LOW); digitalWrite(input2, LOW); digitalWrite(input3, LOW); digitalWrite(input4, LOW); delay(1000); //延时0.5秒 } else if (results.value == control[6][2]) {//9 //back 向后转 digitalWrite(input1, LOW); digitalWrite(input2, HIGH); digitalWrite(input3, LOW); digitalWrite(input4, HIGH); delay(1000); } } irrecv.resume(); // 接收下一个值 } delay(100); }