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: 173
  1. // DIGITALNA STOPERICA (max 60 sekundi)
  2. int milisekund = 0;
  3. int stotinke = 0;
  4. int desetinke = 237;
  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(micros()-ispisTime)) >= 1000) //da li je istekla perioda osvezavanja od 1ms (1 kHz)
  42. {
  43. ispisTime = micros();
  44. if(desetinke == 237)
  45. {
  46.   desetinke--;
  47. }
  48. stotine=desetinke/100;
  49. desetice=(desetinke-(stotine*100))/10;
  50. jedinice=desetinke-stotine*100-desetice*10;
  51. switch(brojDispleja) //koji displej je na redu za osvezavanje
  52. {
  53. case 1: //DIS1
  54. prozoviDisplej(3);
  55. ispisiCifru(jedinice); //ispis jedinica na DIS1
  56. break;
  57. case 2: //DIS2
  58. prozoviDisplej(2);
  59. ispisiCifru(desetice); //ispis desetica na DIS2
  60. break;
  61. case 3: //DIS3
  62. prozoviDisplej(1);
  63. ispisiCifru(stotine); //ispis stotina na DIS3
  64. break;
  65. case 4: //DIS4
  66. prozoviDisplej(0);
  67. ispisiCifru(0); //ispis 0 na DIS4
  68. break;
  69. default:
  70. ;
  71. }
  72. brojDispleja--; //priprema redni broj sledeceg displeja za osvezavanje
  73. if (brojDispleja == 0) brojDispleja = 4;
  74. }
  75. }
  76. void ispisiCifru(int number) //funkcija za ispis cifre (vrste matrice cifara)
  77. {
  78. int pin= 2;
  79. for (int j=0; j < 7; j++)
  80. {
  81. digitalWrite(pin, matricaCifara[number][j]); //ispis jednog segmenta (kolona matrice cifara)
  82. pin++;
  83. }
  84. }
  85. void prozoviDisplej(int redniBroj) //funkcija za prozivku jednog displeja
  86. //(tri iskljucuje, jednog ukljucuje)
  87. {
  88. int pin= 10;
  89. for (int j=0; j < 4; j++)
  90. {
  91. digitalWrite(pin, matricaDispleja[redniBroj][j]); //kontrola prozivke jednog displeja
  92. //(kolona matrice displeja)
  93. pin++;
  94. }
  95. }

Replies to vezba 3 rss

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