Bonjour tout le monde !
Aujourd’hui je vais vous présenter un projet très simple, tellement simple que je n’ai jamais eu l’idée de faire un article dessus 🙂
Un des montages classique que l’on réalise quand on débute en électronique c’est le « dé électronique ».
6 leds, quelques CI logique, et un capteur de vibrations, c’est le montage de base pour amuser les jeunes débutants.
Ca doit rappeler des souvenirs à ceux ayant déjà monté un kit de la marque velleman (ou autres).
Et si on remettez ce montage au goût du jour ? Avec une petite touche de magie « Arduinesque » 😉
Le sujet du jour : fabriquer un dé électronique avec une carte arduino !
—
La matériel :
Pour ce projet on va rester simple, mais pas trop !
Pour l’affichage pas question d’utiliser 6 leds comme dans la plupart des kit du commerce, non, un afficheur 7 segments c’est beaucoup plus marrant 🙂
De même pourquoi utiliser un capteur piezo pour détecter les choc, quand on dispose d’un capteur tilt.
Pourquoi faire simple quand on peut faire compliqué ? hein 😉
Le matériel à proprement parler :
Une carte arduino,
Un capteur tilt (j'en est déjà parlé il y a peu dans un autre article),
Un afficheur 7 segments avec électronique intégré (pareil j'ai fait un article dessus il y a peu de temps),
Une breadboard pour faciliter le câblage,
Des fils de câblage
Pour l’afficheur 7 segments, il est aussi tout à fait possible d’utiliser un afficheur 7 segments classique, avec un contrôleur BCD -> 7 segments externes (comme un CD4543 par exemple).
Le câblage :
Arduino -> capteur tilt
VCC -> VCC
GND -> GND
D8 -> S2
D9 -> S1
Arduino -> 7seg
VCC -> VCC
GND -> GND
D3 -> Data 1
A0 -> Data 2
A1 -> Data 4
A2 -> Data 8
D2 -> LATCH_STROBE
(Le pinmapping du 7seg est un peu bizarre pour faciliter mon câblage sur la breadboard)
La broche A3 doit être laissée libre, ou doit juste être reliée à un fils flottant, afin de servir d’antenne pour initialiser le générateur de nombre aléatoire.
Le code :
(Rien de bien compliqué, de plus, beaucoup de morceaux de code proviennent d’autre articles du blog)
/* Broche analogique libre servant pour RandomSeed() */
#define RAND_SEED_PIN A3
/* Broches de contrôle du 7seg */
#define LATCH_STROBE 2
#define LATCH_DATA_A 3
#define LATCH_DATA_B A0
#define LATCH_DATA_C A1
#define LATCH_DATA_D A2
/* Broche du capteur tilt */
#define _S1 9
#define _S2 8
/* Fonction qui retourne l'orientation du capteur tilt */
byte getPos() {
byte n = digitalRead(_S1);
n += 2 * digitalRead(_S2);
return n;
}
/* Fonction qui affiche une valeur sur le 7seg */
void affichage(uint8_t valeur) {
valeur &= 0x0F; // Sécurité : 0 < valeur < 15
/* Envoi des données sur le latch */
digitalWrite(LATCH_DATA_A, bitRead(valeur, 0));
digitalWrite(LATCH_DATA_B, bitRead(valeur, 1));
digitalWrite(LATCH_DATA_C, bitRead(valeur, 2));
digitalWrite(LATCH_DATA_D, bitRead(valeur, 3));
/* Affichage des données */
delayMicroseconds(100);
digitalWrite(LATCH_STROBE, LOW);
delayMicroseconds(100);
digitalWrite(LATCH_STROBE, HIGH);
}
/* setup() */
void setup() {
/* Mise en sortie des broches de contrôle */
pinMode(LATCH_STROBE, OUTPUT);
/* Mise en sortie des broches du 7seg */
pinMode(LATCH_DATA_A, OUTPUT);
pinMode(LATCH_DATA_B, OUTPUT);
pinMode(LATCH_DATA_C, OUTPUT);
pinMode(LATCH_DATA_D, OUTPUT);
/* Mise en sortie des broches du capteur tilt */
pinMode(_S1, INPUT);
pinMode(_S2, INPUT);
/* Initialisation du générateur de nombre aléatoire */
randomSeed(analogRead(RAND_SEED_PIN));
}
/* loop() */
void loop() {
static byte oldPos = 0; // Ancienne valeur du capteur
byte pos = getPos(); // Valeur actuelle du capteur
/* Si le capteur a bouger */
if(pos != oldPos) {
affichage(random(0, 7)); // Affichage d'un nombre aléatoire entre 0 et 7
delay(1000); // Délai 1s
oldPos = getPos(); // Sauvegarde du mouvement
}
}
—
Le résultat :
*On secoue comme dans la pub orangina*
*Et on re-secoue *
Enjoy !




Un peu grand pour entrer dans la poche 🙂
Mais ça change un peu du simple dé avec un poussoir, c’est plus logique de le secouer 🙂
Merci pour ton article
Publié par schizophrene | 1 Mai 2012, 11 h 01 minC’est pas la taille qui compte 🙂
Allez tout le monde, on secouent
l’oranginal’arduino pour faireremonter la pulpechanger le nombre ! 🙂
Publié par skywodd | 1 Mai 2012, 13 h 53 minSalut !
Félicitations pour tes articles que je suis depuis un petit moment 🙂
Par contre, quel est le modèle ton afficheur 7 segments ? parce que les plus répandus ont un affichage avec des « barres » et non des petits points comme celui ci-dessus … et je trouve le tiens très joli !
Cordialement , titi@.
Publié par titi@ | 3 Mai 2012, 11 h 48 minC’est un « vieux » afficheur 7 segments HP-5280-7300 récupéré sur un ancien fréquencemètre de table.
Il existe une version plus récente le TIL311 dans le commerce, cf https://skyduino.wordpress.com/2012/03/20/arduino-afficheur-7seg-avec-controleur-integre-til311-hp-5280-7300/
Publié par skywodd | 3 Mai 2012, 11 h 51 min