Patrocinadores

viernes, 10 de enero de 2020

Notas musicales en Arduino usando un potenciómetro

En este ejemplo te enseño de manera sencilla a reproducir las notas musicales en Arduino

Comencemos mostrando las notas y las frecuencias en Hertz que debes usar para reproducir cada nota.




El armado del circuito queda de la siguiente manera:




Una vez que hayas armado tu circuito debemos ahora programar nuestro Arduino.

Aquí redondeamos los decimales...

int altavoz = 9;

int DO  = 262;
int RE  = 294;
int MI  = 330;
int FA  = 349;
int SOL = 392;
int LA  = 440;
int SI  = 494;

int mapa;
int valor;
void setup() {

  Serial.begin(9600);

}

void loop() {
  valor = analogRead(A0);
  int frecuencia;
  int duracion;
  mapa = map(valor, 0, 1023, 0, 8);

  Serial.print("Valor del potenciometro: ");
  Serial.print(mapa);
  Serial.print("\n");
  delay(100);

  if (mapa == 1) {
    frecuencia = DO;
    duracion = 1000;
    tone (altavoz, frecuencia, duracion);
    Serial.print("DO");
    Serial.print("\n");
    delay(100);
  }

  if (mapa ==2) {
    frecuencia = RE;
    duracion = 1000;
    tone (altavoz, frecuencia, duracion);
    Serial.print("RE");
    Serial.print("\n");
    delay(100);
  }

  if (mapa==3) {
    frecuencia = MI;
    duracion = 1000;
    tone (altavoz, frecuencia, duracion);
    Serial.print("MI");
    Serial.print("\n");
    delay(100);
  }

  if (mapa==4) {
    frecuencia = FA;
    duracion = 1000;
    tone (altavoz, frecuencia, duracion);
    Serial.print("FA");
    Serial.print("\n");
    delay(100);
  }

  if (mapa==5) {
    frecuencia = SOL;
    duracion = 1000;
    tone (altavoz, frecuencia, duracion);
    Serial.print("SOL");
    Serial.print("\n");
    delay(100);
  }

  if (mapa==6) {
    frecuencia = LA;
    duracion = 1000;
    tone (altavoz, frecuencia, duracion);
    Serial.print("LA");
    Serial.print("\n");
    delay(100);
  }

  if (mapa==7) {
    frecuencia = SI;
    duracion = 1000;
    tone (altavoz, frecuencia, duracion);
    Serial.print("SI");
    Serial.print("\n");
    delay(100);
  }

  if (mapa == 8) {
    frecuencia = DO;
    duracion = 1000;
    tone (altavoz, frecuencia, duracion);
    Serial.print("DO");
    Serial.print("\n");
    delay(100);

}

}

No hay comentarios:

Publicar un comentario