Facebook
From Lukac, 6 Months ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 169
  1. // DIGITALNA STOPERICA (max 60 sekundi)
  2. int milisekund = 0;
  3. int stotinke = 0;
  4. int desetinke = 0;
  5. int sekunde = 0;
  6. int sekunde10 = 0;
  7. int minute = 0;
  8. int minute10 = 0;
  9. unsigned long ispisTime = 0; //pomocna promenljiva za periodu odabiranja ispisa cifre na dipleju
  10. int brojDispleja = 4; //broj displeja koji se trenutno osvezava (ispis krece od DIS4)
  11. const int matricaCifara[10][7] = { { 1,1,1,1,1,1,0 }, // cifra 0
  12.  { 0,1,1,0,0,0,0 }, // cifra 1
  13.  { 1,1,0,1,1,0,1 }, // cifra 2
  14.  { 1,1,1,1,0,0,1 }, // cifra 3
  15.  { 0,1,1,0,0,1,1 }, // cifra 4
  16.  { 1,0,1,1,0,1,1 }, // cifra 5
  17.  { 1,0,1,1,1,1,1 }, // cifra 6
  18.  { 1,1,1,0,0,0,0 }, // cifra 7
  19.  { 1,1,1,1,1,1,1 }, // cifra 8
  20.  { 1,1,1,0,0,1,1 }}; // cifra 9
  21. const int matricaDispleja[4][4] = { { 0,1,1,1 }, // prozivka DIS4
  22.  { 1,0,1, 1}, // prozivka DIS3
  23.  { 1,1,0,1 }, // prozivka DIS2
  24.  { 1,1,1,0 }}; // prozivka DIS1
  25. void setup()
  26. {
  27. pinMode(2, OUTPUT); //a segment
  28. pinMode(3, OUTPUT); //b segment
  29. pinMode(4, OUTPUT); //c segment
  30. pinMode(5, OUTPUT); //d segment
  31. pinMode(6, OUTPUT); //e segment
  32. pinMode(7, OUTPUT); //f segment
  33. pinMode(8, OUTPUT); //g segment
  34. pinMode(9, OUTPUT); //dp segment
  35. pinMode(10, OUTPUT); //DIS4
  36. pinMode(11, OUTPUT); //DIS3
  37. pinMode(12, OUTPUT); //DIS2
  38. pinMode(13, OUTPUT); //DIS1
  39. }
  40. void loop()
  41. {
  42. if ((abs(micros()-ispisTime)) >= 1000) //da li je istekla perioda osvezavanja od 1ms (1 kHz)
  43. {
  44. ispisTime = micros();
  45. milisekund++;
  46. if(milisekund == 10)
  47. {
  48.  stotinke++;
  49.  milisekund = 0;
  50. }
  51. if (stotinke == 10)
  52. {
  53. desetinke++;
  54. stotinke = 0;
  55. }
  56. if(desetinke == 10)
  57. {
  58. sekunde++;
  59. desetinke = 0;
  60. }
  61. if(sekunde == 10)
  62. {
  63. sekunde10++;
  64. sekunde = 0;
  65. }
  66. if(sekunde10 == 6)
  67. {
  68.   minute++;
  69.   sekunde10 = 0;
  70. }
  71. if(minute == 10)
  72. {
  73.   minute10++;
  74.   minute = 0;
  75. }
  76. if(minute10 == 6)
  77. {
  78.   minute10 = 0;
  79. }
  80. switch(brojDispleja) //koji displej je na redu za osvezavanje
  81. {
  82. case 1: //DIS1
  83. prozoviDisplej(3);
  84. ispisiCifru(sekunde); //ispis sekundi na DIS1
  85. break;
  86. case 2: //DIS2
  87. prozoviDisplej(2);
  88. ispisiCifru(sekunde10); //ispis 10*sekundi na DIS2
  89. break;
  90. case 3: //DIS3
  91. prozoviDisplej(1);
  92. ispisiCifru(minute); //ispis minuta na DIS3
  93. break;
  94. case 4: //DIS4
  95. prozoviDisplej(0);
  96. ispisiCifru(minute10); //ispis 10*minuta na DIS4
  97. break;
  98. default:
  99. ;
  100. }
  101. brojDispleja--; //priprema redni broj sledeceg displeja za osvezavanje
  102. if (brojDispleja == 0) brojDispleja = 4;
  103. }
  104. }
  105. void ispisiCifru(int number) //funkcija za ispis cifre (vrste matrice cifara)
  106. {
  107. int pin= 2;
  108. for (int j=0; j < 7; j++)
  109. {
  110. digitalWrite(pin, matricaCifara[number][j]); //ispis jednog segmenta (kolona matrice cifara)
  111. pin++;
  112. }
  113. }
  114. void prozoviDisplej(int redniBroj) //funkcija za prozivku jednog displeja
  115. //(tri iskljucuje, jednog ukljucuje)
  116. {
  117. int pin= 10;
  118. for (int j=0; j < 4; j++)
  119. {
  120. digitalWrite(pin, matricaDispleja[redniBroj][j]); //kontrola prozivke jednog displeja
  121. //(kolona matrice displeja)
  122. pin++;
  123. }
  124. }
  125.  

Replies to stoperica rss

Title Name Language When
brojac ja text 6 Months ago.