bonjour,
je suis un novice, et je travaille sur un dé à 5 leds composé sur une breadboard.
Un bouton pression active le lancé virtuel du dé. Une série de chiffres aléatoires apparaissent selon la constellation classique du dé, puis se stabilise pour laisse découvrir le résultat aléatoire offert par le dé.
Le problème dont je fais face se situe sur l'activation du bouton. Il ne fonctionne pas.
voici la déclaration des variables:
//déclaration des variables
//LEDs sur les pins 2 à 6 correspondants aux valeurs de 1-5 du dé (le 6 laissant les leds éteintes)
int ledHautGauche=2;
int ledBasGauche=3;
int ledCentre=4;
int ledHautDroite=6;
int ledBasDroite=5;
//bouton sur le pin 7
int bouton=7;
// initialisation du stockage du résultat aléatoire dans 'nombre'
int nombre;
//////////////////////////////////////////////////////////////////////
Voici la définition de la carte:
void setup()
{
//appel de la fonction randomSeed() pour la séquence aléatoire
randomSeed(analogRead (0));
//pin 2 à 6 en mode OUTPUT
for (int m=2; m<7; m=m++)
{pinMode(m,OUTPUT);}
//pin 7 du bouton en mode INPUT_PULLUP
pinMode (bouton, INPUT_PULLUP);
//appel de la fonction 'setZero()' pour tout éteindre
setZero ();
}
////////////////////////////////////////////////////////////////////////
voici le corps du programme
//boucle principale
void loop()
{
//test de l'état du bouton avec boolean etatBouton
boolean etatBouton = digitalRead (bouton);
if (etatBouton == false)
{for (int affLent=100; affLent<801; affLent=2*affLent) //boucle for qui temporise l'affichage de plus en plus lentement
{
//exctinction brève des LEDs (100ms)
setZero ();
//tirage d'un nombre aléatoire avec la fonction random()
nombre = random(0,6);
//appel de la fonction d'allumage des LEDs
allumage();
delay(affLent);//temporisation
}//sortie de la boucle de temporisation
}//sortie du test bouton
//////////////////////////////////////////////////////////////////////////////
voici les fonctions associées au projet.
// les fonctions du programme
//déclaration de la fonction setZero()
void setZero()
{for (int zero=0; zero<5; zero=zero++)
{digitalWrite(zero+2,LOW);
delay (100);}
}
//la fonction d'allumage
void allumage()
{
if (nombre==1){nombre1();}
if (nombre==2){nombre2();}
if (nombre==3){nombre3();}
if (nombre==4){nombre4();}
if (nombre==5){nombre5();}
//inutile de tester le 0 car on a commencé par tout éteindre
else return;}
// la fonction d'alumage des motifs
void nombre1()
{
digitalWrite(ledCentre,HIGH);
}
void nombre2()
{
digitalWrite(ledHautDroite,HIGH);
digitalWrite(ledBasGauche,HIGH);
}
void nombre3()
{
digitalWrite(ledHautDroite,HIGH);
digitalWrite(ledCentre,HIGH);
digitalWrite(ledBasGauche,HIGH);
}
void nombre4()
{
digitalWrite(ledHautGauche,HIGH);
digitalWrite(ledHautDroite,HIGH);
digitalWrite(ledBasGauche,HIGH);
digitalWrite(ledBasDroite,HIGH);
}
void nombre5()
{
digitalWrite(ledHautGauche,HIGH);
digitalWrite(ledBasGauche,HIGH);
digitalWrite(ledHautDroite,HIGH);
digitalWrite(ledBasDroite,HIGH);
digitalWrite(ledCentre,HIGH);
}
Le montage fait sur le breadboard est établi comme correct.
( pin 2,3,4,5,6 utilisés pour l'allumage ; pin 7 pour le bouton déclaré en INPUT_PULLUP)
Pourquoi ça ne marche pas ?.. La compilation et le téléversement sont acceptés sans erreurs.
Merci ))