Tutorial Arduino n.06
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:
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:
Dimostrazione e curiosità:
Una foto di Lev Sergeevič Termen anche detto Leon.
cliccate su questo link per vedere il video fatto da me.




