11 de novembro de 2023

Jogo Passa ou Repassa

O famoso circuito do jogo da torta na cara!

Quando um botão é pressionado, o outro é desativado. Quem apertar mais rápido leva o direito de responder a pergunta do jogo!

O projeto é simples e com um pequeno circuito com transistores é possível construí-lo, porém, com um microcontrolador fica legal devido as possibilidades de configurações.

Pode-se adicionar um buzzer, uma sirene, ou um circuito para tocar uma música. Além de controlar como as luzes irão piscar.

Para esse circuito, pode-se trocar os leds por transistores ou relés, para acionar luzes de maiores potências.

O projeto base é esse e deixo o esquema elétrico e o código fonte.

Pequeno, fácil e divertido!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*---------------------------------------------------------
  Programa : PASSA OU REPASSA - JOGO
  Autor    : Fellipe Couto [ http://www.efeitonerd.com.br ]
  Data     : 11/11/2023
  ---------------------------------------------------------*/
#define LED_1 2  //Led 1 conectado ao pino 2 do Arduino e ao GND com resistor de 220 ohms
#define LED_2 3  //Led 2 conectado ao pino 3 do Arduino e ao GND com resistor de 220 ohms
#define BTN_1 4  //Botão 1 conectado ao pino 4 do Arduino e ao GND
#define BTN_2 5  //Botão 2 conectado ao pino 5 do Arduino e ao GND

void setup() {
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(BTN_1, INPUT_PULLUP);
  pinMode(BTN_2, INPUT_PULLUP);
  lightTest();
}

void loop() {
  if (digitalRead(BTN_1) == LOW && digitalRead(BTN_2) == HIGH) {  //Botão 1 pressionado
    light(1);
  } else if (digitalRead(BTN_1) == HIGH && digitalRead(BTN_2) == LOW) {  //Botão 2 pressionado
    light(2);
  }
}

void light(int led) {
  for (int i = 0; i < 100; i++) {
    if (led == 1) {
      digitalWrite(LED_1, !digitalRead(LED_1));
    } else {
      digitalWrite(LED_2, !digitalRead(LED_2));
    }
    delay(50);
  }
  lightTest();
}

void lightTest() {
  digitalWrite(LED_1, LOW);
  digitalWrite(LED_2, LOW);
  delay(500);
  digitalWrite(LED_1, HIGH);
  for (int i = 0; i < 10; i++) {
    digitalWrite(LED_1, !digitalRead(LED_1));
    digitalWrite(LED_2, !digitalRead(LED_2));
    delay(50);
  }
  digitalWrite(LED_1, LOW);
  digitalWrite(LED_2, LOW);
}

2 comentários:

  1. Olá Fellipe, muito interessante sua abordagem para a máquina. A partir da sua e de outras abordagens criei 3 versões, mas na sua, estava com dificuldade de implementar som. Mas finalmente consegui. Agradecido por compartilhar seu conhecimento.

    ResponderExcluir
    Respostas
    1. Bom dia!! Que bom que conseguiu! Se precisar de alguma ajuda, pode me chamar :) Abraços!

      Excluir