Simon: Botões e Notas
Parte da seção Projetos do Journey de Arduino da Coddy. Lição 13 de 24.
Simon é um jogo de memória: o tabuleiro reproduz um padrão de luzes coloridas e notas, e você o repete nos botões. A cada rodada, o padrão cresce em um elemento, até você cometer um erro. Há quatro cores, cada uma com um botão, um LED e uma nota.
Com quatro de cada elemento, os arrays mantêm o sketch curto. A posição 0 de cada array é vermelha, 1 é verde, 2 é azul e 3 é amarela, então um número, i, identifica uma cor em todos os lugares:
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};Um loop for verifica os quatro botões. Aja em dois momentos: quando um botão é pressionado (LOW agora, HIGH na última leitura) e quando é solto (HIGH agora, LOW na última leitura). O array lastState mantém a última leitura de cada botão. Nas etapas seguintes, um pressionamento é contado quando o botão é solto. Esses botões não sofrem oscilações, então as verificações de borda são suficientes.
Desafio
MédioFaça as quatro cores tocarem:
- em
setup(), um laçofordefine os pinos dos LEDs como saídas e os pinos dos botões comoINPUT_PULLUP - quando o botão
ié pressionado, acendaledPins[i]e toquenotes[i]no pino 8 - quando ele for solto, apague o LED e chame
noTone()
Pressione Run, toque os botões e, em seguida, Check.
Experimente você mesmo
// Uma entrada por cor: vermelho, verde, azul, amarelo
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523}; // C, E, G e C agudo
const int buzzerPin = 8;
int lastState[4] = {HIGH, HIGH, HIGH, HIGH}; // última leitura de cada botão
void setup() {
// Os LEDs são saídas, os botões são INPUT_PULLUP
}
void loop() {
// para cada botão: quando for pressionado, acenda seu LED e toque sua nota;
// quando for solto, desligue ambos
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Projetos
Pratique por conta própria: Playground de Arduino