#include <dummy.h>
#include <Wire.h>
/*
This program is to control a heater fan with a 4 speed selector switch and a relay for the full speed setting.
*/
int Spd_0_in=4; //pin for lowest speed selection
int Spd_2_in=5; //pin for 2nd speed selection
int Spd_3_in=12; //pin for 3rd speed selection
int Spd_4_in=13; //pin for highest speed selection
int Spd_5_in=14;
int PWM_out=32; // PWM out for fan control
int Full_spd=33; // relay output for full speed fan
int Spd_val;
const int Spd_val_3=225; //these are the values to be written to the pwm to generate speeds
const int Spd_val_2=180;
//const int Spd_val_0=125;
const int Spd_val_0=32;
const int Spd_val_4=250;
void setup() {
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(12,INPUT);
pinMode(13,INPUT);
pinMode(14,INPUT);
pinMode (33,OUTPUT);
// pinMode (33,OUTPUT);
ledcAttachChannel(32,5000,8,0);
//ledcAttachPin(33,0);
// put your setup code here, to run once:
Wire.begin();
Serial.begin(115200);
// Serial.println("exiting setup");
}
void loop(){
// put your main code here, to run repeatedly;
bool High_spd_selected=digitalRead(Spd_5_in);
bool spd_4_selected=digitalRead(Spd_4_in);
bool spd_3_selected=digitalRead(Spd_3_in);
bool spd_2_selected=digitalRead(Spd_2_in);
bool spd_1_selected=digitalRead(Spd_0_in);
Spd_val=0;
//Serial.println("1,2,3,4,5");
//Serial.println(digitalRead(Spd_0_in));
//Serial.println(digitalRead(Spd_2_in));
//Serial.println(digitalRead(Spd_3_in));
//Serial.println(digitalRead(Spd_4_in));
//Serial.println(digitalRead(Spd_5_in));
if (High_spd_selected){
digitalWrite(Full_spd,HIGH);
// Serial.println("High spd_selected");
// Serial.println(High_spd_selected);
//Serial.println(spd_4_selected);
}
else {
digitalWrite(Full_spd,LOW);
}
if (spd_4_selected and !(High_spd_selected)){
Spd_val = Spd_val_4;
// Serial.println("speed 4");
}
if (spd_3_selected and !((spd_4_selected)or (High_spd_selected))){
Spd_val = Spd_val_3;
// Serial.println("speed 3");
}
if (spd_2_selected and !((spd_3_selected)or (spd_4_selected)or(High_spd_selected))){
Spd_val = Spd_val_2;
//Serial.println("Speed 2");
}
if (spd_1_selected and !((spd_2_selected)or(spd_3_selected)or(spd_4_selected)or (High_spd_selected))){
Spd_val = Spd_val_0;
//Serial.println("Speed 1");
}
ledcWriteChannel(0,Spd_val);
//analogWrite (PWM_out, Spd_val);
Serial.print("Spd_val=");
Serial.println(Spd_val);
//Serial.println(High_spd_selected);
Serial.print(spd_1_selected);Serial.print(spd_2_selected);Serial.print(spd_3_selected);Serial.println(spd_4_selected);
}