#define BLYNK_TEMPLATE_ID "TMPL6OXuULlqx"
#define BLYNK_TEMPLATE_NAME "DenGiaoThong"
#define BLYNK_AUTH_TOKEN "Mrt6ifeSNeZjdjD9i4wcCGdyMWe14EAR" //khai bao token de su dung blynk
#include <BlynkSimpleEsp32.h> // thu vien de ket noi voi blynk tren esp32
//BlynkTimer timer;
#define ledvang 26 // khai bao chan pin led vang
#define leddo 27 // khai bao chan pin led do
#define ledxanh 25 // khai bao chan pin led xanh
int statevang = 0; // dung de luu trang thai led vang
int statedo = 0; // dung de luu trang thai led do
int statexanh = 0; // dung de luu trang thai led xanh
//led 7 segment
int a = 16; // khai bao cac chan cua led 7 thang
int b = 17;
int c = 18;
int d = 19;
int e = 21;
int f = 22;
int g = 23;
int s1 = 32;
int s2 = 33;
int i, j, k;
int xanhTime = 10;
int vangTime = 5;
int doTime = 15;
char auth[] = "Mrt6ifeSNeZjdjD9i4wcCGdyMWe14EAR"; // ma xac thuc(token) de ket noi voi Blynk
char ssid[] = "Wokwi-GUEST"; // ten mang wifi ket noi den(ao vi day la mo phong)
char pass[] = "";//mat khau mang wifi(nay cung co san)
void setup() {
Serial.begin(9600);
// put your setup code here, to run once:
pinMode(ledvang, OUTPUT);
digitalWrite(ledvang, LOW);
pinMode(leddo, OUTPUT);
digitalWrite(leddo, LOW);
pinMode(ledxanh, OUTPUT);
digitalWrite(ledxanh, LOW);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// ket noi voi blynk
}
void loop() {
// put your main code here, to run repeatedly:
delay(10);
Blynk.run();
Serial.println(xanhTime);
Serial.println(vangTime);
Serial.println(doTime);
// chay blynk de lay trang thai moi nhat
// xanh 30s,vang 5s,do 20s
// digitalWrite(ledxanh, HIGH);// bat den xanh trong 30s
// in(2,9); // ham in() de chay tgian tren led7 thanh
// digitalWrite(ledxanh, LOW); // tat den xanh
// digitalWrite(ledvang, HIGH); // bat den vang trong 5s
// in(0,5); // ham in() de chay tgian tren led7 thanh
// digitalWrite(ledvang,LOW); // tat den vang
// digitalWrite(leddo, HIGH); // bat den do trong 19s
// in(1,9); // ham in() de chay tgian tren led 7 thanh
// digitalWrite(leddo, LOW); // tat den do
// is speeds up the simulation
//---
digitalWrite(ledxanh, HIGH);// bat den xanh trong 30s
in1(xanhTime); // ham in() de chay tgian tren led7 thanh
digitalWrite(ledxanh, LOW); // tat den xanh
digitalWrite(ledvang, HIGH); // bat den vang trong 5s
in1(vangTime); // ham in() de chay tgian tren led7 thanh
digitalWrite(ledvang,LOW);
digitalWrite(leddo, HIGH); // bat den vang trong 5s
in1(doTime); // ham in() de chay tgian tren led7 thanh
digitalWrite(leddo,LOW);
}
void chon_so(int so) { // ham hien thi so
if ( so == 0) {// hien thi so 0
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
}
else if ( so == 1) { // hien thi so 1
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
else if ( so == 2) { // hien thi so 2
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}
else if ( so == 3) { // hien thi so 3
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}
else if ( so == 4) { // hien thi so 4
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
else if ( so == 5) { //hien thi so 5
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
else if ( so == 6) { // hien thi so 6
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
else if ( so == 7) { // hien thi so 7
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
else if ( so == 8) { // hien thi so 8
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);;
}
else if ( so == 9) { // hien thi so 9
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
}
BLYNK_WRITE(V3) {
xanhTime = param.asInt();
}
BLYNK_WRITE(V4) {
vangTime = param.asInt();
}
BLYNK_WRITE(V2) {
doTime = param.asInt();
}
// void in(int time1,int time2) { // ham chay tgian
// for ( i = time1; i >= 0; i--) {
// for (j = time2; j >= 0; j--) {
// for (k = 0; k < 30; k++) {
// digitalWrite(s2, LOW);
// chon_so(i);
// digitalWrite(s1, HIGH);
// delay(30);
// digitalWrite(s1, LOW);
// chon_so(j);
// digitalWrite(s2, HIGH);
// delay(30);
// }
// }
// }
// }
void in1(int time3) { // ham chay tgian
for ( i = (time3 / 10); i >= 0; i--) {
if(i == (time3 / 10)){
for (j = (time3 % 10); j >= 0; j--) {
for (k = 0; k < 30; k++) {
digitalWrite(s2, LOW);
chon_so(i);
digitalWrite(s1, HIGH);
delay(30);
digitalWrite(s1, LOW);
chon_so(j);
digitalWrite(s2, HIGH);
delay(30);
}
}
} else {
for (j = 9; j >= 0; j--) {
for (k = 0; k < 30; k++) {
digitalWrite(s2, LOW);
chon_so(i);
digitalWrite(s1, HIGH);
delay(30);
digitalWrite(s1, LOW);
chon_so(j);
digitalWrite(s2, HIGH);
delay(30);
}
}
}
}
}