Arduino Den Giao Thong
Arduino Den Giao Thong
#define v1 9
#define d1 10
#define x2 11
#define v2 12
#define d2 13
#define t1 10
unsigned char LED_0F[] =
{// 0 1 2 3 4 5 6 7 8 9 A b C d E F -
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,
0xFF,0xbf
};
unsigned char LED[4];
void setup() {
pinMode(x1,OUTPUT);
pinMode(v1,OUTPUT);
pinMode(d1,OUTPUT);
pinMode(x2,OUTPUT);
pinMode(v2,OUTPUT);
pinMode(d2,OUTPUT);
pinMode(SCLK,OUTPUT);
pinMode(RCLK,OUTPUT);
pinMode(DIO,OUTPUT);
void loop() {
if(t == 0){
digitalWrite(x1,HIGH);
digitalWrite(v1,LOW);
digitalWrite(d1,LOW);
digitalWrite(x2,LOW);
digitalWrite(v2,LOW);
digitalWrite(d2,HIGH);
t_den1 = 15;
t_den2 = 18;
}
if(t == 15){
digitalWrite(v1,HIGH);
digitalWrite(x1,LOW);
digitalWrite(d1,LOW);
digitalWrite(x2,LOW);
digitalWrite(v2,LOW);
digitalWrite(d2,HIGH);
t_den1 = 3;
t_den2 = 3;
}
if(t == 18){
digitalWrite(d1,HIGH);
digitalWrite(v1,LOW);
digitalWrite(x1,LOW);
digitalWrite(d2,LOW);
digitalWrite(v2,LOW);
digitalWrite(x2,HIGH);
t_den1 = 18;
t_den2 = 15;
}
if(t == 33){
digitalWrite(d1,HIGH);
digitalWrite(v1,LOW);
digitalWrite(x1,LOW);
digitalWrite(d2,LOW);
digitalWrite(x2,LOW);
digitalWrite(v2,HIGH);
t_den1 = 3;
t_den2 = 3;
}
if(t == 36){
t = 0;
}
unsigned long currentMillis = millis(); // Khai báo biến cutrrentMillis = millis
// Nếu hàm millis() đếm được 1000 milli giây = 1s thì sẽ thay đổi trạng thái LED
if (currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis; //thời gian trước đó sẽ bằng thời gian hiện tại
t++;
t_den1--;
t_den2--;
}
hienthi(t_den1,t_den2);
}
void hienthi(int so1, int so2)//biến số hiển thị trên 2 led 7 đoạn
{
shiftOut(DIO, SCLK, MSBFIRST , LED_0F[(so1/10)%10]);
shiftOut(DIO, SCLK, MSBFIRST , 0x01);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
delay(t);
shiftOut(DIO, SCLK, MSBFIRST , LED_0F[so1%10]);
shiftOut(DIO, SCLK, MSBFIRST , 0x01<<1);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
delay(t);
shiftOut(DIO, SCLK, MSBFIRST , LED_0F[so2/10%10]);
shiftOut(DIO, SCLK, MSBFIRST , 0x01<<2);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
delay(t);
shiftOut(DIO, SCLK, MSBFIRST , LED_0F[so2%10]);
shiftOut(DIO, SCLK, MSBFIRST , 0x01<<3);
digitalWrite(RCLK,LOW);
digitalWrite(RCLK,HIGH);
delay(t);
}