Bonjours, je n'arrive pas faire fonctionner complétement mon programme, j'aimerais bien avoir l'aide de quelqu'un. Merci d'avance
Voici ce que je veux faire:
Si capteur de lumière est de moins de 200
Alors
Si bouton 1 pressé?
Alors
Mettre l'état de la broche sur haut (car module relais et le courant doit passer)
Attendre 5 seconde
Mettre l'état de la broche sur bas (car le courant ne doit pas passer)
Sinon
Si bouton 2 pressé?
Alors
Mettre l'état de la broche sur haut (car module relais et le courant doit passer)
Attendre 5 seconde
Mettre l'état de la broche sur bas (car le courant ne doit pas passer)
Sinon
Si bouton 3 pressé?
Alors
Mettre l'état de la broche sur haut (car module relais et le courant doit passer)
Attendre 5 seconde
Mettre l'état de la broche sur bas (car le courant ne doit pas passer)
La rédaction de votre message ne répond pas aux critères attendus. Il n'aura sans doute pas de réponse tant que vous n'aurez pas pris en compte et mis en application les recommandations listées dans "Les bonnes pratiques du Forum Francophone”
Merci d'éditer votre post pour rajouter les balises de de code, c'est quasiment illisible tel quel:
sélectionner la partie du texte qui correspond au code
appuyez sur l'icône </> dans la barre d'outils pour indiquer que c'est du code
(Assurez vous aussi d'indenter le code correctement dans l'IDE avant de le copier pour le coller ici. Cela se fait en pressant ctrlT sur PC ou cmdT sur un Mac)
et si vous ne faites pas l'effort non plus de remettre en forme correctement le premier message ➜ cliquez le petit crayon en dessous de votre message et ajoutez au moins les balises de code correctes (trois backtick ``` )
La première chose "visible" est que tu utilises, pour tes boutons, le mode PULL_DOWN, c'est à dire que tu vas lire un 1 quand le bouton est pressé. Or pour ce mode de fonctionnement, il faut des résistances de PULL_DOWN d'environ 10k ohm.
Mais il y a plus simple à faire, c'est l'utilisation du mode PULL_UP, pour ça, la plus part du temps, il n'est pas nécessaire de d'ajouter des résistances, les internes de l'Arduino suffisent.
Ces résistances sont activées par: pinMode(boutonPoussoir1,INPUT_PULLUP);
et le bouton pressé est lu par if(digitalRead(boutonPoussoir1) == 0)
et tes boutons poussoirs sont câblés au GND au lieu du +5V.
Cela dit, j'ai essayé ton programme avec des PULL_DOWN de 10k, il fonctionne très bien.
Il y a pas mal d'autres choses à dire sur ton programme, je préfère, si tu le désires, en faire une correction tout en t'expliquant le pourquoi du comment.
Pour encadrer le code ce n'est pas 3 apostrophes, mais 3 backticks <ALT GR>+7. J'ai fait la correction.
Pourquoi réinventer delay()??
Pourquoi cette déclaration tordue pinMode(A0+2,INPUT); autant utiliser directement A2
Cette ligne if(((digitalRead(2))==(1))){
devrait être écrite if(digitalRead(2) == HIGH){
car digitalRead() retourne HIGH ou LOW
Cette ligne while(millis() < endTime)_loop();
s'écrit while(millis() < endTime);
Cette fonction est inutile
void _loop(){
}
C'est une bonne pratique de nommer les signaux.
Au lieu d'écrire pinMode(2,INPUT);
Il vaut mieux déclarer en tête du programme const byte BOUTON1 = 2;
et ainsi ensuite tu écris pinMode(BOUTON1, INPUT);
ou if(digitalRead(BOUTON1) == HIGH)
Cela permet de savoir de quoi on parle
Autrement, pour savoir ce qu'il se passe, il faudrait faire afficher les valeurs retournées par analogRead() et les digitalRead() pour comprendre pourquoi le fonctionnement n'est pas correct.
Ce que je veux dire, c'est qu'il y a erreur sur la terminologie, il n'y a ni pull up, ni pull down. @poupou_3 considère simplement que le signal est actif au niveau haut.
Il n'y a pas erreur sur la terminologie, il n'y a ni PULL_UP et ni PULL_DOWN comme je l'ai signalé, c'est là qu'est le problème, bien sûre @poupou_3 lit que le niveau haut, mais en l'absence d'un signal comme un commutateur "entre deux" ou un bouton "ouvert" que lit on sur une pin initialisée par avec pinMode(2,INPUT); ?
Il n'y a pas de bouton ouvert. Sur le schéma le +5V ET le GND arrivent sur les extrémités des inverseurs qui retournent donc soit +5V soit GND et s'il y a des rebonds c'est transitoire donc ça se filtre (et de toutes les façons, cela ne dure pas 5 secondes).
Maintenant peut-être qu'il y a un problème de câblage (fil coupé, poussoirs câblés à l'envers, ...) ou de breadboard.