Arduino – wskaźnik wysterowania na diodach LED

Jakiś czas temu we wpisie Arduino i mikrofon elektretowy pokazałem wykorzystanie modułu z mikrofonem elektretowym KAmodMIC_ELECTRET do budowy włącznika sterowanego dźwiękiem, czyli popularnego „klaskacza”.

Teraz przyszła pora na trochę bardziej ambitne zadanie – budowa wskaźnika wysterowania (bargrafu) pokazującego na linijce diod LED poziom sygnału akustycznego. W „prehistorycznych” czasach takie konstrukcje były budowane w oparciu o specjalizowane układy scalone, np. LM3914. Obecnie możemy sobie pozwolić na lekką rozrzutność i takie trywialne zadanie powierzyć mikrokontrolerowi. Taki układ ma również walory edukacyjne, bo przy okazji można pobawić się wejściami analogowymi mikrokontrolera AVR.
Do zbudowania układu wykorzystałem:
– płytkę zgodną z Arduino Uno o oznaczeniu KAmduino
– moduł z mikrofonem elektretowym
– płytkę prototypową PPS0400
diody LED dołączone przez rezystory ograniczające prąd o wartości ok. 680 Ohm
Całość połączyłem przewodami M-M i M-F tak jak pokazano na poniższym schemacie.

kamduino_z-plytką-stykową_bb
Program sterujący dla Arduino wygląda następująco:

#define Mic 0    // analogowa linia A0 - tu dołączyłem mikrofon
#define LED0 8   // do tych linii są dołączone diody LED
#define LED1 9
#define LED2 10
#define LED3 11
int val;

void setup() {
 pinMode(LED0, OUTPUT);
 pinMode(LED1, OUTPUT);
 pinMode(LED2, OUTPUT);
 pinMode(LED3, OUTPUT);
}

void loop() {
 val = analogRead( Mic );
 if (val > 350 )
 digitalWrite( LED0, HIGH );
 
 if (val > 370 )
 digitalWrite( LED1, HIGH );
 
 if (val > 390 )
 digitalWrite( LED2, HIGH );
 
 if (val > 410 )
 digitalWrite( LED3, HIGH );

 delay( 20 );
 
 digitalWrite( LED0, LOW ); 
 digitalWrite( LED1, LOW ); 
 digitalWrite( LED2, LOW ); 
 digitalWrite( LED3, LOW ); 
}

 

Oczywiście pasek diod LED można bez problemu wydłużyć – efekt jest wtedy jeszcze lepszy!

Bargraf w akcji można zobaczyć na filmie: