Buscar
banner

Simon Says com arduino

Publicado em 24 de Agosto de 2026 às 13:35

brinque de o mestre mandou com o arduino (opicional tinkercad ou realidade)

Arquivos do Projeto

Materiais Necessários

  • 1x LED vermelho
  • 1x LED verde
  • 1x LED azul (ou o sem cor no meu caso)
  • 1x LED amarelo
  • 4x botões
  • 1x buzzer
  • 1x protoboard
  • 1x arduino UNO

Ferramentas Necessárias

  • apenas as maõs

Etapas

montagem: no arquivo que eu deixei

Código:

  • const byte leds[] = {2, 3, 4, 5};
    const byte botoes[] = {6, 7, 8, 9};
    const byte buzzer = 10;

    const int tons[] = {262, 330, 392, 523};
    const int MAX_SEQ = 100;

    byte sequencia[MAX_SEQ];
    int rodada = 0;

    void setup() {
    for (int i = 0; i < 4; i++) {
    pinMode(leds[i], OUTPUT);
    pinMode(botoes[i], INPUT_PULLUP);
    }
    pinMode(buzzer, OUTPUT);
    randomSeed(analogRead(A0));
    animacaoInicial();
    }

    void loop() {
    sequencia[rodada] = random(0, 4);
    mostrarSequencia();
    if (!jogadorAcerta()) {
    perdeu();
    rodada = 0;
    delay(1000);
    return;
    }
    rodada++;
    if (rodada >= MAX_SEQ) rodada = 0;
    delay(700);
    }

    void mostrarSequencia() {
    delay(500);
    for (int i = 0; i <= rodada; i++) {
    acenderLED(sequencia[i]);
    delay(200);
    }
    }

    bool jogadorAcerta() {
    for (int i = 0; i <= rodada; i++) {
    int botao = esperarBotao();
    acenderLED(botao);
    if (botao != sequencia[i]) return false;
    }
    return true;
    }

    int esperarBotao() {
    while (true) {
    for (int i = 0; i < 4; i++) {
    if (digitalRead(botoes[i]) == LOW) {
    delay(30);
    while (digitalRead(botoes[i]) == LOW);
    return i;
    }
    }
    }
    }

    void acenderLED(int i) {
    digitalWrite(leds[i], HIGH);
    tone(buzzer, tons[i]);
    delay(350);
    digitalWrite(leds[i], LOW);
    noTone(buzzer);
    }

    void perdeu() {
    for (int x = 0; x < 3; x++) {
    for (int i = 0; i < 4; i++) digitalWrite(leds[i], HIGH);
    tone(buzzer, 150);
    delay(400);
    noTone(buzzer);
    for (int i = 0; i < 4; i++) digitalWrite(leds[i], LOW);
    delay(250);
    }
    }

    void animacaoInicial() {
    for (int i = 0; i < 4; i++) {
    digitalWrite(leds[i], HIGH);
    tone(buzzer, tons[i]);
    delay(180);
    digitalWrite(leds[i], LOW);
    noTone(buzzer);
    delay(70);
    }
    }

Conclusão

para jogar você precisa repitir a sequencia aleatoria do arduino

Comentários

1
Faça login para adicionar um comentário.
  1. Rafael salaverry Morais
    Rafael salaverry Morais 2 semanas, 4 dias atrás

    Eaí gostaram

Gostou do Projeto?