Clignotant

Portrait de Shuhei

Bonjour a tous,

Alors voilà récemment, j'ai entrepris un petit projet qui comme le titre l'indique est un prototype de clignotant, malheureusement pour moi comme je débute en électronique et surtout en arduino, je ne m'en sors pas...

Mon problème est le fait que j'utilise un interrupteur a bascule(mais qui reviens a sa position initiale (center off je pense ? :x )) et donc je m'en melle dans mes pinceaux..J'ai trouver quelque tuto a propos des interrupteurs et la façon de programmer la carte pour les utilisés, mais ils ne m'ont pas très bien aider...><

J'éspère que quelqu'un pourrait un peux m'aider a ce sujet , tout aide est la bien venue :D, merci d'avance.

Portrait de Walter

Salut,
il faudrait que tu nous donne ton code et une description précise de ce que tu attends du code.

Portrait de Anonyme

Voilà un code qui fonctionne avec un interrupteur momentané ou bouton poussoir !

A chaque impulsion le clignotant se met en marche ou inversement !

i

int LED = 8; // on peut choisir une autre broche ! Mettre la LED entre la broche 8 la broche GND à travers une résistance de 220 ohms
int Inter = 9 ;// idem ! Mettre l'interrupteur entre la broche 9 et la broche GND
bool Marche = false ;
bool EtatLed = 1 ;
unsigned long Tempo;
int Duree = 500;
void setup() {
  pinMode(LED, OUTPUT);
  pinMode(Inter, INPUT_PULLUP);
  digitalWrite(LED, LOW);
}

void loop() {
  if (digitalRead(Inter) == LOW) {
    Marche = !Marche;
    Tempo = millis() + Duree;
    //****************
    while (digitalRead(Inter) == LOW) {
           Clignote();
       delay(Duree /2);
    }
    //*************** entre les étoiles c'est un anti-rebond !

  }
  Clignote();
}
void Clignote() {
  if (Marche) {
    digitalWrite(LED, EtatLed);
    if (millis() >= Tempo) {
      Tempo = millis() + Duree;
      EtatLed = ! EtatLed;
    }
  }
  else {
    EtatLed = 1;
    digitalWrite(LED, !EtatLed);
  }
}

Portrait de Shuhei

Salut,

Merci pour ta réponse alors voila je te mets mon code (même si je me doute qu'il te fera une crise cardiaque), et le bute c'est que ca puisse clignoter même avec le bouton qui revien a ça position seul..

int ledPin = 13;
int ledPin = 11;
int inPin = 13;
int inPin = 11;                 

void setup()
{
  pinMode(13, OUTPUT);      
  pinMode(11, OUTPUT);
}

void loop()
{
  digitalWrite(13, HIGH);  
  delay(1000);                 
  digitalWrite(13, LOW);    
  delay(1000);   
  digitalWrite(11, HIGH);  
  delay(1000);                  
  digitalWrite(11, LOW);    
  delay(1000);   
}

Portrait de Shuhei

Salut wolfram69

Un grand merci a toi pour se partage, ca va approfondire mes connaissances en arduino :D

Et j'en profite pour répondre plus précisément a ce que tu m'avais demander Walter, en fait mon code doit pouvoir me permettre de faire clignoter la led en faisant basculer qu'une seul fois mon interrupteur (spdt), en gros je ne dois pas laisser pendant les 6sec mon doigt sur l'interrupteur..>< est ce possible ?

Portrait de Anonyme

C'est exactement le fonctionnement de mon code !

Portrait de Walter

Salut, Shutei
Oui c'est ce que fait le code de Wolfframe.

Pour te décrire le principe, dans ton programme tu ne fais clignoter l'état de tes deux broches 13 et 11, que tu as déclarer en sortie.

Il faut que tu déclare la broche qui est connecté à ton interrupteur en entrée digital.
Pour être sûre de l'état de l'entrée (5V, masse), on possitionne une résistance à la masse(pulldown) ou au 5V(pullup), ce qui force l'état de la broche lorsque le circuit n'est pas fermé.
Sur l'arduino ou l'esp8266(nodemcu ou autre, sauf le wemos) une résistance est précablé et activable avec la constante INPUT_PULLUP lors de l'appel de pinMode.
Mais tu peux aussi utiliser ta propre résistance en pulldown et ton intérrupteur connecté au 5V, pour déclencher le clignotement lorsque ta broche passe à l'état HAUT.

Du coup après il faut lire l'état de la broche pour détecter lorsque tu action ton interrupteur et changer l'état d'une variable lorsque ta broche passe à l'état désiré.
Du coup comme tu change l'état de ta variable uniquement quand l'interrupteur ferme le circuit, lorsque le circuit est réouvert, ta variable ne change pas d'état et ton clignotement peut continuer.

Tu peux bien sûre changer l'état de ta variable au bout d'un certains temps, pour que le clignotement s'arrête après un delais.

Si tu veux en apprendre plus sur la programmation, n'hésite pas à poser des questions avec ton programme en copie et essaye plein de comportement différent.

Portrait de Anonyme

C'est faux pour le INPUT_PULL ! Par exemple essaie donc avec la Wemos .......

Portrait de Jetfuzz

Non !!! recommence une autre façon de le dire:

commentaire perso : je connais pas la WEMOS,

Mais du style:

attention sur wemos, INPUT_PULL_UP ne fonctionne pas, il sera donc préférable de privilégier une résistance de rappel.
Mais comme de toute façon Shuhei posait la question pour un arduino, ton commentaire comme le mien est inutile.

Cordialement
Jetfuzz

Portrait de Walter

Merci Jetfuzz, car j'avais effectivement pas compris la remarque.
J'ai corrigé.

Portrait de Jetfuzz

houla Walter la remarque n'etait pas pour toi !!!

c'etait par rapport a ce post

C'est faux pour le INPUT_PULL ! Par exemple essaie donc avec la Wemos .......

Portrait de Walter

Oui, mais je n'avais pas compris la remarque de Wolf :)

Portrait de Anonyme

De quoi tu te mêles je réponds à Walter va jouer ailleurs !

Portrait de Jetfuzz

De quoi tu te mêles je réponds à Walter va jouer ailleurs !

C'est un forum, libre a moi de discuter, et de donner mon avis !!!
Cordialement
Jetfuzz

Portrait de graindesel

Et c'est repartit, un pourrissage de post de plus

Portrait de Jetfuzz

désolé, j'en suis responsable !!!
Cordialement
Jetfuzz

Portrait de Anonyme

Tu remontes un, poil dans mon estime !

Bravo

Portrait de Anonyme

Par contre Condiment 100% quarrelsome !