Advertisement
Guest User

Untitled

a guest
Jun 6th, 2014
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.52 KB | None | 0 0
  1. //pin mapping:
  2.  
  3. int solU=PIN_B6;
  4. int solD=PIN_B5;
  5. int solL=PIN_B4;
  6. int solR=PIN_B3;
  7. int solS=PIN_B2;
  8.  
  9. int switchON=PIN_C7;
  10. int switchAUTO=PIN_C6;
  11. int btnU=PIN_C5;
  12. int btnD=PIN_C4;
  13. int btnL=PIN_C3;
  14. int btnR=PIN_C2;
  15. int btnS=PIN_C1;
  16.  
  17. int potA=PIN_F2;
  18. int potB=PIN_F1;
  19.  
  20. int pressuresens=PIN_F0;
  21.  
  22.  
  23. int ledU=PIN_A2;
  24. int ledD=PIN_A3;
  25. int ledL=PIN_A7;
  26. int ledR=PIN_A6;
  27. int ledS=PIN_A5;
  28. int ledP=PIN_A4;
  29.  
  30. int xledA=PIN_A0;//either xledA or xledM may be on at the same time
  31. int xledM=PIN_A1;
  32.  
  33. boolean automode=false;
  34. boolean on=false;
  35.  
  36. void switchSol(int number, int state){
  37.  int led=-1;
  38.  int sol=-1;
  39.  switch(number){
  40.   case 0: //UP
  41.     sol=solU;
  42.     led=ledU;
  43.     break;
  44.   case 1: //DOWN
  45.     sol=solD;
  46.     led=ledD;
  47.     break;
  48.   case 2: //LEFT
  49.     sol=solL;
  50.     led=ledL;
  51.     break;
  52.   case 3: //RIGHT
  53.     sol=solR;
  54.     led=ledR;
  55.     break;
  56.   case 4: //SHAKER
  57.     sol=solS;
  58.     led=ledS;
  59.     break;
  60.   default:
  61.     break;
  62.  }
  63.  if(on && led!=-1 && sol!=-1){
  64.   digitalWrite(led,state);
  65.   digitalWrite(sol,state);
  66.  } else {
  67.   digitalWrite(led,LOW);
  68.   digitalWrite(sol,LOW);
  69.  }
  70.  
  71. }
  72.  
  73. void setOn(){
  74.  if(!on){
  75.   switchSol(0,LOW);
  76.   switchSol(1,LOW);
  77.   switchSol(2,LOW);
  78.   switchSol(3,LOW);
  79.   switchSol(4,LOW);  
  80.  }
  81.  if(digitalRead(switchON)==HIGH){
  82.   delay(100);
  83.   if(digitalRead(switchON)==HIGH){
  84.    on=true;
  85.   }
  86.  }else{
  87.    delay(100);
  88.   if(digitalRead(switchON)==LOW){
  89.    on=false;
  90.    digitalWrite(xledM,LOW);
  91.    digitalWrite(xledA,LOW);
  92.    
  93.   }
  94.  }
  95.  
  96. }
  97.  
  98. void setAuto(){
  99.  if(!on) return;
  100.   if(digitalRead(pressuresens)==LOW){
  101.     delay(30);
  102.     if(digitalRead(pressuresens)==LOW){
  103.       digitalWrite(ledP,HIGH);
  104.     }  
  105.   }else{
  106.       delay(30);
  107.     if(digitalRead(pressuresens)==HIGH){
  108.       digitalWrite(ledP,LOW);
  109.     }  
  110.  
  111.   }
  112.  if(digitalRead(switchAUTO)==HIGH){
  113.   delay(30);
  114.   if(digitalRead(switchAUTO)==HIGH){
  115.    automode=true;
  116.    digitalWrite(xledM,LOW);
  117.    digitalWrite(xledA,HIGH);
  118.   }
  119.  }else{
  120.    delay(30);
  121.   if(digitalRead(switchAUTO)==LOW){
  122.    automode=false;
  123.    digitalWrite(xledA,LOW);
  124.    digitalWrite(xledM,HIGH);
  125.   }
  126.  }
  127. }
  128.  
  129. void actButtons(){
  130.  if(!on) return;
  131.  if(digitalRead(btnU)==LOW){
  132.   delay(30);
  133.   if(digitalRead(btnU)==LOW){
  134.     switchSol(0,HIGH);
  135.   }
  136.  }else{
  137.     delay(30);
  138.   if(digitalRead(btnU)==HIGH){
  139.     switchSol(0,LOW);
  140.   }
  141.  }  
  142.  if(digitalRead(btnD)==LOW){
  143.   delay(30);
  144.   if(digitalRead(btnD)==LOW){
  145.     switchSol(1,HIGH);
  146.   }
  147.  }else{
  148.     delay(30);
  149.   if(digitalRead(btnD)==HIGH){
  150.     switchSol(1,LOW);
  151.   }
  152.  }
  153.  if(digitalRead(btnL)==LOW){
  154.   delay(30);
  155.   if(digitalRead(btnL)==LOW){
  156.     switchSol(2,HIGH);
  157.   }
  158.  }else{
  159.     delay(30);
  160.   if(digitalRead(btnL)==HIGH){
  161.     switchSol(2,LOW);
  162.   }
  163.  }  
  164.   if(digitalRead(btnR)==LOW){
  165.   delay(30);
  166.   if(digitalRead(btnR)==LOW){
  167.     switchSol(3,HIGH);
  168.   }
  169.  }else{
  170.     delay(30);
  171.   if(digitalRead(btnR)==HIGH){
  172.     switchSol(3,LOW);
  173.   }
  174.  }  
  175.  if(digitalRead(btnS)==LOW){
  176.   delay(30);
  177.   if(digitalRead(btnS)==LOW){
  178.     switchSol(4,HIGH);
  179.   }
  180.  }else{
  181.     delay(30);
  182.   if(digitalRead(btnS)==HIGH){
  183.     switchSol(4,LOW);
  184.   }
  185.  }  
  186.  
  187.  
  188. }
  189.  
  190. // the setup routine runs once when you press reset:
  191. void setup() {                
  192.   // initialize the digital pin as an output.
  193.   pinMode(ledU, OUTPUT);    
  194.   pinMode(ledD, OUTPUT);    
  195.   pinMode(ledL, OUTPUT);    
  196.   pinMode(ledR, OUTPUT);    
  197.   pinMode(ledS, OUTPUT);    
  198.   pinMode(ledP, OUTPUT);    
  199.   pinMode(xledA, OUTPUT);    
  200.   pinMode(xledM, OUTPUT);    
  201.   pinMode(solU, OUTPUT);    
  202.   pinMode(solD, OUTPUT);    
  203.   pinMode(solL, OUTPUT);    
  204.   pinMode(solR, OUTPUT);    
  205.   pinMode(solS, OUTPUT);    
  206.  
  207.   pinMode(ledP, OUTPUT);    
  208.   pinMode(xledA, OUTPUT);    
  209.   pinMode(xledM, OUTPUT);    
  210.  
  211.   pinMode(btnU, INPUT);    
  212.   pinMode(btnD, INPUT);    
  213.   pinMode(btnL, INPUT);    
  214.   pinMode(btnR, INPUT);    
  215.   pinMode(btnS, INPUT);    
  216.   pinMode(pressuresens, INPUT);    
  217.   pinMode(switchON, INPUT);    
  218.   pinMode(switchAUTO, INPUT);    
  219.   digitalWrite(btnU, HIGH);    
  220.   digitalWrite(btnD, HIGH);    
  221.   digitalWrite(btnL, HIGH);    
  222.   digitalWrite(btnR, HIGH);    
  223.   digitalWrite(btnS, HIGH);    
  224.   digitalWrite(switchON, HIGH);    
  225.   digitalWrite(switchAUTO, HIGH);    
  226.   digitalWrite(pressuresens, HIGH);    
  227.  
  228.   pinMode(potA, INPUT);    
  229.   pinMode(potB, INPUT);    
  230.  
  231. }
  232.  
  233.  
  234.  
  235. // the loop routine runs over and over again forever:
  236. void loop() {
  237.   setOn();
  238.   setAuto();
  239.   if(automode){
  240.    //put in auto press state machine here
  241.   }else{
  242.     actButtons();
  243.   }
  244. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement