电路连接:
一、可摇头遥控风扇实例代码:
#include <Servo.h> #include <IRremote.h>// volatile int irPin; volatile int serPin; volatile int motorPin; volatile int angleStep; volatile int speedStep;// volatile int minSpeed;// volatile int motorSpeed;// volatile int angle; volatile int motorStatus;// long ir_item; Servo servo_serPin; IRrecv irrecv_12(12); decode_results results_12; void setup(){ irPin = 12; serPin = 3; motorPin = 6; angleStep = 5; speedStep = 5;// minSpeed = 50;// motorSpeed = 150;// angle = 90; motorStatus = 0;// Serial.begin(9600); servo_serPin.attach(serPin); irrecv_12.enableIRIn(); } void loop(){ if (irrecv_12.decode(&results_12)) { ir_item=results_12.value; String type="UNKNOWN"; String typelist[14]={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"}; if(results_12.decode_type>=1&&results_12.decode_type<=13) { type=typelist[results_12.decode_type]; } Serial.print("IR TYPE:"+type+" "); Serial.println(ir_item,HEX); switch (ir_item) { case 0xFF18E7: motorSpeed = motorSpeed + speedStep;//150+5 if (motorSpeed > 255) { motorSpeed = 255; } break; case 0xFF38C7: if (motorStatus == 0) //on/off { motorStatus = 1; } else { motorStatus = 0; } break; case 0xFF4AB5: motorSpeed = motorSpeed + speedStep;//150-5 if (motorSpeed < minSpeed) { motorSpeed = minSpeed;//50 } break; case 0xFF10EF: angle = angle - angleStep; if (angle < 0) { angle = 0; } break; case 0xFF5AA5: angle = angle + angleStep; if (angle > 180) { angle = 180; } servo_serPin.write(angle); delay(10); break; } if (motorStatus == 1) { analogWrite(motorPin,motorSpeed);//on } else { analogWrite(motorPin,0);//off } irrecv_12.resume(); } else { } }
二、LED灯、蜂鸣器、遥控风扇:
/* 项目名称:遥控风扇 作 者: Naiva 日 期:2019/05/16 */ #include <IRremote.h> const int MOTOR1PIN = 3; const int MOTOR2PIN = 5; const int BUZZERPIN = 4; const int LEDPIN = 7; int RECV_PIN = 9; volatile int speedStep;// volatile int minSpeed;// volatile int motorSpeed;// volatile int motorStatus;// IRrecv irrecv(RECV_PIN); decode_results results; void BUZZER() { digitalWrite(BUZZERPIN,HIGH); delay(200); digitalWrite(BUZZERPIN,LOW); delay(100); digitalWrite(BUZZERPIN,HIGH); delay(200); digitalWrite(BUZZERPIN,LOW); } void setup() { pinMode(BUZZERPIN,OUTPUT); pinMode(LEDPIN,OUTPUT); digitalWrite(LEDPIN,LOW); digitalWrite(BUZZERPIN,LOW); speedStep = 5; minSpeed = 50; motorSpeed = 150; motorStatus = 0; Serial.begin(9600); Serial.println("Enabling IRin"); irrecv.enableIRIn(); // Start the receiver Serial.println("Enabled IRin"); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); long RValue = results.value; switch(RValue) { case 0xFFA25D://A - MOTOR analogWrite(MOTOR2PIN,100); BUZZER(); break; case 0xFF629D://B - LED digitalWrite(LEDPIN,!digitalRead(LEDPIN)); break; case 0xFFE21D://C - BUZZER digitalWrite(BUZZERPIN,!digitalRead(BUZZERPIN)); break; case 0xFF02FD://UP - MOTORSpeed++ motorSpeed = motorSpeed + speedStep;//150+5 if (motorSpeed > 255) { motorSpeed = 255; } break; case 0xFF9867://DOWN - MOTORSpeed-- motorSpeed = motorSpeed + speedStep;//150-5 if (motorSpeed < minSpeed) { motorSpeed = minSpeed;//50 } break; default : Serial.println("ERRO "); break; } if (motorStatus == 1) { analogWrite(MOTOR1PIN,motorSpeed); } else { analogWrite(MOTOR1PIN,0); } irrecv.resume(); // Receive the next value } else { } delay(100); }
(2019/05/16)