Dados Digital com Arduino: Gere Números Aleatórios 1-6 em LCD 16x2
Componentes e Materiais
- 1x Arduino UNO
- 1x Protoboard
- 1x Display LCD 16x2 (Hitachi HD44780, branco/azul)
- 1x Potenciômetro rotativo (contraste LCD)
- 1x Botão pushbutton 12mm (SparkFun)
- Jumpers + cabo USB
Sobre o Projeto
Simula dois dados (D6) em LCD 16x2. Pressione o botão → "Rolling dice..." por 4s → exibe "Dice 1 = X" e "Dice 2 = Y" (valores 1-6). Projeto simples para iniciantes – usa biblioteca LiquidCrystal nativa.
Ideação
Criado por tédio com dados físicos. Arduino lê estado do botão (LOW=pressionado, pull-up interno ou externo) e gera dois random(1,7).
Código Completo
#include
long randNumber;
int Led = 13; // LED indicador (opcional)
int Shock = 2; // Pino do botão (chamado "Shock" no original)
int val;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // RS, E, D4, D5, D6, D7
byte customChar[] = {
B00000, B00000, B11111, B11001,
B10101, B10011, B11111, B00000
}; // Char customizado (dado?)
void setup() {
lcd.begin(16, 2);
lcd.createChar(0, customChar);
lcd.home();
pinMode(Led, OUTPUT);
randomSeed(analogRead(0)); // Seed ruído analógico
pinMode(Shock, INPUT); // Botão (assume pull-up externo ou interno)
lcd.write(byte(0));
lcd.print("Digital dice");
lcd.write(byte(0));
delay(1000);
}
void loop() {
val = digitalRead(Shock);
if (val == LOW) { // Botão pressionado
lcd.clear();
lcd.print("Rolling dice...");
delay(4000);
lcd.clear();
lcd.setCursor(0, 0);
randNumber = random(1, 7);
lcd.print("Dice 1 = ");
lcd.print(randNumber);
lcd.setCursor(0, 1);
randNumber = random(1, 7);
lcd.print("Dice 2 = ");
lcd.print(randNumber);
}
delay(150); // Debounce simples
}
Esquemático
Imagem disponível. Conexões padrão LCD 4-bit: RS→7, E→8, D4-D7→9-12. Botão no pino 2 (pull-up necessário). Potenciômetro no pino VO do LCD (contraste).
Notas de Melhoria
- Usar
INPUT_PULLUPno pino do botão para dispensar resistor externo. - Adicionar debounce por software mais robusto (ex: biblioteca
Button). - Animação de "rolagem" mais realística (números mudando rápido antes de parar).
- Sonorização com buzzer.
Processo de manufatura
- Detector de Idiomas TinyML com Edge Impulse no Arduino Nano 33 BLE Sense
- Construa um Jogo em Tempo Real com Giroscópio: Arduino Nano + Sensor MPU-6050
- Construa um Homem de Ferro com Arduino: Componentes, Sensores e Guia Passo a Passo
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
- Controlador de Umidificador DIY com Arduino e Relé – Configuração Segura de Alta Tensão
- Medição de Distância em Tempo Real com Sonar Arduino e Visualização no Processing
- Lâmpada de Mesa Reativa a Áudio com Arduino Nano
- Jogo Pong Neon em Matriz NeoPixel com Arduino Nano
- Volante Joystick Arduino Personalizado para Jogos
- Arduino 101: Construa um Pedômetro com Sensor DHT11 e Display LCD