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

Replies to vezba 3 rss

Title Name Language When
vezba 3 Lukac text 5 Months ago.