Menu
CoddyTech

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.

challenge icon

Desafio

Médio

Faça as quatro cores tocarem:

  • em setup(), um laço for define os pinos dos LEDs como saídas e os pinos dos botões como INPUT_PULLUP
  • quando o botão i é pressionado, acenda ledPins[i] e toque notes[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

}
quiz iconTeste seus conhecimentos

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