#include <IRremote.h>
int recvPin = 10;
int lowspeedPin = 13; //pin for low speed
int medspeedPin = 12; //pin for medium speed
int highspeedPin = 11;//pin for high speed
IRrecv message(recvPin);
decode_results translations;
enum RemoteButtons {POWER, FUNCSTOP, LOWSPEED, MEDSPEED, HIGHSPEED, UNPUSHED};
RemoteButtons pushedButton = UNPUSHED;
bool FanIsOn = false;
//Translating IR signals
RemoteButtons translateIR() { // returns button pushed on the remote to adjust fan
switch(translations.value){
case 0xFFA25D: return POWER; break;
case 0xFFE21D: return FUNCSTOP; break;
//case 0xFF629D: return VOL+; break;
//case 0xFF22DD: return FAST BACK; break;
//case 0xFF02FD: return PAUSE; break;
//case 0xFFC23D: return FAST FORWARD;break;
//case 0xFFE01F: return DOWN; break;
//case 0xFFA857: return VOL-; break;
//case 0xFF906F: return UP; break;
//case 0xFF9867: return EQ; break;
//case 0xFFB04F: return ST/REPT; break;
//case 0xFF6897: return 0; break;
case 0xFF30CF: return LOWSPEED; break;
case 0xFF18E7: return MEDSPEED; break;
case 0xFF7A85: return HIGHSPEED; break;
//case 0xFF10EF: return 4; break;
//case 0xFF38C7: return 5; break;
//case 0xFF5AA5: return 6; break;
//case 0xFF42BD: return 7; break;
//case 0xFF4AB5: return 8; break;
//case 0xFF52AD: return 9; break;
}
}
void setup(){
// put your setup code here, to run once:
Serial.begin(9600);
message.enableIRIn();
pinMode(recvPin, INPUT);
pinMode(lowspeedPin, OUTPUT);
pinMode(medspeedPin, OUTPUT);
pinMode(highspeedPin, OUTPUT);
}
void loop(){
ReceiverCheck(); //get code sent from remote
AdjustFan(); //adjust fan accordingly
pushedButton = UNPUSHED; //reset button
}
void ReceiverCheck(){
if(message.decode(&translations)){
pushedButton = translateIR();
Serial.println(translations.value);
delay(500);
message.resume();
}
else{
pushedButton = UNPUSHED;
}
}
void AdjustFan(){
switch(pushedButton){
case POWER:{
if(FanIsOn == false){
Serial.println("Powering Fan");
FanIsOn = true;
digitalWrite(lowspeedPin, LOW);
digitalWrite(medspeedPin, LOW);
digitalWrite(highspeedPin, HIGH);
break;
}
}
case FUNCSTOP:{
Serial.println("Turning Off Fan");
FanIsOn = false;
digitalWrite(lowspeedPin, LOW);
digitalWrite(medspeedPin, LOW);
digitalWrite(highspeedPin, LOW);
break;
}
case LOWSPEED:{
Serial.println("Low Speed");
digitalWrite(lowspeedPin, HIGH);
digitalWrite(medspeedPin, LOW);
digitalWrite(highspeedPin, LOW);
break;
}
case MEDSPEED:{
Serial.println("Medium Speed");
digitalWrite(medspeedPin, HIGH);
digitalWrite(lowspeedPin, LOW);
digitalWrite(highspeedPin, LOW);
break;
}
case HIGHSPEED:{
Serial.println("High Speed");
digitalWrite(highspeedPin, HIGH);
digitalWrite(lowspeedPin, LOW);
digitalWrite(medspeedPin, LOW);
break;
}
}
}
Comments
Please log in or sign up to comment.