Facebook
From danilo, 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: 180
  1. int milisekund = 0;
  2. int stotinke = 0;
  3. int desetinke = 0;
  4. int stotine=0;
  5. int desetice=0;
  6. int jedinice=0;
  7. int br=3000;
  8. int pov=1;
  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 (br != 3000){
  47.     br++;
  48.     pov=0;
  49. }
  50. else pov=1;
  51. if(milisekund == 10)
  52. {
  53.  stotinke++;
  54.  milisekund = 0;
  55. }
  56. if (stotinke == 10)
  57. {
  58.  desetinke=desetinke+pov;
  59.  stotinke = 0;
  60.  br=0;
  61. }
  62.  
  63. if(desetinke == 237)
  64. {
  65.   desetinke=desetinke-pov;
  66.   br=0;
  67. }
  68. stotine=desetinke/100;
  69. desetice=(desetine-(stotine*100))/10;
  70. jedinice=desetine-stotine*100-desetice*10;
  71. switch(brojDispleja) //koji displej je na redu za osvezavanje
  72. {
  73. case 1: //DIS1
  74. prozoviDisplej(3);
  75. ispisiCifru(jedinice); //ispis jedinica na DIS1
  76. break;
  77. case 2: //DIS2
  78. prozoviDisplej(2);
  79. ispisiCifru(desetice); //ispis desetica na DIS2
  80. break;
  81. case 3: //DIS3
  82. prozoviDisplej(1);
  83. ispisiCifru(stotine); //ispis stotina na DIS3
  84. break;
  85. case 4: //DIS4
  86. prozoviDisplej(0);
  87. ispisiCifru(0); //ispis 0 na DIS4
  88. break;
  89. default:
  90. ;
  91. }
  92. brojDispleja--; //priprema redni broj sledeceg displeja za osvezavanje
  93. if (brojDispleja == 0) brojDispleja = 4;
  94. }
  95. }
  96. void ispisiCifru(int number) //funkcija za ispis cifre (vrste matrice cifara)
  97. {
  98. int pin= 2;
  99. for (int j=0; j < 7; j++)
  100. {
  101. digitalWrite(pin, matricaCifara[number][j]); //ispis jednog segmenta (kolona matrice cifara)
  102. pin++;
  103. }
  104. }
  105. void prozoviDisplej(int redniBroj) //funkcija za prozivku jednog displeja
  106. //(tri iskljucuje, jednog ukljucuje)
  107. {
  108. int pin= 10;
  109. for (int j=0; j < 4; j++)
  110. {
  111. digitalWrite(pin, matricaDispleja[redniBroj][j]); //kontrola prozivke jednog displeja
  112. //(kolona matrice displeja)
  113. pin++;
  114. }
  115. }

Replies to Re: brojac rss

Title Name Language When
Re: Re: brojac danilo text 5 Months ago.