1const int micPin = A0;
2
3int sample;
4int maxVal = 0;
5int minVal = 1023;
6
7
8int LatchPin = 3;
9int ClockPin = 5;
10int DataPin = 2;
11
12
13byte LEDs0 = 0b10000000;
14byte LEDs1 = 0b10000001;
15byte LEDs2 = 0b10000011;
16byte LEDs3 = 0b10000111;
17byte LEDs4 = 0b10001111;
18byte LEDs5 = 0b10011111;
19byte LEDs6 = 0b10111111;
20byte LEDs7 = 0b11111111;
21
22void setup() {
23
24 pinMode(LatchPin, OUTPUT);
25 pinMode(ClockPin, OUTPUT);
26 pinMode(DataPin, OUTPUT);
27
28
29 pinMode(micPin, INPUT);
30
31
32 Serial.begin(9600);
33}
34
35void loop() {
36
37 for (int i = 0; i < 100; i++) {
38 sample = analogRead(micPin);
39 if (sample > maxVal) {
40 maxVal = sample;
41 }
42 if (sample < minVal) {
43 minVal = sample;
44 }
45 }
46
47 int peakToPeak = maxVal - minVal;
48
49
50 float voltage = (peakToPeak * 5.0) / 1023.0;
51
52
53 digitalWrite(LatchPin, LOW);
54
55
56 if(voltage > 2.4){
57 shiftOut(DataPin, ClockPin, LSBFIRST, LEDs7);
58 digitalWrite(LatchPin, HIGH);
59 }
60 else if(voltage > 2.1){
61 shiftOut(DataPin, ClockPin, LSBFIRST, LEDs6);
62 digitalWrite(LatchPin, HIGH);
63 }
64 else if(voltage > 1.8){
65 shiftOut(DataPin, ClockPin, LSBFIRST, LEDs5);
66 digitalWrite(LatchPin, HIGH);
67 }
68 else if(voltage > 1.5){
69 shiftOut(DataPin, ClockPin, LSBFIRST, LEDs4);
70 digitalWrite(LatchPin, HIGH);
71 }
72 else if(voltage > 1.2){
73 shiftOut(DataPin, ClockPin, LSBFIRST, LEDs3);
74 digitalWrite(LatchPin, HIGH);
75 }
76 else if(voltage > 0.9){
77 shiftOut(DataPin, ClockPin, LSBFIRST, LEDs2);
78 digitalWrite(LatchPin, HIGH);
79 }
80 else if(voltage > 0.6){
81 shiftOut(DataPin, ClockPin, LSBFIRST, LEDs1);
82 digitalWrite(LatchPin, HIGH);
83 }
84 else if(voltage > 0.0){
85 shiftOut(DataPin, ClockPin, LSBFIRST, LEDs0);
86 digitalWrite(LatchPin, HIGH);
87 }
88
89
90 maxVal = 0;
91 minVal = 1023;
92}