Tutorial: Arduino Tone – musica per le tue orecchie

Mi sono accorto di non aver mai dedicato un articolo alla gestione del suono con Arduino

musica con Arduino

devo ammetterlo non sono un cultore della musica, sopratutto mi dicono che mi manca completamente il senso del ritmo e forse chi me lo dice ha ragione 🙂 deve essere questo il motivo per cui non ho dedicato al suono alcun articolo.

Ma come si dice? C’è sempre una prima volta.

Per questo tutorial puoi utilizzare lo sketch di esempio fornito con l’IDE Arduino: ToneMelody

Componenti

l’elenco del materiale questa volta è davvero piccola:

  • n.1 scheda Arduino (2009, diecimila, uno, mega, mini, ….)
  • n.1 altoparlante o speaker da 8ohm, in alternativa un cicalino
  • n.1 resistenza da 100ohm, non necessario se usi un cicalino

Lo schema

Lo schema è riportato nell’articolo originale, ma puoi realizzarlo con colo un cicalino tipo quello presente nello Starter Kit Arduino 2 e senza la resistenza:

ToneMelody

lo sketch

Per caricarlo dall’IDE segui il percorso: File -> Examples -> Digital -> ToneMelody ti si presenterà il seguente sketch:

/*
  Melody
 
 Plays a melody 
 
 circuit:
 * 8-ohm speaker on digital pin 8
 
 created 21 Jan 2010
 modified 30 Aug 2011
 by Tom Igoe 

This example code is in the public domain.
 
 http://arduino.cc/en/Tutorial/Tone
 
 */
 #include "pitches.h"

// notes in the melody:
int melody[] = {
  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4};

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = { 4, 8, 8, 4,4,4,4,4 };

void setup() {
  // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 8; thisNote++) {

    // to calculate the note duration, take one second 
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000/noteDurations[thisNote];
    tone(8, melody[thisNote],noteDuration);

    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(8);
  }
}

void loop() {
  // no need to repeat the melody.
}

parti subito dalle prime linee successive al commento introduttivo:

linea 18: includi la classe pitches.h che contiene tra le altre cose l’elenco della codifica delle note che utilizza lo sketch;

linee 21-22: definisci la melodia, quella di esempio è realizzata con le note:

Costante Frequanza
NOTE_C4 262
NOTE_G3 196
NOTE_A3 220
NOTE_B3 247

puoi trovare in questo link l’associazione Costanti – Frequanze in Hz;

linea 25: definisci i tempi di durata di ciascuna nota, come puoi leggere nel commento alla linea precedente 8 vuol dire ottavo di nota e 4 quarto di nota.

linea 29: esegui un ciclo da 0 a 8, le note della melodia, utilizzando come cursore per spostarti lungo l’array della melodia e della durata la variabile thisNote;

linea 34: la durata della nota è espressa in quarti e ottavi di secondo, in arduino sai che un secondo è espresso in 1000 millisecondi, per cui la durata è data dalla formula: (1000/durata);

linea 35: usa il comando tone( pin, frequanza, durata ) per inviare il segnale al pin 8 di arduino con la frequenza desiderata e per il tempo specificato;

linea 39: calcola la variabile pauseBetweenNotes come (durata della nota * 1.30) ossia il 30% in più della durata della nota stessa;

linea 40: attendi il tempo appena calcolato tra una nota e la successiva;

linea 42: usa il comando noTone( pin ) per interrompere l’esecuzione della nota, senza questa linea la nota non sarebbe mai interrotta.

Lo sketch esegue una simpatica melodia, provalo e sarai piacevolmente colpito.

Nella ricerca di un esempio di melodia realizzata con Arduino da farti ascoltare per comprendere le potenzialità dei comandi tone, noTone, ecc… mi sono imbattuto in questo video:

Buon ascolto !!!

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/tutorial-arduino-tone-musica-per-le-tue-orecchie.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.