Metronomo con Arduino
Questo piccolo progetto (di livello beginner) illustra un metodo semplice per creare un metronomo con Arduino.
Tramite un potenziometro (collegato all'ingresso analogico 0) si può controllare il tempo. Due led indicano i beat, uno verde e uno rosso per l'accento sul primo quarto. Lo speacker attaccato al pin 9 da anche un feedback sonoro. Come il led, anche lo speacker ha l'accento sul primo quarto diverso.

Qui vedrete il codice sorgente, e in fondo alla pagina trovate il link per scaricarlo.
Codice Sorgente
/* Metronome * 2009, A. Degani * * Speaker pin: 9 * led pins: 12 - 13 * tempo pot Pin: 0 (analog) * */ int speakerPin = 9; int ledPin = 13; int beatPin = 12; int tempoPin = 0; int tempoValue=0; int tempo; void playTone(int tone, int duration) { for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); delayMicroseconds(tone); } } void playNote(char note, int duration) { char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; // play the tone corresponding to the note name for (int i = 0; i < 8; i++) { if (names[i] == note) { playTone(tones[i], duration); } } } void beat(boolean beat){ if (beat){ digitalWrite(beatPin,HIGH); playNote('C',100); digitalWrite(beatPin,LOW); }else{ digitalWrite(ledPin,HIGH); playNote('b',100); digitalWrite(ledPin,LOW); } } void setup() { pinMode(speakerPin, OUTPUT); pinMode(ledPin, OUTPUT); pinMode(beatPin, OUTPUT); } void loop() { for(int i=1;i<=3;i++){ tempoValue = analogRead(tempoPin); tempo=map(tempoValue,0,1024,100,3000); beat(false); delay(tempo); } tempoValue = analogRead(tempoPin); tempo=map(tempoValue,0,1024,100,3000); beat(true); delay(tempo); }
|
|
Scarica i sorgentimetronomo.pde (1,3 KB) |







