// C++ code
unsigned long currentMillis = 0;
unsigned long defaultM = 0;
const long defaultInterval = 200;
int knightRider[] = {0,1,2,3,4,5,6,5,4,3,2,1};
const long knightRiderInterval = 50;
int knightRiderL = 0;
unsigned long knightRiderM = 0;
int leftTurn[] = {3,2,1,0};
const long leftTurnInterval = 1000;
int leftTurnL = 3;
unsigned long leftTurnM = 0;
int rightTurn[] = {3,4,5,6};
const long rightInterval = 1000;
int rightTurnL = 3;
unsigned long rightTurnM = 0;
void setup()
{
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
}
void Pin(byte p0, byte p1, byte p2){
if(p0==1){
digitalWrite(0, HIGH);
}else{
digitalWrite(0, LOW);
}
if(p1==1){
digitalWrite(1, HIGH);
}else{
digitalWrite(1, LOW);
}
if(p2==1){
digitalWrite(2, HIGH);
}else{
digitalWrite(2, LOW);
}
}
void PinSet(int setId){
switch(setId){
case 0:
Pin(0,0,0);
break;
case 1:
Pin(0,0,1);
break;
case 2:
Pin(0,1,0);
break;
case 3:
Pin(0,1,1);
break;
case 4:
Pin(1,0,0);
break;
case 5:
Pin(1,0,1);
break;
case 6:
Pin(1,1,0);
break;
case 7:
Pin(1,1,1);
break;
}
}
void loop()
{
for(int i = 0; i<12;i++){
delay(50);
PinSet(knightRider[knightRiderL+=1]);
if(knightRiderL >= 11) knightRiderL = -1;
}
}