Un theremin rústico hecho con Arduino

Si hay un instrumento musical fascinante para mí, es el theremin.

Se trata de un instrumento que se ejecuta sin contacto físico. Aquí puede verse un video de cómo suena:Theremin en youtubeAsí que yo quise realizar una aproximación a la programación de un instrumento sin contacto, utilizando un sensor de distancia (ultrasónico) y un buzzer. Este fue el resultado:

Theremin de tres notas con Arduino

Tenemos el buzzer conectado al pin 9 (y a gnd), y el sensor ultrasónico HC-SR04 conectado así:

  • VCC – a 5v
  • TRIG – al pin 12
  • ECHO – al pin 13
  • GND – a gnd

Y este es el código:

#define PIN_TRIG 12
#define PIN_ECO 13
int buzzer = 9;
int numTones = 10;

int tones[ ] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440,466, 494};
                //DO, DO#, RE, RE#, MI, FA, FA#, SOL, SOL#, A, A#, B

void setup() {
  Serial.begin (9600);
  pinMode(PIN_TRIG, OUTPUT);
  pinMode(PIN_ECO, INPUT);
  pinMode(buzzer, OUTPUT);
}

void loop() {
//Este fragmento de código es para tomar la información del sensor ultrasónico HC-SR04
long duracion, distancia;
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(2);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);

duracion=pulseIn(PIN_ECO, HIGH);
distancia=(duracion/2)/29;
//Aquí hacemos que la distancia se muestre en el "Monitor Serial"
Serial.println(distancia);

//En esta parte indicamos qué nota tocar de acuerdo a la distancia
switch (distancia) {
      case 0 ... 10:
        tone(buzzer, tones[1]);
        delay(500);
        break;
      case 11 ... 20:
        tone(buzzer, tones[5]);
        delay(500);
        break;
      case 21 ... 30:
        tone(buzzer, tones[8]);
        delay(500);
        break;
      default: 
        noTone(buzzer);      
        delay(500);
}
}

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *