Uma melodia a partir de duas listas
Parte da seção Saídas do Journey de Arduino da Coddy. Lição 14 de 24.
As notas de uma melodia não têm todas a mesma duração. Um segundo array pode armazenar as durações, alinhadas com as notas: notes[i] e durations[i] correspondem uma à outra.
int notes[] = {262, 262, 392, 392, 440, 440, 392};
int durations[] = {400, 400, 400, 400, 400, 400, 800};Duas notas iguais em sequência se confundiriam e soariam como uma nota longa. Um breve silêncio após cada uma mantém as notas separadas. Portanto, toque a nota durante sua duração e espere um pouco mais:
tone(8, notes[i], durations[i]);
delay(durations[i] + 50);A duração encerra a nota, e os 50 ms extras são o intervalo antes da próxima.
Quando o índice passa da última nota, a melodia termina: espere um momento antes de recomeçá-la para que ela não se sobreponha a si mesma.
Desafio
MédioToque a primeira frase de Twinkle Twinkle Little Star no pino 8:
- notas: 262, 262, 392, 392, 440, 440, 392
- durações: 400 ms cada, e 800 ms para a última nota
- após cada nota, aguarde a duração dela mais 50 ms
- após a última nota, aguarde mais um segundo e comece novamente
Pressione Run e, em seguida, Check.
Experimente você mesmo
const int buzzerPin = 8;
// crie aqui os arrays de notas e durações e o índice
void setup() {
}
void loop() {
// toque uma nota, espere sua duração mais 50 ms e passe para a próxima
// depois da última nota, espere um segundo e comece novamente
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Saídas
Pratique por conta própria: Playground de Arduino