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.
Commenti