problème boucle for

Bonjour, je débute avec Arduino et malgré de nombreuses lectures de doc, de site explicatif visité ,et de forum je n’arrive pas à trouver la solution qui à l’air simple ( donc pour moi compliqué) pour réaliser mon projet.
j’aimerais qu’ en appuyant sur un bouton poussoir une fois, la boucle for s’ incrémente de 0 à 10 ,
arrivé à 10 la boucle s’arrête et la led s’allume.
et un deuxième appuie sur le bouton poussoir fait l’inverse de 10 à 0 et la led s’ éteint etc…
dans mon code j’arrive à incrémenter de 0 à 10 led allumée mais je n’arrive pas à trouver pour faire l’ inverse.
Ca fait quelque heures que je bloque sur se code à essayer quelques combinaisons que je connais et je n’en connais pas beaucoup et qui me paressent bien, mais je n’ai pas trouvé la bonne. :confused:

Voici mon code .
Merci de votre aide.

 int LED = 13 ;
 int BP   =   2 ;

  int etat_BP              ;
  int nombre_de_fois  ;
  boolean fonct_cligno ;
 
 void set up ( )
 {
 pinMode ( LED , OUTPUT )         ;
 pinMode ( BP , INPUT_PULLUP ) ;

 nombre_de_fois = 10   ;
 fonct_cligno       = true ;
 }

 void loop ( )
 {
 etat_BP = digitalRead ( BP ) ;
 if ( etat_BP == LOW ) 
 {
 if ( fonct_cligno ) 
 {
 for ( int t = 0 ; t < nombre_de_fois ; t ++ )
 {
  digitalWrite ( LED ,  LOW ) ;
  delay ( 500 ) ;
  digitalWrite ( LED , HIGH ) ;
  delay ( 500 ) ;
  }}}}

je ne sais pas si c’est comme ça.

Bonsoir,

Corrigez votre post en plaçant votre code entre balises comme spécifier dans les posts épinglés.

Utilisez aussi la fonction d’indentation automatique de votre code avec les touches CTRL + t dans l’IDE Arduino afin de faciliter la lecture de celui-ci.

Merci

t++ ça équivaut à t = t +1 .
Le “contraire” c’est t-- :wink:

BrUnO14200: t++ ça équivaut à t = t +1 . Le "contraire" c'est t-- ;)

bonsoir merci pour votre réponse j'ai essayé pas mal de combinaison avec t-- mais je n'y arrive pas pourriez vous m'indiquez le code merci.

Un truc comme ça :

for(i=10;i>0;i–)

Ca va faire 10, 9 , 8 jusqu’à 1 :wink:

Salut , genre ca a la place de la derniere partie de ton code :

for ( int t = nombre_de_fois ; t >= 0 ; t -- )
{
 digitalWrite ( LED ,  LOW ) ;
 delay ( 500 ) ;
 digitalWrite ( LED , HIGH ) ;
 delay ( 500 ) ;
 }}}}

azerthuiop:
Bonjour, je débute avec Arduino et malgré de nombreuses lectures de doc, de site explicatif visité ,et de forum je n’arrive pas à trouver la solution qui à l’air simple ( donc pour moi compliqué) pour réaliser mon projet.
j’aimerais qu’ en appuyant sur un bouton poussoir une fois, la boucle for s’ incrémente de 0 à 10 ,
arrivé à 10 la boucle s’arrête et la led s’allume.
et un deuxième appuie sur le bouton poussoir fait l’inverse de 10 à 0 et la led s’ éteint etc…
dans mon code j’arrive à incrémenter de 0 à 10 led allumée mais je n’arrive pas à trouver pour faire l’ inverse.
Ca fait quelque heures que je bloque sur se code à essayer quelques combinaisons que je connais et je n’en connais pas beaucoup et qui me paressent bien, mais je n’ai pas trouvé la bonne. :confused:

Voici mon code .
Merci de votre aide.

 int LED = 13 ;

int BP   =   2 ;

int etat_BP              ;
 int nombre_de_fois  ;
 boolean fonct_cligno ;

void set up ( )
{
pinMode ( LED , OUTPUT )         ;
pinMode ( BP , INPUT_PULLUP ) ;

nombre_de_fois = 10   ;
fonct_cligno       = true ;
}

void loop ( )
{
etat_BP = digitalRead ( BP ) ;
if ( etat_BP == LOW )
{
if ( fonct_cligno )
{
for ( int t = 0 ; t < nombre_de_fois ; t ++ )
{
 digitalWrite ( LED ,  LOW ) ;
 delay ( 500 ) ;
 digitalWrite ( LED , HIGH ) ;
 delay ( 500 ) ;
 }}}}



je ne sais pas si c'est comme ça.

Bonjour merci pour votre réponse, mais ça ne fonctionne toujours pas
quand j’appuie 1 fois ça incrémente et à la fin la led reste allumée,
mais quand j’appuie une deuxième fois, pour décrémenter, une fois le cycle
revenu à 0 la led reste toujours allumée , il faudrait qu’elle soit éteinte.
à la fin de l’incrémentation led allumée.
à la fin de la décrémentation led éteinte.
merci de votre aide et de votre patience.

for ( int t = nombre_de_fois ; t >= 0 ; t -- )
{
 digitalWrite ( LED , HIGH ) ;
 delay ( 500 ) ;
 digitalWrite ( LED ,  LOW ) ;
 delay ( 500 ) ;
 }}}}

............

Bonjour,

Il suffit de mémoriser l’état de la led avant le clignotement et de mettre l’état inverse après clignotement

void loop ()
{
  etat_BP = digitalRead (BP) ;
  if (etat_BP == LOW)
  {
    bool etat = digitalRead(LED);
    for (int t = 0 ; t < nombre_de_fois ; t ++)
    {
      digitalWrite (LED ,  LOW) ;
      delay (500) ;
      digitalWrite (LED , HIGH) ;
      delay (500) ;
    }
    digitalWrite(LED, !etat);
  }
}

MERCI BEAUCOUP A VOUS ça fonctionne , 2 après midi pour moi à chercher et vous en 2 mn c'est fait . et surtout merci pour les explications ( le plus important ) se soir je vais moins réfléchir à ce code grrr merci encore et bonne soirée. :)