Advertisement
Alx09

Untitled

Nov 12th, 2021
897
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.58 KB | None | 0 0
  1. #define segA 2
  2. #define segB 3 //definim sgementele si tranzistori
  3. #define segC 4
  4. #define segD 5
  5. #define segE 6
  6. #define segF 7
  7. #define segG 8
  8. #define tranzUnit 12
  9. #define tranzZeci 11
  10. #define tranzSute 10
  11. #define tranzMii 9
  12. #define contact 0 // definim contactul
  13. #define buton  13// definim butonul
  14.  
  15.        
  16. void printCifra(int cifra){ // afisam cifra in functie de parametru cifra
  17.   switch(cifra){
  18.     case 0:
  19.      digitalWrite(segG, HIGH);    // afisam 0
  20.     for(int i = segA; i < segG; ++i)
  21.       digitalWrite(i, LOW);
  22.     break;
  23.     case 1:
  24.      digitalWrite(segA, HIGH);
  25.      for(int i = segB; i < segD; ++i) // afisam 1
  26.          digitalWrite(i, LOW);
  27.      for(int i = segD; i <= segG; ++i)
  28.          digitalWrite(i, HIGH);
  29.     break;
  30.     case 2:
  31.       for(int i = segA; i <= segG; ++i)
  32.         if( i == segC || i == segF)
  33.            digitalWrite(i, HIGH);
  34.         else
  35.          digitalWrite(i, LOW);
  36.         break;
  37.     case 3:
  38.         for(int i = segA; i <= segG; ++i)// afisam 3
  39.         if( i == segE || i == segF)
  40.            digitalWrite(i, HIGH);
  41.         else
  42.          digitalWrite(i, LOW);
  43.           break;
  44.     case 4:
  45.     for(int i = segA; i <= segG; ++i)
  46.         if( i == segA || i == segD || i == segE)
  47.            digitalWrite(i, HIGH);
  48.         else
  49.          digitalWrite(i, LOW);
  50.       break;
  51.     case 5:
  52.     for(int i = segA; i <= segG; ++i)
  53.         if( i == segB || i == segE)
  54.            digitalWrite(i, HIGH);
  55.         else
  56.          digitalWrite(i, LOW);
  57.           break;
  58.     case 6:
  59.     for(int i = segA; i <= segG; ++i)
  60.         if( i == segB)
  61.            digitalWrite(i, HIGH);
  62.         else
  63.          digitalWrite(i, LOW);
  64.           break;
  65.     case 7:
  66.       for(int i = segA; i < segD; ++i)
  67.          digitalWrite(i, LOW);
  68.      for(int i = segD; i <= segG; ++i)
  69.          digitalWrite(i, HIGH);
  70.     break;
  71.     case 8:
  72.     for(int i = segA; i <= segG; ++i)
  73.          digitalWrite(i, LOW);
  74.           break;
  75.     case 9:
  76.     for(int i = segA; i <= segG; ++i)/// afisam 9
  77.         if( i == segD || i == segE)
  78.            digitalWrite(i, HIGH);
  79.         else
  80.          digitalWrite(i, LOW);
  81.           break;
  82.   }
  83. }
  84.  
  85.   void setup()
  86. {
  87.   for(int i = segA; i <= tranzUnit; ++i){ // stetam toti pini pe iesire si ii dezactivam
  88.          pinMode(i, OUTPUT);
  89.          digitalWrite(i, HIGH);
  90.   }
  91.   pinMode(buton, INPUT);
  92.   pinMode(contact, INPUT);
  93. }
  94. int cifMii, cifSute, cifZeci, cifUnit; // variabile folosite la afisaj
  95. bool butonApasat, butonApasatAnterior; // pentru a verifica starea butonului
  96. void AfisDisplayCif(int tranz, int cif){
  97.      digitalWrite(tranz, LOW); // activam tranzistorului corespunzator pentru ordinul ciferei transmise
  98.      printCifra(cif);// afisam cifra
  99.      delay(5);// pauza de 5 ms
  100.      digitalWrite(tranz, HIGH);// dezactivam tranzistorul
  101.      delay(5);// pauza 5s
  102. }  
  103.  
  104.   void loop(){
  105.     butonApasatAnterior =  butonApasat;
  106.     butonApasat = digitalRead(buton);
  107.     if(butonApasat && !butonApasatAnterior){// verificamd aca butonul este apasat
  108.     if(digitalRead(contact) == LOW) // verificam daca contactul este descchis
  109.        ++cifUnit %= 10;// daca este incrementam cifra unitatilor cu 1 si apoi salvam restul imartiri la 10
  110.       else
  111.        ++cifZeci %= 10;// altfel incrementam zecilorunitatilor cu 1 si apoi salvam restul imartiri la 10
  112.    
  113.     }
  114.  
  115.       AfisDisplayCif(tranzMii, cifMii);// afisam cifra miilor
  116.       AfisDisplayCif(tranzSute, cifSute);// afisam cifra sutelor
  117.       AfisDisplayCif(tranzZeci, cifZeci);// afisam cifra zecilor
  118.       AfisDisplayCif(tranzUnit, cifUnit);// afisam cifra unitatilor
  119.    
  120. }
  121.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement