Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define segA 2
- #define segB 3 //definim sgementele si tranzistori
- #define segC 4
- #define segD 5
- #define segE 6
- #define segF 7
- #define segG 8
- #define tranzUnit 12
- #define tranzZeci 11
- #define tranzSute 10
- #define tranzMii 9
- #define contact 0 // definim contactul
- #define buton 13// definim butonul
- void printCifra(int cifra){ // afisam cifra in functie de parametru cifra
- switch(cifra){
- case 0:
- digitalWrite(segG, HIGH); // afisam 0
- for(int i = segA; i < segG; ++i)
- digitalWrite(i, LOW);
- break;
- case 1:
- digitalWrite(segA, HIGH);
- for(int i = segB; i < segD; ++i) // afisam 1
- digitalWrite(i, LOW);
- for(int i = segD; i <= segG; ++i)
- digitalWrite(i, HIGH);
- break;
- case 2:
- for(int i = segA; i <= segG; ++i)
- if( i == segC || i == segF)
- digitalWrite(i, HIGH);
- else
- digitalWrite(i, LOW);
- break;
- case 3:
- for(int i = segA; i <= segG; ++i)// afisam 3
- if( i == segE || i == segF)
- digitalWrite(i, HIGH);
- else
- digitalWrite(i, LOW);
- break;
- case 4:
- for(int i = segA; i <= segG; ++i)
- if( i == segA || i == segD || i == segE)
- digitalWrite(i, HIGH);
- else
- digitalWrite(i, LOW);
- break;
- case 5:
- for(int i = segA; i <= segG; ++i)
- if( i == segB || i == segE)
- digitalWrite(i, HIGH);
- else
- digitalWrite(i, LOW);
- break;
- case 6:
- for(int i = segA; i <= segG; ++i)
- if( i == segB)
- digitalWrite(i, HIGH);
- else
- digitalWrite(i, LOW);
- break;
- case 7:
- for(int i = segA; i < segD; ++i)
- digitalWrite(i, LOW);
- for(int i = segD; i <= segG; ++i)
- digitalWrite(i, HIGH);
- break;
- case 8:
- for(int i = segA; i <= segG; ++i)
- digitalWrite(i, LOW);
- break;
- case 9:
- for(int i = segA; i <= segG; ++i)/// afisam 9
- if( i == segD || i == segE)
- digitalWrite(i, HIGH);
- else
- digitalWrite(i, LOW);
- break;
- }
- }
- void setup()
- {
- for(int i = segA; i <= tranzUnit; ++i){ // stetam toti pini pe iesire si ii dezactivam
- pinMode(i, OUTPUT);
- digitalWrite(i, HIGH);
- }
- pinMode(buton, INPUT);
- pinMode(contact, INPUT);
- }
- int cifMii, cifSute, cifZeci, cifUnit; // variabile folosite la afisaj
- bool butonApasat, butonApasatAnterior; // pentru a verifica starea butonului
- void AfisDisplayCif(int tranz, int cif){
- digitalWrite(tranz, LOW); // activam tranzistorului corespunzator pentru ordinul ciferei transmise
- printCifra(cif);// afisam cifra
- delay(5);// pauza de 5 ms
- digitalWrite(tranz, HIGH);// dezactivam tranzistorul
- delay(5);// pauza 5s
- }
- void loop(){
- butonApasatAnterior = butonApasat;
- butonApasat = digitalRead(buton);
- if(butonApasat && !butonApasatAnterior){// verificamd aca butonul este apasat
- if(digitalRead(contact) == LOW) // verificam daca contactul este descchis
- ++cifUnit %= 10;// daca este incrementam cifra unitatilor cu 1 si apoi salvam restul imartiri la 10
- else
- ++cifZeci %= 10;// altfel incrementam zecilorunitatilor cu 1 si apoi salvam restul imartiri la 10
- }
- AfisDisplayCif(tranzMii, cifMii);// afisam cifra miilor
- AfisDisplayCif(tranzSute, cifSute);// afisam cifra sutelor
- AfisDisplayCif(tranzZeci, cifZeci);// afisam cifra zecilor
- AfisDisplayCif(tranzUnit, cifUnit);// afisam cifra unitatilor
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement