Advertisement
Guest User

Multiposition Switch

a guest
Apr 19th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Interprets rotary switch position into 4 bit binary value for use with ZC-4 Zone controller
  2. // Requires 4 digital pins (4, 5, 6, and 7) and one analog pin (A1)
  3. // 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.
  4. // I provide resistance values for a common 11 position switch below.
  5.  
  6. int profileNumber = 1;
  7.  
  8. // Resistor Values for Voltage Divider
  9. // 1 kOhm divider resistor (between +5v and GND)
  10. // Variable Resistors for 11 Profiles: 47, 150, 330, 470, 1k, 1.5k, 2.2k, 3.6k, 4.7k, 15k, open
  11. // Connect 1k to +5v, variable resistor, and analog input
  12. // Connect Variable resistor to 1k and GND
  13.  
  14. void setup() {
  15.   pinMode(A1, INPUT); //Rotary Switch Input
  16.   pinMode(4,OUTPUT); //Relay 1
  17.   pinMode(5,OUTPUT); //Relay 2
  18.   pinMode(6,OUTPUT); //Relay 3
  19.   pinMode(7,OUTPUT); //Relay 4
  20.   Serial.begin(9600);
  21. }
  22.  
  23. void switchPosition (int AI) {
  24.   Serial.print(AI);
  25.   Serial.print("\n");
  26.   int mappedValue = map(AI, 0, 1023, 0, 10); //Change last variable to number of switch positions - 1
  27.   switch(mappedValue) {
  28.     case 0:
  29.       profileNumber = 1;
  30.       digitalWrite(4,LOW);
  31.       digitalWrite(5,LOW);
  32.       digitalWrite(6,LOW);
  33.       digitalWrite(7,LOW);
  34.       Serial.print("Profile ");
  35.       Serial.print(profileNumber);
  36.       Serial.print("\n");
  37.       break;
  38.     case 1:
  39.       profileNumber = 2;
  40.       digitalWrite(4,HIGH);
  41.       digitalWrite(5,LOW);
  42.       digitalWrite(6,LOW);
  43.       digitalWrite(7,LOW);
  44.       Serial.print("Profile ");
  45.       Serial.print(profileNumber);
  46.       Serial.print("\n");
  47.       break;
  48.     case 2:
  49.       profileNumber = 3;
  50.       digitalWrite(4,LOW);
  51.       digitalWrite(5,HIGH);
  52.       digitalWrite(6,LOW);
  53.       digitalWrite(7,LOW);
  54.       Serial.print("Profile ");
  55.       Serial.print(profileNumber);
  56.       Serial.print("\n");
  57.       break;
  58.     case 3:
  59.       profileNumber = 4;
  60.       digitalWrite(4,HIGH);
  61.       digitalWrite(5,HIGH);
  62.       digitalWrite(6,LOW);
  63.       digitalWrite(7,LOW);
  64.       Serial.print("Profile ");
  65.       Serial.print(profileNumber);
  66.       Serial.print("\n");
  67.       break;
  68.     case 4:
  69.       profileNumber = 5;
  70.       digitalWrite(4,LOW);
  71.       digitalWrite(5,LOW);
  72.       digitalWrite(6,HIGH);
  73.       digitalWrite(7,LOW);
  74.       Serial.print("Profile ");
  75.       Serial.print(profileNumber);
  76.       Serial.print("\n");
  77.       break;
  78.     case 5:
  79.       profileNumber = 6;
  80.       digitalWrite(4,HIGH);
  81.       digitalWrite(5,LOW);
  82.       digitalWrite(6,HIGH);
  83.       digitalWrite(7,LOW);
  84.       Serial.print("Profile ");
  85.       Serial.print(profileNumber);
  86.       Serial.print("\n");
  87.       break;
  88.     case 6:
  89.       profileNumber = 7;
  90.       digitalWrite(4,LOW);
  91.       digitalWrite(5,HIGH);
  92.       digitalWrite(6,HIGH);
  93.       digitalWrite(7,LOW);
  94.       Serial.print("Profile ");
  95.       Serial.print(profileNumber);
  96.       Serial.print("\n");
  97.       break;
  98.     case 7:
  99.       profileNumber = 8;
  100.       digitalWrite(4,HIGH);
  101.       digitalWrite(5,HIGH);
  102.       digitalWrite(6,HIGH);
  103.       digitalWrite(7,LOW);
  104.       Serial.print("Profile ");
  105.       Serial.print(profileNumber);
  106.       Serial.print("\n");
  107.       break;
  108.     case 8:
  109.       profileNumber = 9;
  110.       digitalWrite(4,LOW);
  111.       digitalWrite(5,LOW);
  112.       digitalWrite(6,LOW);
  113.       digitalWrite(7,HIGH);
  114.       Serial.print("Profile ");
  115.       Serial.print(profileNumber);
  116.       Serial.print("\n");
  117.       break;
  118.     case 9:
  119.       profileNumber = 10;
  120.       digitalWrite(4,HIGH);
  121.       digitalWrite(5,LOW);
  122.       digitalWrite(6,LOW);
  123.       digitalWrite(7,HIGH);
  124.       Serial.print("Profile ");
  125.       Serial.print(profileNumber);
  126.       Serial.print("\n");
  127.       break;
  128.     case 10:
  129.       profileNumber = 11;
  130.       digitalWrite(4,LOW);
  131.       digitalWrite(5,HIGH);
  132.       digitalWrite(6,LOW);
  133.       digitalWrite(7,HIGH);
  134.       Serial.print("Profile ");
  135.       Serial.print(profileNumber);
  136.       Serial.print("\n");
  137.       break;
  138.     case 11:
  139.       profileNumber = 12;
  140.       digitalWrite(4,HIGH);
  141.       digitalWrite(5,HIGH);
  142.       digitalWrite(6,LOW);
  143.       digitalWrite(7,HIGH);
  144.       Serial.print("Profile ");
  145.       Serial.print(profileNumber);
  146.       Serial.print("\n");
  147.       break;
  148.     case 12:
  149.       profileNumber = 13;
  150.       digitalWrite(4,LOW);
  151.       digitalWrite(5,LOW);
  152.       digitalWrite(6,HIGH);
  153.       digitalWrite(7,HIGH);
  154.       Serial.print("Profile ");
  155.       Serial.print(profileNumber);
  156.       Serial.print("\n");
  157.       break;
  158.     case 13:
  159.       profileNumber = 14;
  160.       digitalWrite(4,HIGH);
  161.       digitalWrite(5,LOW);
  162.       digitalWrite(6,HIGH);
  163.       digitalWrite(7,HIGH);
  164.       Serial.print("Profile ");
  165.       Serial.print(profileNumber);
  166.       Serial.print("\n");
  167.       break;
  168.     case 14:
  169.       profileNumber = 15;
  170.       digitalWrite(4,LOW);
  171.       digitalWrite(5,HIGH);
  172.       digitalWrite(6,HIGH);
  173.       digitalWrite(7,HIGH);
  174.       Serial.print("Profile ");
  175.       Serial.print(profileNumber);
  176.       Serial.print("\n");
  177.       break;
  178.     case 15:
  179.       profileNumber = 16;
  180.       digitalWrite(4,HIGH);
  181.       digitalWrite(5,HIGH);
  182.       digitalWrite(6,HIGH);
  183.       digitalWrite(7,HIGH);
  184.       Serial.print("Profile ");
  185.       Serial.print(profileNumber);
  186.       Serial.print("\n");
  187.       break;
  188.   }
  189. }
  190.  
  191. void loop() {
  192.   int readSwitch = analogRead(A1);
  193.   switchPosition(readSwitch);
  194.   delay(100);
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement