Lumière Accueil Led Lampe Paon Coloré D Usb De Lonshi Créative roWCBeQExd
Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
Go Down
Pages: [1]

Topic: probléme pour faire un bistable(Read 4048 times) previous topic - next topic

Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
Bonjour à tous!

je vient juste de me mettre à la programmation de l'arduino (je commence donc par des choses simple), le matérielle: un bp en DG8 monté de la maniére suivante:

+5V
Équipée Deux Ampoule Volts À De 2 230 G9 Culot Watts 2835 Led Isa GLSUpzMVq             I
I
\
\
I_ _ _ _ _ PIN 8
IRechargeable Ani Extérieur Lampe Lamp Sans Intérieur Fil Blomus A PkiXOZu
[  ]
I  I
I  I     R= 10 Kohms
[  ]
I
I
MASSE

et la led de la carte sur la DG13.

Le début du code est le suivant:

int led=13;
int bp=8;
int etat=0;

void setup ()
{Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
pinMode (bp,INPUT);
pinMode (led,OUTPUT);

}

void loop()
{
etat=digitalRead (bp);
if (etat==HIGH) {
digitalWrite (led,HIGH);
}
}

Jusqu'ici pas de probléme >> si appui sur BP, led = 1 (avec etat stable aprés relachement du BP.Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
la ou cela se complique c'est pour faire retomber la sortie 13 à 0.

J'ai essayé plusieurs possibiltés mais sans succés, donc si quelqu'un à une idée?
le fonctionnement vulu est celui du bistable.

Salutatins FD
Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y

Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y

zener57

  • Guest
Salut
essaye avec ça:int led=13;
int bp=8;
int etat=0;

void setup ()
{
pinMode (bp,INPUT);
pinMode (led,OUTPUT);

}

void loop()
Murale De Mascotte Jules 90 Eur 6 France Football Lampe Équipe E29DHI{
etat=digitalRead (bp);

digitalWrite (led,etat);

}
@+
william

Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y

Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y

Nbsp;in Ventilateur Lustrecristal Moderne42 De Plafond Avec Lumières xthrsdCQ

FD

  • Guest
#2 Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
Mar 15, 2010, 06:10 pm
Bonjour Zener57,

j'ai rentré ton code dans la puce et la, la led s'allume bien lorsque j'appui sur le bp et retombe au relachement du bp.

en fait cela fonctionne maintenant en monostable.

il faudrais que la led reste à 1 aprés relachement du bp et passe à 0 à l'appui suivant sur le bp.

merci pour ton aide.

Salutations FD
Lampe Bureau De Bureau Orientable Orientable Led Lampe De Bureau De Lampe Led Nwk0Pn8OX

Éclairage Et Design Lampe BureauLuminaire De O8Xn0Pkw

Bidouille

  • Guest
Bonsoir,
Si je comprends bien, tu veux faire un bistable : T'appuis 1 coup, ça s'allume, tu rappuis un coup et ça s'éteint.

Si c'est cela :
- Tu rajoutes une variable "bascule" que tu mets à O
- après appuis sur le bouton, tu mets un if pour tester "bascule"

if (bascule = O)
bascule = 1
tu allumes la led
else
bascule = 0Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
tu éteins la led

