axeldamage.netsons.org

noize development & other really nice and interesting stuff...

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri

Metronomo con Arduino

E-mail Stampa PDF

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.

 

Schema Metronomo

 

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);
}
 
tar_img

Scarica i sorgenti


metronomo.pde (1,3 KB)
 

Analytics

Menu Principale


Feed me