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 | 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[10][7] = {{1,1,1,1,1,1,0}, //0
|
| 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
|
| 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 | - | for (int i=0;i < 10;i++) {
|
| 48 | + | } |
| 49 | } | |
| 50 | - | if (number[i][s] == 1) l = SEGMENT_ON; |
| 50 | + | |
| 51 | //funkce nastavení výstupu a vypnutí všech LED | |
| 52 | - | digitalWrite(seg[s], l); //zapne segment |
| 52 | + | |
| 53 | for (int d=0; d < 4; d++) {
| |
| 54 | - | delay(1000); |
| 54 | + | |
| 55 | - | } |
| 55 | + | |
| 56 | } | |
| 57 | - | |
| 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 | } |