Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa
 

 

Que montar uma caixinha de música? Ou montar um despertador? Ou até mesmo colocar aquela musiquinha tradicional em um PABX usando o Arduino? Pois bem, com muito pouco é possível tudo isso!

 

Você vai precisar de:

 

Um Arduino:

Um alto falante (speaker):

Ligue o negativo do seu falante ao GND do Arduino e o positivo ao pino 3:

Na linguagem C para Arduino existe o comando tune(), com ele é possível enviar uma frequência por um determinado tempo para um dos pinos PWM (pulse with modulation) existentes. A sintaxe é:

 

tone(pino,frequência,duração);

ou

tone(pino,frequência);

 

Importante também é saber que ao enviar um novo tom para o pino o tom anterior é cessado e que também  há um comando que faz com que o som pare, cuja sintaxe é:

 

noTone(pino);

 

Sabendo que existem 7 notas musicais básicas:

 

C

D

E

Mi

F

G

Sol

A

B

 

 

E suas respectivas frequências e durações:

 

Nota

Nome

Frequência

Duração

C

261 Hz

1915 ms

D

294 Hz

1700 ms

E

Mi

329 Hz

1519 ms

F

349 Hz

1432 ms

G

Sol

392 Hz

1275 ms

A

440 Hz

1136 ms

B

523 Hz

956 ms

 

 

Com o código abaixo podemos percorrer todas as notas:

 

{code}

// Constantes com as notas

#define DO  262

#define RE  294

#define MI  330

#define FA  349

#define SOL 392

#define LA  440

#define SI  523

 

void setup() {

pinMode(3,OUTPUT);

pinMode(13,OUTPUT);

}

 

void loop() {

digitalWrite(13,HIGH);

tone(3,DO);

delay(500);

tone(3,RE);

delay(500);

tone(3,MI);

delay(500);

tone(3,FA);

delay(500);

tone(3,SOL);

delay(500);

tone(3,LA);

delay(500);

noTone(3);

digitalWrite(13,LOW);

delay(5000);

}

{/code}

 

{youtube}0tP-zRhaSu4{/youtube}

 

Com um pouco mais de aprimoramento podemos até arriscar algo como Ode para Joy (partitura obtida em http://www.music-scores.com/midi.php?sheetmusic=Beethoven_Ode_to_Joy_easy):

 

O código fonte:

 

{code}

 

void setup() {

pinMode(3,OUTPUT);

}

 

void loop() {

int C = 262, D = 294, E = 330, F = 349, G = 392, A = 440, B = 523;

int P = 0;

int i;

int ode[]   = {

E,E,F,G,G,F,E,D,C,C,D,E,E,D,P,D,P,

E,E,F,G,G,F,E,D,C,C,D,E,D,C,P,C,P,

D,D,E,C,D,E,P,F,E,C,D,E,P,F,E,D,C,D,P,

E,E,D,G,G,F,E,D,C,C,D,E,D,C,P,C  };

int tempo[] = {

1,1,1,1,1,1,1,1,1,1,1,1,1.5,1,.5,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1.5,1,.5,1,1,

1,1,1,1,1,1,.5,1,1,1,1,1,.5,1,1.5,1,.5,1,1,1,

1,1,1,1,1,1,1,1,1,1,1,1,1.5,.125,1,1};

 for(i=0;i<sizeof(ode)/2;i++) {

if(ode[i] != 0) tone(3,ode[i]); else noTone(3);

delay(tempo[i] * 500);

noTone(3);

}

noTone(3);

delay(10000);

}

{/code}

 

 

Confesso que não ficou um clássico do piano, mas dá para entender como se deve fazer usando-se uma partitura e o conceito de notas semibreves, mínimas, semínimas, colcheias e etc.

 

{youtube}BIcf8jHmgUM{/youtube}