Défi de @J-M-L - discussion

Ok :joy: merci encore ! Je serai ravi d'aider votre petit fils si il s'inscrit sur le forum ( dans la mesure de mes moyens :sweat: ).

Cordialement
Pandaroux007 :fox_face: / Rémi :wink:

C'est le même processeur.

Mais je n'ai pas encore 65 ans! Je ne suis pas encore du troisième âge.

toutes cette bonne volonté, ça fait chaud au coeur! j'ai déjà du le penser, mais la motivation est quand même une arme redoutable contre les obstacles.
et quelque soit ton résultat, j'espère que tu seras fier de ce que tu as pu apprendre en essayant, et ce que tu as pu réaliser par toi même!

Edit: ah oui, et on entend parfois "la nuit porte conseil". pour le coup c'est très vrai même si c'est pas la solution à tout. je me suis parfois (souvent) pris la tête sur un de mes projets/montage et je tentais à tout prix de m'obstiner. Une petite pause salutaire pour laisser le cerveau digérer la solution et la plupart du temps ça m'aidait:

  • à réaliser qu'un échec n'est pas la fin de tout;
  • envisager d'autres solutions très différentes pour arriver au même résultat;
  • finalement reprendre mon idée initiale avec un peu de recul et arriver à la faire avancer.

Je n'avais pas fait attention à cette remarque de @pandaroux007, oui c'est effectivement le même @vileroi (ATmega 328p) mais avec deux formats différents.

PS: je fais cette remarque uniquement pour que @pandaroux007 prenne bien en compte cette caractéristique. Après la différence de format découle de la taille, c'est en quelque sorte une évidence :wink:

hello, vous n’êtes jamais tombés sur un nano équipé d'un 168 ?

Bon, c'est bien gentil tous ça, mais bon... :smile: J'ai une question, ou plutôt deux :

  • Que devient @flix09 ?
  • pour l'animation des leds, j'utilise des boucles for ? C'est la première méthode qui m'est passé par la tête, mais peu-être y en a t il d'autres, plus simples et plus propres ?
    Par ce que sinon, je peux faire une fonction remplit de digitalWrite et de delay.
    Problème, ça veut dire que ma fonction bloque le code ?

n'oubliez pas qu'il faut aussi vérifier le bouton pendant l'animation donc pas de delay. il faut utiliser millis()

si vous lisez un peu l'anglais:

sinon en français dans les tutos d'eskimon ➜ Introduire le temps • Le blog d'Eskimon

Utiliser millis() n'est pas trop un problème, j'ai trouvé ceci Arduino: Comment utiliser les fonctions delay() et millis() - YouTube
Mais du coup, le code va ressembler a ça ? :

const byte pinLED[] = {12, 11, 10, 9};
#define pinBouton 12
long prevMillis = 0;
int led_delay = 250;
bool etat_led = 0;

void setup()
{
    for (byte i = 0; i < 4; i++) 
  {
    pinMode(pinLED[i], OUTPUT); 
  } // Fin de la boucle for
pinMode(pinBouton, INPUT_PULLUP);
Serial.begin(115200);
Serial.println("demarrage du systeme :");
}
void loop()
{
if(millis() - prevMillis > led_delay)
{
  for(int a = 0; a > 4; a++)
   {
    digitalWrite(pinLED[], HIGH);
   }
 prevMillis = millis();
 }
}

ça fait 1 heure que je tape ça, mais je sais que ça marche pas ... :sob:

Tu fais comme tu veux, c'est toi le chef de ton programme :rofl:
Tu as plusieurs solution, prend celle qui te parle le plus et résous le problème.

  • boucle for while
  • machine à état
  • appel récursif :japanese_ogre:

je connais :slightly_smiling_face:

je connais pas du tout ! :sweat:

oh nonnnn !!!! :sob:

C'est pas grave, c'est juste pour frimer :slight_smile:

du coup prend une boucle c'est très bien.
la machine à état pourrait faire le sujet d'un prochain chalenge :slight_smile:

euh, je propose que l'on attend un peu avant, genre que je finisse celui la d'abord :wink:
pourtant, j'ai déjà entendu parlé de "machine à états" sur le forum...
Mais pitié, pas le "digitalWrite(12, HIGH); delay(250); etc..." ( appel récursif )

tenez - on ne va pas vous laisser sans éléments pour réfléchir

voici un exemple avec les 4 LEDs et un bouton et la bibliothèque Toggle pour gérer le bouton.

vous verrez que la détection de l'appui du bouton est bien effectuée (ça affiche Go ! dans la console) mais le défilement des LEDs continue tant que vous n'avez pas relâché.

pour les 4 autres boutons vous pouvez aussi utiliser Toggle.

Bonsoir @dfgh,
je ne veux pas trop polluer le fil de @pandaroux007 mais c'était pas la version d'avant la nano équipée du 328p ?
Je ne l'ai jamais eu entre les mains ni même trouvée j'ai les vendeurs. Par contre je vais regarder si il y a une grosse différence entre le 168 et le 328 car j'ai trouvé un livre en Français sur la programmation en assembleur du 168. Si il y en a pas trop, j'achèterai ! Car pour le 328p je n'ai rien vu en Français.
Ou bien je n'ai pas su trouver ...

Bonne soirée.

Quelques faheux problémes ne m'ont pas permis de bosser sur ce code...Bravo @pandaroux007!
Bon,donc pourqoi mon code ne marche pas(post 53) :wink:

Merci beaucoup, @J-M-L
Juste une question, est il possible de faire :

for(int i = 0; i < X; i--) 

ou alors

for( int i = 0; i < X; i-1)

P.S : Salut @flix09 :grin: !

Tuto de @j-m-l

ce n'est pas comme ça que ça marche.

Comment un entier que tu as positionner à 12, peut d'indiquer un état haut ?
Pour toi comment marche une variable et notamment leur type ?
Comment cette varaible que tu as défini peut changer de valeur et refléter l'état d'une sortie digital ?

Si i commence a 0 et Que vous enlevez 1 vous partez dans le négatif

La première version avec i++. Serait ok

Dans la seconde il faudrait faire i=i+1

@philippe86220 Merci pour le lien :wink:
@J-M-L ça veux dire que je dois partir de for(int i = 4; i > 0; i--){}
c'est ça ?