[Help] Machine à dés

Bonjour les gens !

Je suis en pleine réalisation d’une machine pour lancer des dés et m’afficher la valeur obtenue après sur un écran LCD et étant un petit peu (à peine) flemmard (et aussi sous une dictature m’infligeant un contrôle parental sur mon ordi), je viens demander de l’aide pour mon projet.

J’ai donc:

Un écran LCD (celui fourni dans le starter kit) que je crois être plutôt bien branché,
Un arduino UNO (idem),
Trois boutons (2 pour régler des valeurs et le troisième pour valider)
Tous le tralala de câbles et de résistances indispensables.

Mon problème, c’est que l’écran m’affiche toujours zéro. :confused:

Alors je vous met le code en joint et j’attends impatiemment une réponse que les génies de ce forum vont sans doute me donner(enfin j’espère). :grin:

Dicemachine1.ino (1.75 KB)

hello
d'où sortes les N° de pinoches que tu déclares dans liquid Crystal ?

en supposant qu'ils soient bons,si tu veux que ton LCD puisse t'afficher quelque chose, il faut l' initialiser comme ceci:

void setup(){
lcd.begin(16,2);

si tu n'es pas sur de tes N ° de pinoches, essaies plutôt ceux ci:
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //affectation des pinoches arduino en fonction de cablage de l'afficheur LCD 16x2

et change la pinoche 8 par la 10 par exemple
dans to cablage physique et dans 2 lignes de code

Bonjour,

Déjà, merci de la réponse, ensuite je met le lcd.begin() avant chaque commande lcd alors je crois que ce n'est pas nécessaire de la mettre en setup, si ? (et de toute façon, il m'affiche bien 0 donc...)
Les câblages sont une version du starter kit rebranchée pour être plus claire(ou clairs, je sais pas trop).
Et puis je pensais plutôt que l'erreur était dans le code, non ?

voici ton code revu .il fonctionne partiellement et t’affiche bien des chiffres sur le LCD
attention à l’affectation du LCD et des pinoches BP et Leds.
il va te débloquer

//#include <avr/pgmspace.h>
#include <LiquidCrystal.h> // La librairie
int BP1 = A1; //cablage BP1 avec R push down et retour sur A1 un appui sera lu “HIGH”
int BP2 = A2; //cablage BP2 avec R push down et retour sur A2 un appui sera lu “HIGH”
int BP3 = A3; //cablage BP3 avec R push down et retour sur A3 un appui sera lu “HIGH”
int ana_en_lair = A4; //entrée analogique laisée “en l’air” pour la fonction rnd
int nb_aleatoire = 0;
int val_BP1 = 0;
int val_BP2 = 0; // Les variables valeurs lues pour les BP
int val_BP3 = 0;
int vt = 0; //valeur aléatoire
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //cablage du LCD

void setup()
{
Serial.begin(57600); //vitesse de com en USB pour le moniteur ( debugage )
randomSeed(analogRead(ana_en_lair)); // initialise le générateur de nombre aléatoire en lisant broche analogique
lcd.begin(16,2);
pinMode(BP1, INPUT);
pinMode(BP2, INPUT); //set en entrée
pinMode(BP3, INPUT);
lcd.print(“Dicemachine”); //écran d’accueil
}
void loop() {
val_BP1 = digitalRead(BP1);
val_BP2 = digitalRead(BP2); //valeurs BP
val_BP3 = digitalRead(BP3);

//la ligne suivante m’a permit de verifier le fonctionnement des 3 BP. elle est à virer ensuite
//en profiter pour voir le LCD.setCursor(colonne,ligne);
lcd.setCursor(0,1); lcd.print(val_BP1);lcd.print(" “);lcd.print(val_BP2);lcd.print(” “);lcd.print(val_BP3);lcd.print(” ");

if((val_BP1 == LOW)&(val_BP2 == LOW)&(val_BP3 == LOW)) // si rien appuyé
{
lcd.setCursor(0,0);lcd.print(“appui sur BP”);
}
if(val_BP1 == HIGH){ // si BP1 appuyé
val_BP1 = 6;
if(val_BP2 == HIGH){ // si BP2 appuyé
goto pouet; //on sort de la boucle
}
if(val_BP1 == LOW){ //etc.
val_BP1 = 8;
if(val_BP2 == LOW){
goto pouet;
}
if(val_BP1 == LOW){
val_BP1 = 20;
if(val_BP2 == LOW){
goto pouet;
}
if(val_BP1 == LOW){
val_BP1 = 100;
if(val_BP2 == LOW){
goto pouet;
} // au final c’est pour définir la valeur max du dés
}
}
}
}
if(val_BP3 == LOW){ //Je vais pas me répéter
val_BP1 = 1;
if(val_BP2 == LOW){
goto pouet;
}
if(val_BP3 == LOW){
val_BP1 = 2;
if(val_BP2 == LOW){
goto pouet;
}
if(val_BP3 == LOW){
val_BP1 = 4;
if(val_BP2 == LOW){
goto pouet;
}
if(val_BP3 == LOW){
val_BP1 = 5;
if(val_BP2 == LOW){
goto pouet;
}
} //ça c’est pour le nombre de dés
}
}
}
pouet:
if(val_BP2 == LOW)
{
tirage();
//delay(200);
}
}
void tirage()
{
nb_aleatoire = random(1,6);///100);
lcd.setCursor(12,0);
lcd.print(" ");
//delay(200);
lcd.setCursor(12,0);
lcd.print(nb_aleatoire);
}

Merci, je ne peux pas tester actuellement (ma mère me confisque mon arduino pour que je bosse mon oral de brevet) mais j'essayerais dès que possible.

bonjour,
ca serait pas dfgh?

 nb_aleatoire  = random(1,7);
  Serial.println(nb_aleatoire );

random(1,6); de 1 à 5 et non 6

pour le lcd.begin(16,2), ca se met dans le setup, après c'est lcd.setCursor(colonne, ligne) dans le loop

exact, merci pour cette correction
ne regarde pas trop le code, il ne fonctionne pas complètement
il permettra juste à notre ami de ne pas rester bloqué sans savoir quoi faire
à lui de faire le code final en fonction de ce qu'il doit faire

Pourquoi ce que je dois faire ?
Je veux juste faire ça en projet personnel, j’y suis pas obligé !

de ce que le code doit faire

Bye

Ah, ok

Sinon merci pour tout
Je te rajoute du karma !(même si je doute que se soit utile)

bonjour
pouvez vous me dire pourquoi les codes (que je poste pourtant correctement en utilisant les balises) apparaissent en entier et non dans une fenêtre avec ascenseur ?
merci

[quote]. vs. [code]