공정훈

FND shift HELLO

1 +#include <stdlib.h>
2 +#include <stdio.h>
3 +#include <wiringPi.h>
4 +
5 +const int FndSelectPin[5] = {4, 17, 18, 27, 22};
6 +const int FndPin[8] = {6, 12, 13, 16, 19, 20, 26, 21};
7 +const int FndFont[5] = {0x3F, 0x38, 0x38, 0x79, 0x76};
8 +
9 +void Init()
10 +{
11 + int i;
12 + if(wiringPiSetupGpio() == -1)
13 + exit(-1);
14 + for(i=0; i<5; i++)
15 + {
16 + pinMode(FndSelectPin[i], OUTPUT);
17 + digitalWrite(FndSelectPin[i], HIGH);
18 + }
19 + for(i=0; i<8; i++)
20 + {
21 + pinMode(FndPin[i], OUTPUT);
22 + digitalWrite(FndPin[i], LOW);
23 + }
24 +
25 +}
26 +
27 +void FndSelect(int position)
28 +{
29 + int i;
30 + for(i=0; i<5; i++)
31 + {
32 + if(i==position)
33 + digitalWrite(FndSelectPin[i], LOW);
34 + else
35 + digitalWrite(FndSelectPin[i], HIGH);
36 + }
37 +}
38 +
39 +void FndDisplay(int position, int num)
40 +{
41 + int i, j;
42 + int flag = 0;
43 + int shift = 0x01;
44 + for(i=0; i<8; i++)
45 + {
46 + flag=(FndFont[num] & shift);
47 + digitalWrite(FndPin[i], flag);
48 + shift <<= 1;
49 + }
50 + FndSelect(position);
51 +}
52 +
53 +int main()
54 +{
55 + int i, temp;
56 + int pos;
57 + int data[5] = {0, 1, 2, 3, 4};
58 +
59 + Init();
60 + unsigned int ptime = millis();
61 + while(1)
62 + {
63 + while(millis()-ptime < 500)
64 + {
65 +
66 + for(pos=0; pos<5; pos++)
67 + {
68 + FndDisplay(pos, data[pos]);
69 + delay(1);
70 + }
71 + }
72 + ptime = millis();
73 + temp = data[0];
74 + for(i=0; i<4; i++)
75 + data[i] = data[i+1];
76 + data[4] = temp;
77 + }
78 +
79 + return 0;
80 +}
81 +