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:Así 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:
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); } }