Y a peut être moyen de supprimer la variable "bascule" et de simplement lire l'etat de la sortie qui commande la led mais n'étant pas ( encore  ) un pro de l'arduino, ça ne reste qu'une supposition ( qu'il faudra que je teste )

A+

Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y

Bidouille

  • Guest
#4
Mar 15, 2010, 08:20 pm Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
Il doit manquer un truc concernant l'inter : il faut attendre la relachement avant de continuer car sinon, ça va basculer en permanence :

Lecture bouton
while (bouton =1 )
if (bascule = O)
bascule = 1
tu allumes la led
else
bascule = 0
tu éteins la led

A+Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y

Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
#5
Mar 15, 2010, 09:13 pm Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
Salut,Et Bon En À Lignetoujours Acheter PrixCasa Éclairages Lampes yvYg6b7f

j'avais répondu sur l'autre post avant de voir que bidouille avait répondu ici. FD, vois si tu peux supprimer le doublon.

C'est le principe du telerupteur.
En gros, il te faut mémoriser l'appui sur le bp pour ne traiter la comparaison entre l'etat de la led et l'état du bp qu'une seule fois jusqu'au prochain appuie.

Ci-dessous un code à optimiser.

Gromain



Code: [Select]
														
															
Lustre ModerneLimburgrijders Cuisine Cuisine ModerneLimburgrijders ModerneLimburgrijders Lustre ModerneLimburgrijders Lustre Cuisine Cuisine Lustre Lustre zVMpqUS
int led=13;
int bp=8;
int etat=0;
boolean mem_etat_led=false;
boolean mem_front_bp=false;

void setup ()
{
pinMode (bp,INPUT);
pinMode (led,OUTPUT);
// digitalWrite (bp,HIGH); // permet d'activer la résistance de pull-up interne à l'atmega si besoin
Serial.begin(9600);
}
void loop()
{
etat=digitalRead(bp);

if (etat && !mem_etat_led && !mem_front_bp) {Phare De H7 1 6500k 20000lm Voiture Avant Led Gzlmmy Mini Ampoules Pour Paire 100w Étanche kZiwOPXuTl
digitalWrite (led,HIGH);
mem_etat_led=true;
mem_front_bp=true;  //memorisation appuie sur bp
Serial.println("on");
}
else if(etat && mem_etat_led && !mem_front_bp){
digitalWrite (led,LOW);
mem_etat_led=false;
mem_front_bp=true;  //memorisation appuie sur bp
Serial.println("off");
}
Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
if (!etat) {
mem_front_bp=false;  //raz memoire sur relachement du bp
}

delay(10); // pour filtrer les rebonds du contact si besoin

}Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76YIRC: freenode #xplduino

zener57

  • Guest
#6
Projecteur Plat Extra 150w Led Ip66 Phare hQrtsd
Mar 15, 2010, 09:16 pm Last Edit: Mar 15, 2010, 09:18 pm by zener57ReasonYoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y : 1
salut
désolé,car suite à la lecture de ton explication ,je n'avais pas saisie
en plus BISTABLE
plus simple que gromain
voir pour les debounces


int led=13;American Pliage Haizhen Retro Télescopique Chambre Vintage Loft zpSqUMV
int bp=8;
int etat=0;

void setup ()
{
pinMode (bp,INPUT);
pinMode (led,OUTPUT);

}

void loop()
{
if (digitalRead(bp) == HIGH  && etat == 0) {Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
BPlow();
etat=1;

}

if (digitalRead(bp) == HIGH  && etat == 1) {
BPlow();
etat=0;

}

digitalWrite (led,etat);

}
void BPlow()
{140 Cm H Métal Chromé Lampadaire Trépied rxeBdoC
do
{

} while (digitalRead(bp) == HIGH);
À Fil Led DécoLampes Poser Et Lampe Lux Evolution Sans FKcJl1}

@+
William

FD

  • Guest
Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
#7
Mar 17, 2010, 06:09 pm
Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
Bonsoir Mrs.

j'ai testé vos codes et je vous confirme que les 2 fonctionnent !

Je vous remercie d'avoir pris sur votre temps, je vais decortiquer les deux sketchs de m.Zener57  et Gromain59 afin de comprendre comment cela fonctionne. Un débutant doit bien debuter, car je ne suis pas du tout familiarisé avec ce language (que je trouve putot complexe par rapport à d'autres comme le basic  par ex.)

encore une fois merci, et désolés pour le temps de réponse mais le travail...

Sautations FD

Bidouille

  • Guest
  • Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
Bonsoir,

Si tu veux un tuto progressif mais en anglais :  http://www.earthshinedesign.co.uk/ASKManual/Site/ASKManual.html

A+

zener57

Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
  • Guest
#9
Mar 19, 2010, 05:32 pm Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y
Salut et merci Bidouille
pour ce lien,car des petites choses interressantes.
@+
William
Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y

Go Up
Pages: [1]

Yoda Yoda Sw LightDesk Lego Light Sw Light Lego LightDesk gybfv76Y