Dé numérique pour Les Colons de Catane avec Arduino UNO et écran LCD
Matériel nécessaire
- 1 × Arduino UNO
- 1 × Écran LCD 16×2 (type standard, interface parallèle 6 fils)
- 1 × Bouton poussoir 12mm (lancer les dés)
- Fils de liaison, plaque d'essai
Câblage de l'écran LCD
Connexion standard 4 bits de données :
- RS → D12, E → D11, D4 → D5, D5 → D4, D6 → D3, D7 → D2
- RW → GND, VSS → GND, VDD → 5V
- Potentiomètre 10kΩ sur VO (contraste), LED+ → 5V (via 220Ω), LED- → GND
Câblage du bouton
Bouton entre broche D10 et GND. Résistance de pull-up interne activée (pinMode(10, INPUT_PULLUP)). Appui = LOW.
Logique du programme
- Initialisation : bibliothèque
LiquidCrystal, graine aléatoire sur A0 (bruit thermique), message « Roll the dice! » - Attente appui : lecture D10, si LOW → déclenchement
- Animation « tension » : fonction
buildUp(): remplissage des 2 lignes de 16 caractères avec des nombres aléatoires 1-6, défilement gauche→droite, accélération progressive (délai initial 220ms, décrément 13ms/étape) - Résultat : tirage de deux dés (
random(1,7)), affichage centré (colonne 7) sur les deux lignes - Règle spéciale « 7 » (Le Voleur) : si somme = 7 → effacement, affichage « 7 » en haut, « The Robber » en bas (rappel règle Catane : défausser si >7 cartes)
Code source complet
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int diceButton = 10;
int reply, count = 0;
long diceOne, diceTwo;
void setup() {
lcd.begin(16, 2);
pinMode(diceButton, INPUT_PULLUP);
randomSeed(analogRead(0));
lcd.setCursor(1, 0);
lcd.print("Roll the dice!");
}
void buildUp() {
lcd.clear();
int countDelay = 220;
for (count = 0; count <= 16; count++) {
lcd.setCursor(count, 0); lcd.print(random(1, 7));
lcd.setCursor(count, 1); lcd.print(random(1, 7));
delay(countDelay);
countDelay -= 13;
}
}
void loop() {
if (digitalRead(diceButton) == LOW) {
buildUp();
diceOne = random(1, 7);
diceTwo = random(1, 7);
lcd.clear();
lcd.setCursor(7, 0); lcd.print(diceOne);
lcd.setCursor(7, 1); lcd.print(diceTwo);
if (diceOne + diceTwo == 7) {
lcd.clear();
lcd.setCursor(7, 0); lcd.print("7");
lcd.setCursor(3, 1); lcd.print("The Robber");
}
delay(500); // anti-rebond simple
}
}
Variantes et extensions
- Remplacer le bouton par un capteur d'inclinaison (tilt switch) pour mimer le lancer de dés physique
- Adapter pour autres jeux : modifier/supprimer le message « The Robber », changer le nombre de dés, ajouter un haut-parleur pour effets sonores
- Version 20×4 : afficher l'historique des derniers tirages
Usage
Idéal pour parties de Catane entre amis : plus de dés perdus, animation visuelle ludique, rappel automatique de la règle du 7. Projet débutant parfait (câblage simple, code lisible, résultat immédiat).
Processus de fabrication
- Utilisation du décodeur 7 segments 4511 : tutoriel pratique d'affichage BCD
- Tubes d'Affichage : Des Tubes Cathodiques aux Indicateurs Œil-de-Chat
- Analyse spectrale avancée : interprétation des formes d'onde et harmoniques
- L'histoire, la conception et la fabrication des dés : des outils anciens aux jeux modernes
- Maîtriser la surcharge de méthodes en C# : Concepts, exemples et bonnes pratiques
- Primal Display : Construire un moniteur de température LCD avec Raspberry Pi
- Comment Installer l'Écran TFT 3,5″ Kuman sur RetroPie — Guide Étape par Étape
- Comprendre les Tasks Verilog : Fonctions vs Tasks, Syntaxe et Utilisation
- Maîtriser les Tâches d'Affichage Verilog : Débogage et Journalisation Efficaces