Advertisement
miklik

ArduTemp1-6

Apr 24th, 2023
785
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.39 KB | Source Code | 0 0
  1. #define SEGMENT_ON HIGH
  2. #define SEGMENT_OFF LOW
  3. #define DIGIT_ON 0
  4. #define DIGIT_OFF 255
  5.  
  6. //výstupy připojených číslic
  7. byte digit[4] = {10,11,9,3};
  8. byte bright_on = DIGIT_ON;
  9. byte bright_off = DIGIT_OFF;
  10.  
  11. //výstupy segmentů čísle A-G a DP
  12. byte seg[8] = {12,7,5,13,2,8,6,4};
  13.  
  14. //mapa číslic  segment A B C D E F G
  15. byte number[11][7] = {{1,1,1,1,1,1,0},   //0
  16.                       {0,1,1,0,0,0,0},   //1
  17.                       {1,1,0,1,1,0,1},   //2
  18.                       {1,1,1,1,0,0,1},   //3
  19.                       {0,1,1,0,0,1,1},   //4
  20.                       {1,0,1,1,0,1,1},   //5
  21.                       {1,0,1,1,1,1,1},   //6
  22.                       {1,1,1,0,0,0,0},   //7
  23.                       {1,1,1,1,1,1,1},   //8
  24.                       {1,1,1,1,0,1,1},   //9
  25.                       {0,0,0,0,0,0,0}};  //nic
  26.  
  27. //jednotlivé číslice
  28. byte value[4] = {7,1,5,3};           // číslice k zobrazení
  29. byte dot = 1;                        // pozice desetiné tečky, >4 vypnuto
  30.  
  31. //funkce pro výpis číslic z pole value[]
  32. void show() {
  33.   byte l;
  34.   for (int v=0;v < 4;v++) {                 // číslice 1 až 4
  35.     analogWrite(digit[v],bright_on);        //zapne číslici
  36.     for ( int s=0;s < 7; s++) {             //jeden segment za druhým
  37.       if (number[value[v]][s] == 1) l = SEGMENT_ON;    //řádek number dle hodnoty v value[v]
  38.       else l = SEGMENT_OFF;
  39.       digitalWrite(seg[s], l);             //zapne segment
  40.     }
  41.     if (dot == v) digitalWrite(seg[7], SEGMENT_ON);     //zapne desetinou tečku
  42.     delay(1);                               // svíti milisekundu v cyklu
  43.     analogWrite(digit[v],bright_off);       //vypne číslici
  44.     for ( int s=0;s < 7; s++) {             //vynulovat segment
  45.       digitalWrite(seg[s], SEGMENT_OFF);              
  46.     }
  47.     digitalWrite(seg[7], SEGMENT_OFF);      //vypne tečku
  48.   }  
  49. }
  50.  
  51. //funkce nastavení výstupu a vypnutí všech LED
  52. void reset7() {
  53.   for (int d=0; d < 4; d++) {
  54.     pinMode(digit[d], OUTPUT);
  55.     analogWrite(digit[d], DIGIT_OFF);
  56.   }
  57.  
  58.   for (int s=0; s < 8; s++) {
  59.     pinMode(seg[s], OUTPUT);
  60.     digitalWrite(seg[s], SEGMENT_OFF);
  61.   }
  62. }
  63.  
  64. void setup() {
  65.   reset7();            //nastavení vývodu
  66.   for (int d=0; d<4; d++){              //vnořený cyklus, jedna číslice za druhou
  67.     analogWrite(digit[d],bright_on);     //zapne číslici
  68.   }
  69. }
  70.  
  71. void loop() {
  72.   show();
  73.   //delay(10);
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement