MELODIE CON PIC18F

melodia-pic18fSemplice Schema con Microcontrollore per Realizzare Melodie e Musiche utili come Sveglia o come Campanello per la Porta di Casa…

 
 
 
 





 

INTRO

Le note musicali corrispondo a una determinata frequenza. Con le 7 note, Do, Re, Mi, Fa, Sol, La e Si, si possono creare tutte le melodie. Basta conoscere lo spartito o parte di esso per creare qualsiasi musica. Per quanto riguarda il microcontrollore, essendo in MikroC disponibile la libreria musicale, possono essere messe in coda le note che servono per creare la melodia con la loro opportuna frequenza e durata.

Su internet sono disponibili spartiti e le note sono scritte nel programma sottostante. L’unico problema potrebbe sorgere se vi sono due note uguali una dietro l’altra. In questo caso si può riprodurre a stessa nota per un tempo maggiore oppure inserire un piccolo delay tra esse.

 




 

CODICE

Il codice è molto semplice, si inizializzano ingressi e uscite, poi la libreria musicale, si creano due melodie molto conosciute entrambi di durata 6 secondi e si mettono in due subroutine esterne. All’interno del ciclo infinito, in base alla pressione di due pulsanti si riproduce una melodia o l’altra.

Il codice è:

/*  Sound_Play(522,250);   //Do
    Sound_Play(588,250);   //Re
    Sound_Play(660,250);   //Mi
    Sound_Play(698,250);   //Fa
    Sound_Play(784,250);   //Sol
    Sound_Play(880,250);   //La
    Sound_Play(988,250);   //Si
*/

void Melody1() {           //6 sec  (valzer di campagna)
    Sound_Play(522,250);   //Do
    Sound_Play(588,250);   //Re    
    Sound_Play(660,250);   //Mi
    Sound_Play(522,250);   //Do
    Sound_Play(588,250);   //Re 1/4
    Sound_Play(660,250);   //Mi 1/4
    Sound_Play(522,750);   //Do 3/4
    Sound_Play(660,750);   //Mi 3/4
    Sound_Play(522,250);   //Do 1/4
    Sound_Play(588,250);   //Re 1/4
    Sound_Play(660,250);   //Mi 1/4
    Sound_Play(784,250);   //Sol 1/4
    Sound_Play(698,250);   //Fa 1/4
    Sound_Play(660,250);   //Mi 1/4
    Sound_Play(588,750);   //Re 3/4
    Sound_Play(588,750);   //Re 3/4
}

void Melody2() {           //6 sec (piva piva l'oli d'oliva)
    Sound_Play(784,500);   //Sol 2/4
    Sound_Play(660,250);   //Mi 1/4
    Sound_Play(784,500);   //Sol 2/4
    Sound_Play(660,250);   //Mi 1/4
    Sound_Play(698,250);   //Fa 1/4
    Sound_Play(660,250);   //Mi 1/4
    Sound_Play(588,250);   //Re 1/4
    Sound_Play(660,550);   //Mi 2/4
    Sound_Play(522,250);   //Do 1/4
    Sound_Play(784,500);   //Sol 2/4
    Sound_Play(660,250);   //Mi 1/4
    Sound_Play(784,500);   //Sol 2/4
    Sound_Play(660,250);   //Mi 1/4
    Sound_Play(698,250);   //Fa 1/4
    Sound_Play(660,250);   //Mi 1/4
    Sound_Play(588,250);   //Re 1/4
    Sound_Play(522,750);   //Do 3/4
}

void main() {                                            //Programma principale

  TRISB = 0b00000011;                                    //Tutti ingressi tranne PB7
  Sound_Init(&PORTB, 7);                                 //Inizializza libreria

  while(1){                                              //Ciclo infinito
    if ( PORTB = 0b00000001 ) Melody1();                 //Melodia 1
    else if ( PORTB = 0b00000010 ) Melody2();            //Melodia 1
  }
}

Prima di tutto si creano due subroutine, una è Melody1 e l’altra è Melody2, nella prima vi è “valzer di campagna” nella seconda subroutine vi è “piva piva l’oli d’oliva “. Nel programma principale, prima di tutto si inizializzano le porte da PORTB5 a PORTB6 come ingressi e PORTB7 come uscita, dove verrà connesso l’altoparlante, e poi si inizializza la libreria musicale.

Nel ciclo infinito si vanno a controllare con gli if se il pulsante è premuto o no e in base al pulsante premuto si fa suonare la determinata melodia. Basta premerlo anche per un istante, dopo di che la melodia continua a suonare per 6 secondi e ricomincia solo se il pulsante è premuto o si preme.

 




 

SCHEMA

Lo schema è il seguente:

schema MELODIA PIC18F

Il cristallo X1 è un quarzo da 8MHz e con i due condensatori da 22pF formano il circuito di oscillazione. La resistenza R4 serve per evitare che il PIC18F252 si resetti, mentre ai pin 20 si hanno 5V e ai pin 19 e 8 la massa dell’alimentazione.

Gli interruttori sono connessi a VCC e dall’altro lato all’ingresso del PIC, con delle resistenze di pull-down da 1Kohm. Per pilotare l’altoparlante si utilizza un transistor NPN con una resistenza di protezione da 1Kohm per pilotare la base. Il transistor è usato perché la corrente fornita dal PIC18F252 potrebbe essere non sufficiente.

La configurazione dei fuses è la seguente:

fuses PIC18F

È tutto disabilitato tranne il brownout reset e l’oscillatore è in configurazione HS con quarzo a 8MHz. Lo schema montato su breadboard ha il seguenet aspetto:

melodia-pic-breadboard

DOWNLOAD

Lo schema con la simulazione, i file .hex e .c sono disponibili al seguente LINK!!!




 

[Voti Totali: 0 Media Voti: 0]
Segui la Nostra Pagina Facebook: Facebook

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *