#define sw1 4
#define sw2 3 //กำหนดขาสวิตซ์
#define sw3 2
boolean flag = 0;
byte state =1 ;
byte state2 =1 ;
unsigned long pre = 0;
char key;
int x ;
void setup() {
Serial.begin(9600);
DDRB = 0b11111111;
pinMode(sw1, INPUT_PULLUP);
pinMode(sw2, INPUT_PULLUP);
pinMode(sw3, INPUT_PULLUP);
Serial.println("---------------------------------------------------------------");
}
void loop() {
unsigned long cur = millis();
if(cur - pre > 500){ //ความเร็วการหน่วงเวลา คล้ายๆ delay
pre = cur;
flag = 1;
}
if(digitalRead(sw1)==0){ //ถ้ากด 1 จะเข้าเงื่อนไขของเลข 1
x = 1;
}
else if(digitalRead(sw2)==0){ //ถ้ากด 2 จะเข้าเงื่อนไขของเลข 2
x = 2;
}
else if(digitalRead(sw3)==0){ //ถ้ากด 3 จะเข้าเื่อนไขของเลข 3
x = 3;
}
Serial.println(x);
if(x == 1){
if(flag ==1){
flag = 0;
switch(state){
case 1:
PORTB = 0b00001;
state = 2;
break;
case 2:
PORTB = 0b00010;
state = 3;
break;
case 3:
PORTB = 0b00100;
state = 4;
break;
case 4:
PORTB = 0b01000;
state =5;
break;
case 5:
PORTB = 0b10000;
state = 1;
break;
default:
state = 1;
}
}
}
else if(x == 2){
if(flag ==1){
flag = 0;
switch(state){
case 1:
PORTB = 0b10000;
state = 2;
break;
case 2:
PORTB = 0b01000;
state = 3;
break;
case 3:
PORTB = 0b00100;
state = 4;
break;
case 4:
PORTB = 0b00010;
state =5;
break;
case 5:
PORTB = 0b10001;
state = 1;
break;
default:
state = 1 ;
}
}
}
else if(x == 3){
if(flag ==1){
flag = 0;
switch(state){
case 1:
PORTB = 0b00000;
state = 2;
break;
case 2:
PORTB = 0b11111;
state = 1;
break;
default:
state = 1;
}
}
}
}