View difference between Paste ID: 31rHiN19 and Z4sLdsUW
SHOW: | | - or go back to the newest paste.
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-
int digit[4] = {10,11,9,3};
7+
byte digit[4] = {10,11,9,3};
8-
int bright_on = DIGIT_ON;
8+
byte bright_on = DIGIT_ON;
9-
int bright_off = DIGIT_OFF;
9+
byte bright_off = DIGIT_OFF;
10
11
//výstupy segmentů čísle A-G a DP
12-
int seg[8] = {12,7,5,13,2,8,6,4};
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[10][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
26
//funkce nastavení výstupu a vypnutí všech LED
27
void reset7() {
28
  for (int d=0; d < 4; d++) {
29
    pinMode(digit[d], OUTPUT);
30
    analogWrite(digit[d], DIGIT_OFF);
31
  }
32-
  for ( int s=0;s < 8; s++) {             //jeden segment za druhým
32+
33-
    digitalWrite(seg[s], SEGMENT_ON);     //zapne segment
33+
34-
    for (int d=0; d<4; d++){              //vnořený cyklus, jedna číslice za druhou
34+
35-
      analogWrite(digit[d],bright_on);       //zapne číslici 
35+
36-
      delay(200);                         // počká 200ms
36+
37-
      analogWrite(digit[d],bright_off);    // vypne číslici a jde na další číslici
37+
38
39-
    digitalWrite(seg[s], SEGMENT_OFF);    // vypne segment a jde na další segment
39+
40
  reset7();            //nastavení vývodu
41
  for (int d=0; d<4; d++){              //vnořený cyklus, jedna číslice za druhou
42
    analogWrite(digit[d],bright_on);     //zapne číslici 
43
  }
44
}
45
46
void loop() {
47
  byte l;
48
  for (int i=0;i < 10;i++) {
49
    for ( int s=0;s < 7; s++) {             //jeden segment za druhým
50
      if (number[i][s] == 1) l = SEGMENT_ON;
51
      else l = SEGMENT_OFF;
52
      digitalWrite(seg[s], l);     //zapne segment
53
    }
54
    delay(1000);
55
  }   
56
}
57