//pin mapping: int solU=PIN_B6; int solD=PIN_B5; int solL=PIN_B4; int solR=PIN_B3; int solS=PIN_B2; int switchON=PIN_C7; int switchAUTO=PIN_C6; int btnU=PIN_C5; int btnD=PIN_C4; int btnL=PIN_C3; int btnR=PIN_C2; int btnS=PIN_C1; int potA=PIN_F2; int potB=PIN_F1; int pressuresens=PIN_F0; int ledU=PIN_A2; int ledD=PIN_A3; int ledL=PIN_A7; int ledR=PIN_A6; int ledS=PIN_A5; int ledP=PIN_A4; int xledA=PIN_A0;//either xledA or xledM may be on at the same time int xledM=PIN_A1; boolean automode=false; boolean on=false; void switchSol(int number, int state){ int led=-1; int sol=-1; switch(number){ case 0: //UP sol=solU; led=ledU; break; case 1: //DOWN sol=solD; led=ledD; break; case 2: //LEFT sol=solL; led=ledL; break; case 3: //RIGHT sol=solR; led=ledR; break; case 4: //SHAKER sol=solS; led=ledS; break; default: break; } if(on && led!=-1 && sol!=-1){ digitalWrite(led,state); digitalWrite(sol,state); } else { digitalWrite(led,LOW); digitalWrite(sol,LOW); } } void setOn(){ if(!on){ switchSol(0,LOW); switchSol(1,LOW); switchSol(2,LOW); switchSol(3,LOW); switchSol(4,LOW); } if(digitalRead(switchON)==HIGH){ delay(100); if(digitalRead(switchON)==HIGH){ on=true; } }else{ delay(100); if(digitalRead(switchON)==LOW){ on=false; digitalWrite(xledM,LOW); digitalWrite(xledA,LOW); } } } void setAuto(){ if(!on) return; if(digitalRead(pressuresens)==LOW){ delay(30); if(digitalRead(pressuresens)==LOW){ digitalWrite(ledP,HIGH); } }else{ delay(30); if(digitalRead(pressuresens)==HIGH){ digitalWrite(ledP,LOW); } } if(digitalRead(switchAUTO)==HIGH){ delay(30); if(digitalRead(switchAUTO)==HIGH){ automode=true; digitalWrite(xledM,LOW); digitalWrite(xledA,HIGH); } }else{ delay(30); if(digitalRead(switchAUTO)==LOW){ automode=false; digitalWrite(xledA,LOW); digitalWrite(xledM,HIGH); } } } void actButtons(){ if(!on) return; if(digitalRead(btnU)==LOW){ delay(30); if(digitalRead(btnU)==LOW){ switchSol(0,HIGH); } }else{ delay(30); if(digitalRead(btnU)==HIGH){ switchSol(0,LOW); } } if(digitalRead(btnD)==LOW){ delay(30); if(digitalRead(btnD)==LOW){ switchSol(1,HIGH); } }else{ delay(30); if(digitalRead(btnD)==HIGH){ switchSol(1,LOW); } } if(digitalRead(btnL)==LOW){ delay(30); if(digitalRead(btnL)==LOW){ switchSol(2,HIGH); } }else{ delay(30); if(digitalRead(btnL)==HIGH){ switchSol(2,LOW); } } if(digitalRead(btnR)==LOW){ delay(30); if(digitalRead(btnR)==LOW){ switchSol(3,HIGH); } }else{ delay(30); if(digitalRead(btnR)==HIGH){ switchSol(3,LOW); } } if(digitalRead(btnS)==LOW){ delay(30); if(digitalRead(btnS)==LOW){ switchSol(4,HIGH); } }else{ delay(30); if(digitalRead(btnS)==HIGH){ switchSol(4,LOW); } } } // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(ledU, OUTPUT); pinMode(ledD, OUTPUT); pinMode(ledL, OUTPUT); pinMode(ledR, OUTPUT); pinMode(ledS, OUTPUT); pinMode(ledP, OUTPUT); pinMode(xledA, OUTPUT); pinMode(xledM, OUTPUT); pinMode(solU, OUTPUT); pinMode(solD, OUTPUT); pinMode(solL, OUTPUT); pinMode(solR, OUTPUT); pinMode(solS, OUTPUT); pinMode(ledP, OUTPUT); pinMode(xledA, OUTPUT); pinMode(xledM, OUTPUT); pinMode(btnU, INPUT); pinMode(btnD, INPUT); pinMode(btnL, INPUT); pinMode(btnR, INPUT); pinMode(btnS, INPUT); pinMode(pressuresens, INPUT); pinMode(switchON, INPUT); pinMode(switchAUTO, INPUT); digitalWrite(btnU, HIGH); digitalWrite(btnD, HIGH); digitalWrite(btnL, HIGH); digitalWrite(btnR, HIGH); digitalWrite(btnS, HIGH); digitalWrite(switchON, HIGH); digitalWrite(switchAUTO, HIGH); digitalWrite(pressuresens, HIGH); pinMode(potA, INPUT); pinMode(potB, INPUT); } // the loop routine runs over and over again forever: void loop() { setOn(); setAuto(); if(automode){ //put in auto press state machine here }else{ actButtons(); } }