Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1.  
  2. // inicjalizacja globalnych masek oraz tablic danych
  3.  
  4. //const int wysokosc_kolumny[8] = {251 , 247 , 254 , 253 , 191 , 127 , 239 , 223}; // tabela wartosci uzywanych do wyswietlenia wysokosci kolumny LED (tylko szczyt)
  5. const int wys_kol[8] = {251 , 243 , 242 , 240 , 176 , 48 , 32 , 0}; // tabela wartosci uzywanych do wyswietlenia wysokosci kolumny LED (kolumna wypelniona)
  6. // tylko do odczytu (const int)
  7.  
  8. int wartosc_kolumny[8]; //tablica uzywana do obslugi wysokosci kolumny
  9. int k; //globalna zmienna do czytania wartosc_kolumny
  10.  
  11. void setup() {
  12.  
  13. //konfiguracja ARDUINO
  14. #include <math.h>
  15. #include <fix_fft.h> //dodatkowa biblioteka algorytmu fix_fft
  16.  
  17. DDRA |= B11111111; //ustaw caly port A jako OUTPUT, ukladowo sluzy jako sterowanie wysokoscia kolumny zerem 22 -> 29
  18. DDRC |= B11111111; //ustaw caly port C jako OUTPUT, ukladowo sluzy jako sterowanie zasilaniem kolumny jedynka 37 -> 30
  19.  
  20. // ustaw przerwania timer1 co 400 Hz
  21. TCCR1A = 0; // set entire TCCR1A register to 0
  22. TCCR1B = 0; // same for TCCR1B
  23. TCNT1 = 0; //initialize counter value to 0
  24.  
  25. // ustaw rejestr timer1 na zliczanie 400 Hz
  26. OCR1A = 39;// = (16*10^6) / (391*1024) - 1 ; 391*1024 ~ 400000
  27. TCCR1B |= (1 << WGM12); // wlacz tryb CTC - Clear Timer on Compare
  28. TCCR1B |= (1 << CS12) | (1 << CS10); // Ustaw bity CS10 i CS12 dla preskalera 1024
  29. TIMSK1 |= (1 << OCIE1A); // wlacz tryb timer compare interrupt
  30.  
  31. sei(); //zezwรณl na przerwania
  32. PORTC = 1; //zainicjuj stan portu C
  33.  
  34. }
  35.  
  36. void loop() {
  37.  
  38. for (int i = 0; i <= 7; i++){
  39.  
  40. wartosc_kolumny[i] = wys_kol[i];
  41. delay(100);
  42. }
  43.  
  44.  
  45. for (int i = 0; i <= 7; i++){
  46.  
  47. wartosc_kolumny[7-i] = wys_kol[7];
  48. delay(100);
  49. }
  50.  
  51.  
  52. for (int i = 0; i <= 7; i++){
  53.  
  54. wartosc_kolumny[i] = wys_kol[7-i];
  55. delay(100);
  56. }
  57.  
  58. for (int i = 0; i <= 7; i++){
  59.  
  60. wartosc_kolumny[7-i] = wys_kol[7];
  61. delay(100);
  62. }
  63.  
  64.  
  65. }
  66.  
  67. ISR(TIMER1_COMPA_vect){//obsล‚uga przerwania timer1 - timer1 compare interrupt service routine. Jedno przerwanie jedno przesuniecie bitu
  68.  
  69. if(PORTC != B10000000) // jezeli PORTC jest rozny od 0 to :
  70. {
  71. PORTC = PORTC << 1; //przesun bit o jeden w lewo
  72. k++; //k = k + 1, przesun odczyt z wartosc_kolumny
  73. PORTA = wartosc_kolumny[k]; //wybierz wysokosc kolumny z tablicy
  74. }
  75. else {
  76. PORTC = B00000001; // jezeli PORTC jest rowny zero ustaw jedynke na osmy bit
  77. k = 0; //ustaw odczyt z wartosc_kolumny dla kolumny 1
  78. PORTA = wartosc_kolumny[k]; //wybierz wysokosc kolumny z tablicy
  79. }
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement