Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
Composants
| Arduino UNO | 1 |
| Écran LCD 16x2 (contrôleur HD44780, interface parallèle 4 bits) | 1 |
| Bouton poussoir 12 mm + plaque support (breakout) | 1 |
| Potentiomètre rotatif 10 kΩ (contraste LCD) | 1 |
| Plaque d'essai + fils | 1 |
| Câble USB A-B | 1 |
Idée
Remplacer les dés physiques par un dé numérique : appui sur bouton → animation « Lancer des dés... » (4 s) → affichage de deux valeurs aléatoires 1-6 sur l'écran LCD. Projet simple, ludique, parfait débutant.
Câblage
- LCD : RS→7, E→8, D4→9, D5→10, D6→11, D7→12, VSS→GND, VDD→5V, V0→potentiomètre (curseur), RW→GND, A→5V (via 220Ω), K→GND
- Bouton : une patte→Pin 2, autre→GND (pull-up interne activée)
- LED intégrée pin 13 (optionnel, clignote au lancer)
Code complet (commenté)
#include <LiquidCrystal.h>
// Caractère personnalisé : dé (optionnel)
byte dieChar[8] = {
B00000, B00000, B11111, B11001, B10101, B10011, B11111, B00000
};
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
const int BUTTON_PIN = 2;
const int LED_PIN = 13;
long randNumber;
int buttonState;
void setup() {
lcd.begin(16, 2);
lcd.createChar(0, dieChar);
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP); // Pull-up interne
randomSeed(analogRead(A0)); // Graine aléatoire bruit analogique
lcd.write(byte(0));
lcd.print(" De numerique ");
lcd.write(byte(0));
delay(1000);
}
void loop() {
buttonState = digitalRead(BUTTON_PIN);
if (buttonState == LOW) { // Bouton pressé (pull-up → LOW)
lcd.clear();
lcd.print("Lancer des des...");
digitalWrite(LED_PIN, HIGH);
delay(4000); // Suspense
digitalWrite(LED_PIN, LOW);
lcd.clear();
lcd.setCursor(0, 0);
randNumber = random(1, 7); // 1 à 6 inclus
lcd.print("De 1 = ");
lcd.print(randNumber);
lcd.setCursor(0, 1);
randNumber = random(1, 7);
lcd.print("De 2 = ");
lcd.print(randNumber);
}
delay(150); // Anti-rebond simple
}
Explications clés
INPUT_PULLUP: pas de résistance externe nécessaire.randomSeed(analogRead(A0)): initialise le générateur avec du bruit thermique pour vraie aléa.random(1, 7): retourne entier dans [1, 6] (borne max exclusive).- Caractère personnalisé
createChar()pour icône dé (décoratif).
Améliorations possibles
- Buzzer pour son de lancer
- Affichage graphique des faces de dé (caractères personnalisés 5x8)
- Mode « Yahtzee » (5 dés, relances, scoring)
- Écran OLED/I2C pour version compacte
- Boîtier imprimé 3D
Schéma Fritzing
Image fournie dans le projet original (.jpg du breadboard).
Projet idéal premier pas : LCD, bouton, aléatoire, interaction utilisateur. Coût < 10 €.
Processus de fabrication
- Détecteur de langue TinyML avec Edge Impulse sur Arduino Nano 33 BLE Sense
- Construire un jeu gyroscopique temps réel avec Arduino Nano et capteur MPU-6050
- Construire un Iron Man animé avec Arduino : capteurs, sons et relais
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
- Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
- Mesure de distance en temps réel par sonar Arduino et visualisation Processing
- Construire une lampe de bureau réactive à l'audio avec Arduino Nano
- Jeu Pong sur Matrice NeoPixel avec Arduino Nano
- Volant Joystick Arduino Personnalisé pour Jeux Vidéo