Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Interprets rotary switch position into 4 bit binary value for use with ZC-4 Zone controller
- // Requires 4 digital pins (4, 5, 6, and 7) and one analog pin (A1)
- // Use a voltage divider to change the value of the analog input. resistor values will change depending on the number of positions on the switch.
- // I provide resistance values for a common 11 position switch below.
- int profileNumber = 1;
- // Resistor Values for Voltage Divider
- // 1 kOhm divider resistor (between +5v and GND)
- // Variable Resistors for 11 Profiles: 47, 150, 330, 470, 1k, 1.5k, 2.2k, 3.6k, 4.7k, 15k, open
- // Connect 1k to +5v, variable resistor, and analog input
- // Connect Variable resistor to 1k and GND
- void setup() {
- pinMode(A1, INPUT); //Rotary Switch Input
- pinMode(4,OUTPUT); //Relay 1
- pinMode(5,OUTPUT); //Relay 2
- pinMode(6,OUTPUT); //Relay 3
- pinMode(7,OUTPUT); //Relay 4
- Serial.begin(9600);
- }
- void switchPosition (int AI) {
- Serial.print(AI);
- Serial.print("\n");
- int mappedValue = map(AI, 0, 1023, 0, 10); //Change last variable to number of switch positions - 1
- switch(mappedValue) {
- case 0:
- profileNumber = 1;
- digitalWrite(4,LOW);
- digitalWrite(5,LOW);
- digitalWrite(6,LOW);
- digitalWrite(7,LOW);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 1:
- profileNumber = 2;
- digitalWrite(4,HIGH);
- digitalWrite(5,LOW);
- digitalWrite(6,LOW);
- digitalWrite(7,LOW);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 2:
- profileNumber = 3;
- digitalWrite(4,LOW);
- digitalWrite(5,HIGH);
- digitalWrite(6,LOW);
- digitalWrite(7,LOW);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 3:
- profileNumber = 4;
- digitalWrite(4,HIGH);
- digitalWrite(5,HIGH);
- digitalWrite(6,LOW);
- digitalWrite(7,LOW);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 4:
- profileNumber = 5;
- digitalWrite(4,LOW);
- digitalWrite(5,LOW);
- digitalWrite(6,HIGH);
- digitalWrite(7,LOW);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 5:
- profileNumber = 6;
- digitalWrite(4,HIGH);
- digitalWrite(5,LOW);
- digitalWrite(6,HIGH);
- digitalWrite(7,LOW);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 6:
- profileNumber = 7;
- digitalWrite(4,LOW);
- digitalWrite(5,HIGH);
- digitalWrite(6,HIGH);
- digitalWrite(7,LOW);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 7:
- profileNumber = 8;
- digitalWrite(4,HIGH);
- digitalWrite(5,HIGH);
- digitalWrite(6,HIGH);
- digitalWrite(7,LOW);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 8:
- profileNumber = 9;
- digitalWrite(4,LOW);
- digitalWrite(5,LOW);
- digitalWrite(6,LOW);
- digitalWrite(7,HIGH);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 9:
- profileNumber = 10;
- digitalWrite(4,HIGH);
- digitalWrite(5,LOW);
- digitalWrite(6,LOW);
- digitalWrite(7,HIGH);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 10:
- profileNumber = 11;
- digitalWrite(4,LOW);
- digitalWrite(5,HIGH);
- digitalWrite(6,LOW);
- digitalWrite(7,HIGH);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 11:
- profileNumber = 12;
- digitalWrite(4,HIGH);
- digitalWrite(5,HIGH);
- digitalWrite(6,LOW);
- digitalWrite(7,HIGH);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 12:
- profileNumber = 13;
- digitalWrite(4,LOW);
- digitalWrite(5,LOW);
- digitalWrite(6,HIGH);
- digitalWrite(7,HIGH);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 13:
- profileNumber = 14;
- digitalWrite(4,HIGH);
- digitalWrite(5,LOW);
- digitalWrite(6,HIGH);
- digitalWrite(7,HIGH);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 14:
- profileNumber = 15;
- digitalWrite(4,LOW);
- digitalWrite(5,HIGH);
- digitalWrite(6,HIGH);
- digitalWrite(7,HIGH);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- case 15:
- profileNumber = 16;
- digitalWrite(4,HIGH);
- digitalWrite(5,HIGH);
- digitalWrite(6,HIGH);
- digitalWrite(7,HIGH);
- Serial.print("Profile ");
- Serial.print(profileNumber);
- Serial.print("\n");
- break;
- }
- }
- void loop() {
- int readSwitch = analogRead(A1);
- switchPosition(readSwitch);
- delay(100);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement