1
2
3int latch=3;
4int clock=4;
5int data=2;
6
7unsigned char table[]=
8{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c
9,0x39,0x5e,0x79,0x71,0x00};
10
11const int nbrDigits= 4;
12
13const int digitPins[nbrDigits] = { 5,6,7,8};
14
15int lightPin = 0;
16
17void setup() {
18
19 pinMode(latch,OUTPUT);
20 pinMode(clock,OUTPUT);
21 pinMode(data,OUTPUT);
22
23
24 for(int i=0; i < nbrDigits; i++)
25 {
26 pinMode(digitPins[i], OUTPUT);
27 digitalWrite(digitPins[i],HIGH);
28 }
29}
30
31void loop() {
32 int digitalReading = analogRead(lightPin);
33 DisplayNumber(digitalReading);
34 delay(1);
35}
36
37
38void DisplayNumber( int number) {
39 if(number == 0)
40 DisplayDigit( 0, nbrDigits-1) ;
41 else
42 {
43
44
45 for( int digit = nbrDigits-1; digit >= 0; digit--)
46 {
47 if(number > 0)
48 {
49 DisplayDigit( number % 10, digit) ;
50 number = number / 10;
51 }
52 }
53 }
54}
55
56
57void DisplayDigit(unsigned char num, int digit) {
58 digitalWrite(latch,LOW);
59 shiftOut(data,clock,MSBFIRST,table[num]);
60 digitalWrite(latch,HIGH);
61
62 digitalWrite( digitPins[digit], LOW );
63 delay(4);
64 digitalWrite( digitPins[digit], HIGH );
65}