Khobe Farmer
Published

3 Speed Remote Controlled Fan

This project uses an Arduino Uno R3 microcontroller board and an IR receiver and remote to control the speed at which a DC motor fan spins.

BeginnerFull instructions provided521
3 Speed Remote Controlled Fan

Things used in this project

Hardware components

Fan blade and 3-6V motor
×1
Arduino UNO
Arduino UNO
×1
Diode (Generic)
×3
Resistor 220 ohm
Resistor 220 ohm
×1
Resistor 100 ohm
Resistor 100 ohm
×1
Through Hole Resistor, 10 ohm
Through Hole Resistor, 10 ohm
×2
Infrared Receiver, Remote Control
Infrared Receiver, Remote Control
×1
Jumper wires (generic)
Jumper wires (generic)
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

Circuit Schematic

Note: There is no subcircuit or element for an IR receiver, so it is omitted from the schematic

Code

Untitled file

C/C++
#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;
    }
  }
}

Credits

Khobe Farmer
2 projects • 0 followers
Contact

Comments

Please log in or sign up to comment.