-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstop-game.ino
More file actions
90 lines (70 loc) · 1.75 KB
/
stop-game.ino
File metadata and controls
90 lines (70 loc) · 1.75 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/**
* Jogo do STOP
*
* STOP é um jogo onde, após a letra sorteada, todos os participantes devem
* preencher as colunas (ex.: Nome, Localidade, Objeto, Carro, etc) e o primeiro
* a terminar, grita "STOP", parando o jogo para a contagem.
*
* A regra de contagem é: repetidos valem 5, senão, 10 pontos. Ao final de todas
* as rodadas, soma-se o total de pontos de cada um e ganha quem obtiver mais
* pontos, claro.
*
* @author Thiago Paes
**/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
char ultimaletra;
int pin = 11;
int led = 13;
int val = 1;
int rodada = 0;
int letras[26];
int contador = 0;
boolean duplicado;
void setup() {
lcd.begin();
lcd.clear();
lcd.setBacklight(HIGH);
lcd.setCursor(0, 0);
lcd.print("RODADA: DE 26");
lcd.setCursor(0, 1);
lcd.print("LETRA:");
pinMode(pin, INPUT_PULLUP);
pinMode(led, OUTPUT);
}
void loop() {
val = digitalRead(pin);
// o push button vem por padrão 1
if (val == 0) {
// utilizando um contador, pq a leitura é muito rápida
contador++;
// com o contador ativado - cerca de 2s - sorteio apenas uma vez.
if (contador >= 250) {
sorteia();
contador = 0;
}
}
// joga na tela Amarelo
lcd.setCursor(8, 0);
lcd.print(rodada);
lcd.setCursor(7, 1);
lcd.print(ultimaletra);
}
// sorteio de letras, utilizando a própria tabela ASCII e tratando repetição
void sorteia() {
duplicado = true;
while (duplicado == true) {
digitalWrite(led, HIGH);
ultimaletra = char(random(65, 90));
duplicado = false;
for (int i = 0; i < sizeof(letras); i++) {
if (letras[i] == ultimaletra) {
duplicado = true;
}
}
}
digitalWrite(led, LOW);
letras[rodada] = ultimaletra;
rodada++;
}