Alx09

test

Nov 12th, 2021
874
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.91 KB | None | 0 0
  1. //Subiect 1
  2. //Rarinca Camelia EE 2/2
  3. int cifre[10][7] = {
  4.    {1,1,1,1,1,1,0}, //0
  5.    {0,1,1,0,0,0,0}, //1
  6.    {1,1,0,1,1,0,1}, //2
  7.    {1,1,1,1,0,0,1}, //3
  8.    {0,1,1,0,0,1,1}, //4
  9.    {1,0,1,1,0,1,1}, //5
  10.    {1,0,1,1,1,1,1}, //6
  11.    {1,1,1,0,0,0,0}, //7
  12.    {1,1,1,1,1,1,1}, //8
  13.    {1,1,1,1,0,1,1}  //9  
  14. };
  15.  
  16. int pin[7]={2,3,4,5,6,7,8};//a,b,c,d,e,f,g
  17. int enable[4] = {9, 10, 11, 12};//tranzistorii
  18.  
  19. void setup() {
  20.   //initializam pinii folositi
  21.   for(int i=0;i<7;i++){
  22.     pinMode(pin[i], OUTPUT);
  23.   }
  24.   for(int i=0;i<4;i++){
  25.     pinMode(enable[i], OUTPUT);    
  26.     digitalWrite(enable[i], HIGH);
  27.   }
  28.   //resetam pinii
  29.   clear();
  30.   //initializam pinii cu butonul si sliderul
  31.   pinMode(0, INPUT);
  32.   pinMode(13, INPUT);
  33.  
  34. }
  35. int nr=0;
  36. int bt, prev;
  37. void loop() {
  38.   prev=bt;
  39.   bt=digitalRead(13);//citim butonul
  40.   //detectam un front crescator pe pinul cu buton
  41.   if(bt==1 && prev ==0){
  42.     if(digitalRead(0))//daca sliderul este inchis
  43.       nr+=10;//numaram din 10 in 10
  44.     else//daca sliderul e deschis
  45.       nr++;//numaram din 1 in 1
  46.     if(nr>=10000)
  47.       nr=0;
  48.   }
  49.   //afisam numarul pe display
  50.   afisare(nr);
  51. }
  52. //functie care afiseaza nu numar
  53. void afisare(int nr){
  54.   cifra(3, nr%10);//afisam unitatile
  55.   nr=nr/10;//eliminam unitatile
  56.   cifra(2, nr%10);//afisam zecile
  57.   nr=nr/10;//eliminam zecile
  58.   cifra(1, nr%10);//afisam sutele
  59.   nr=nr/10;//eliminam sutele
  60.   cifra(0, nr%10);//afisam miile
  61. }
  62. //functie care reseteaza pinii
  63. void clear(){
  64.   for(int i=0;i<7;i++){
  65.     digitalWrite(pin[i], HIGH);        
  66.   }
  67. }
  68. //functie care afiseaza o cifra(nr) pe display-ul n
  69. void cifra(int n, int nr){
  70.   //resetam pinii
  71.   clear();
  72.   //activam tranzistorul
  73.   digitalWrite(enable[n], LOW);
  74.   //setam pinii conform matricii
  75.   for(int i=0;i<7;i++){
  76.      digitalWrite(pin[i], !cifre[nr][i]);        
  77.   }
  78.   delay(1);
  79.   //dezactivam tranzistorul
  80.   digitalWrite(enable[n], HIGH);
  81.   delay(1);
  82. }
Advertisement
Add Comment
Please, Sign In to add comment