Utente:Franci aiuz/riproduttore musicale

Questa risorsa è stata scritta dagli studenti dell'Istituto ITIS "Enrico Mattei" di Urbino, della classe 3B/EN nell'a.s. 2021/2022, all'interno del corso di Sistemi Elettronici 1.

Per favore, prima di apportare modifiche, attendi sino alla fine dell'anno scolastico (termina il 30 giugno 2022) oppure contatta il docente di riferimento Giacomo Alessandroni nel caso venissero rilevati contenuti non in linea con le linee guida della comunità.

Se leggi questo avviso ad anno scolastico concluso puoi rimuoverlo.

laboratorio
laboratorio
Franci aiuz/riproduttore musicale
Tipo di risorsa Tipo: laboratorio
Materia di appartenenza Materia: Sistemi Elettronici 1
Avanzamento Avanzamento: laboratorio completa al 25%

Questa lezione descrive come realizza un riproduttore musicale, il cui fine è riprodurre una canzone preimpostata all'attuazione di un interruttore.

Sensori e attuatori modifica

per realizzare uesto progetto occorono:

● 6 resistenze da 220 Ω

● 5 led

● 1 interrutore a scorrimento

● 1 buzzer

Schema di montaggio modifica

Che lo facciate con Fritzing o con Tinkercad deve essere originale, sennò - una volta che lo caricate su Commons - se non è opera vostra ve la cancellano dopo un microsecondo.

 

Codice modifica

Il codice va inserito, con le giuste indentazioni e adeguatamente commentato.

Nei codici, a eccezione della parte precedente il setup, non vanno inseriti - per nessuna ragione - numeri magici.

int led1=10;        //intestiamo i pin ai vari componenti
int led2=9;
int led3=8;
int led4=7;
int led5=6;
int interruttore=13;
int buzzer = 11;
const int songspeed = 1.5; 
#define NOTE_C4 262 //definiamo le note necesserie per la canzone
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784
#define NOTE_A5 880
#define NOTE_B5 988

int notes[] = { 
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,  //scriviamo la canzone con le note e le pauserappresentato dagli 0
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,NOTE_E4,
NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,

NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0,
NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,

NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_D5, NOTE_E5, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
NOTE_C5, NOTE_A4, NOTE_B4, 0,

NOTE_A4, NOTE_A4,

NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,

NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,

NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0,
NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,

NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_D5, NOTE_E5, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
NOTE_C5, NOTE_A4, NOTE_B4, 0,

NOTE_E5, 0, 0, NOTE_F5, 0, 0,
NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
NOTE_D5, 0, 0, NOTE_C5, 0, 0,
NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4,

NOTE_E5, 0, 0, NOTE_F5, 0, 0,
NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
NOTE_D5, 0, 0, NOTE_C5, 0, 0,
NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4
};
//*****************************************
int duration[] = { //impostiamo la durata dele pause della canzone
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,

125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,

125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 125, 250, 125,

125, 125, 250, 125, 125,
250, 125, 250, 125,
125, 125, 250, 125, 125,
125, 125, 375, 375,

250, 125,

125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,

125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,

125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 125, 250, 125,

125, 125, 250, 125, 125,
250, 125, 250, 125,
125, 125, 250, 125, 125,
125, 125, 375, 375,


250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 125, 125, 125, 375,
250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 500,

250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 125, 125, 125, 375,
250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 500
};

void setup() {  // impostiamo gli input e gli output del circuito
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(interruttore,INPUT);
  
 }

void loop() {
  int valInt=digitalRead(interruttore); // definiamo il valore dell'interrutore
    if (valInt==HIGH){ // verifichiamo che il valore dell'interruttore sia HIGH e se la condizione è verificata suoniamo la canzone ineme a un gioco di luci
 	delay(250);
digitalWrite(led1,LOW);
digitalWrite(led2,HIGH); 
	delay(250);
digitalWrite(led2,LOW);
digitalWrite(led3,HIGH);
	delay(250);
digitalWrite(led3,LOW);
digitalWrite(led4,HIGH);
	delay(250);
digitalWrite(led4,LOW);
digitalWrite(led5,HIGH);
	delay(250);
digitalWrite(led5,LOW);
digitalWrite(led4,HIGH); 
	delay(250);
digitalWrite(led4,LOW);
digitalWrite(led3,HIGH);
 	delay(250);
digitalWrite(led3,LOW);
digitalWrite(led2,HIGH);
   	delay(250);
digitalWrite(led2,LOW);
digitalWrite(led1,HIGH);
    digitalWrite(led1,LOW);
      for (int i=0;i<203;i++){
int wait = duration[i] * songspeed;
tone(buzzer,notes[i],wait); 
delay(wait);}
    }
}

Espansioni suggerite modifica

partendo da questa base base si potrebbero aggiungere ulteriori interruttori e assegnare a ognuno di essi una canzone diversa.