//--- MACRO DEFINITION TRUE:FALSE
// 1 : 0
#define led1(x) digitalWrite(13, x? HIGH:LOW)
#define led2(x) digitalWrite(12, x? HIGH:LOW)
#define led3(x) digitalWrite(11, x? HIGH:LOW)
#define led4(x) digitalWrite(10, x? HIGH:LOW)
#define pb1 digitalRead(A1)
#define pb2 digitalRead(A2)
#define pb3 digitalRead(A3)
void setup()
{ for(uint8_t i=10;i<=13;i++)
pinMode(i,OUTPUT);
pinMode(A1,INPUT_PULLUP);
pinMode(A2,INPUT_PULLUP);
pinMode(A3,INPUT_PULLUP);
Serial.begin(9600);
}
void LEDs(uint8_t no)
{ led1(no & 1<<0);
led2(no & 1<<1);
led3(no & 1<<2);
led4(no & 1<<3);
}
uint8_t getPB()
{ uint8_t x=0;
if(pb1==0) x |= 1<<0; //-----> x=1
if(pb2==0) x |= 1<<1; //-----> x=2
if(pb3==0) x |= 1<<2; //-----> x=4
return x;
}
uint8_t a[10] = {1,3,7,15,14,12,8,0};
uint8_t b[10] = {8,12,14,15,7,3,1,0};
uint16_t masa=100;
void KananKiri()
{ //--- CASCADED LOOP
for(uint8_t j=0;j<2;j++)
{
for(uint8_t i=0;i<8;i++)
{ LEDs(a[i]);
delay(masa);
}
for(uint8_t i=0;i<8;i++)
{ LEDs(b[i]);
delay(masa);
}
}
}
uint8_t cnt=0;
void loop()
{
uint8_t pbStatus = getPB();
if(pbStatus==1)
{ cnt++;
if(cnt==1) led1(1);
if(cnt==2) led2(1);
if(cnt==3) led3(1);
if(cnt==4) led4(1);
if(cnt==5)
{ cnt=0;
for(uint8_t i=10;i<=13;i++)
digitalWrite(i,LOW);
}
Serial.println(cnt);
delay(300);
}
}
//--- DIGITAL OUTPUT
//--- MACRO DEFINITION
//--- MULTIPLE MACRO DEFINITION
//--- BITWISE OPERATION
// 0000 0001 --> 1
// 128 64 32 16 8421
// 0000 0000 --> 8
// 0000 1000
// 0000 0100 --> 1 << 2
// 0000 0010 --> 1 << 1
// 0000 1000 --> 1 << 3
// 8421
// 0000 0100 --> 4 << 2
// 0001 0000 --> 4 << 2
// 0000 0100 --> 4 >> 1
// 0000 0010 --> 4 >> 1
// x=0
// (x & 1) = 0 & 1 ==> 0
// x=1
// (x & 1) = 1 & 1 ==> 1
//////////////// DIGITAL INPUT
//BOUNCING = 2 metal contact produces multiple signal
//LATCHING = 1 signal produced
//POSITIVE EDGE || NEGATIVE EDGE