Cosa impareremo: 

Oggi impareremo a suonare il theremin, o quello che ne uscirà fuori da questo progetto.

Per chi come me, non conosce/conosceva questo strumento musicale, vi lascio questo video dimostrativo dove si vedere lo stesso creatore suonarlo.

Non possiamo replicare il suono analogico creato dalle due antenne ma possiamo creare qualcosa di simile con la funzione tone() e un piezo(un componente che oscilla quando riceve corrente).

Nel tutorial 4 abbiamo utilizzato delle fotoresistenze, perché non utilizzarle anche adesso? al variare della quantità di luce che entra in contatto con il sensore tanto sarà diverso il suono emesso dalle vibrazioni del piezo.

Componenti Richiesti:

1 Piezopiezo

1 fotoresistenzafotoresistenza

1 resistenza da 10Kilo Ohm10kohm

Programmazione:

Tone serve per riprodurre note, immaginando un grafico con X il tempo e Y i valori che può assumere. Noteremo su  la frequenza che viene mantenuta identica in un periodo di tempo analizzato da noi ES: 10 milli secondi con valore massimo 5, analizzando due periodi di tempo notiamo stessa frequenza con due valori 0 e 5.

Per maggiori chiarimenti, questo è il link ufficiale della funzine Tone ()

//Necessitiamo di una variabile che conservi il valore letto
 
int sensorValue;
int sensorLow = 1023;//una per il minimo
int sensorHigh = 0; // una per il massimo
const int ledPin = 13; /*il led del piedino 13
ci avviserà quando la calibrazione sarà terminata */
 
void setup() {
 // impostiamolo come output
 pinMode(ledPin, OUTPUT);
 digitalWrite(ledPin, HIGH);
 
// utilizziamo una condizione per calibrare automaticamente
 while (millis() < 5000) {
 // registriamo il massimo valore
 sensorValue = analogRead(A0);
 if (sensorValue > sensorHigh) {
 sensorHigh = sensorValue;/*se la lettura supera il valore
 adesso letto, il nuovo valore assumerà il vecchio
 valore massimo */
 }
 // questo vale per il minimo, funziona come il massimo
 if (sensorValue < sensorLow) {
 sensorLow = sensorValue;
 }
 }
 /*spegni il LED dopo la calibrazione e inizia a suonare
 distruggendo il mio udito con suoni acuti */
 digitalWrite(ledPin, LOW);
}
 
void loop() {
 //leggi il valore e inseriscilo in una variabile
 sensorValue = analogRead(A0);
 
/*rea una variabile di nome pitch e il suo contenuto
 dipende dal valore letto al momento, quello massimo e quello minimo */
 int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000);
 
//con tone creiamo il suono utilizzando pitch
 tone(8, pitch, 20);
 
// ritardiamo le note in modo da poterle sentire
 delay(10);
}

Schema Elettronico:

piezo

Dimostrazione e curiosità:

Una foto di Lev Sergeevič Termen anche detto Leon.

leon-theremin

cliccate su questo link per vedere il video fatto da me.