Pesquisar

terça-feira, 24 de janeiro de 2012

Tocar uma melodia usando o tom de função ()


Este exemplo mostra como usar o tom () comando para gerar notas. Ele toca uma melodia pouco você pode ter ouvido antes.

Hardware necessário

  • Arduino bordo
  • 8 alto falantes ohm pequena
  • 100 ohm resistor
  • ligar-fio

Circuito


imagem desenvolvido utilizando Fritzing . Para mais exemplos de circuito, consulte a página do projeto Fritzing
Conectar um terminal de seu alto-falante para digital pino 8 através de um resistor de 100 ohms. Conecte o outro terminal ao terra.

Código

O código abaixo usa um arquivo extra, pitches.h. Este arquivo contém todos os valores campo para anotações típicas. Por exemplo, é meio NOTE_C4 C. NOTE_FS 4 é Fá sustenido, e assim por diante. Esta tabela nota foi originalmente escrito por Brett Hagman, em cuja obra o tom () comando foi baseado. Você pode achar que é útil para quando você quiser fazer notas musicais.
O esboço principal é a seguinte:

/*
  Melodia

 Tocar uma melodia

 circuito:

 *  falante de 8 ohms em digital de 8 pinos

Criado 21 Jan 2010
 modificado 30 Aug 2011
 Po Tom Igoe

Este exemplo de código é de domínio público

 http://arduino.cc/en/Tutorial/Tone

 */

 #include "pitches.h"

//  notas da melodia:  
int melody[] = {
  NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};

//  nota: 4 semínima =, 8 = colcheia, etc:  
int noteDurations[] = {
  4, 8, 8, 4,4,4,4,4 };

void setup() {
  //  iterar sobre as notas da melodia:  
  for (int thisNote = 0; thisNote < 8; thisNote++) {

    // para calcular a duração da nota, ter um segundo 
    . // dividido pelo tipo de nota  semínima 
     // eg = 1000 / 4, colcheia = 1000 / 8, etc  
    int noteDuration = 1000/noteDurations[thisNote];
    tone(8, melody[thisNote],noteDuration);

    // para distinguir as notas, definir um tempo mínimo entre eles. 
    // duração da nota + 30% parece funcionar bem: 
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    //  parar a reprodução de tom: 
    noTone(8);
  }
}

void loop() {
  //  não precisa repetir a melodia.  
}



Fonte: Arduino.cc

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.