Arduino UNO etc : Rythmer différentes actions avec millis() et micros() pour éviter d'utiliser delay

  Рет қаралды 25,372

Eric PERONNIN

Eric PERONNIN

Күн бұрын

Пікірлер: 69
@rodolphe8859
@rodolphe8859 Жыл бұрын
Merci encore de rendre cette discipline accessible à ceux qui n'ont pas eu cette chance de faire des études dans ce domaine
@olivierj.2435
@olivierj.2435 3 жыл бұрын
Incroyable qu'une chaîne de cette qualité n'ait pas plus d'abonnés. Merci pour votre travail monsieur Peronnin
@thierryherve9811
@thierryherve9811 2 жыл бұрын
Vraiment excellent. Très bonne pédagogie.
@user-cz6mk2lk4z
@user-cz6mk2lk4z 8 ай бұрын
Cette vidéo a été (pour moi) particulièrement instructive. Merci M.Peronnin
@marcabentin4438
@marcabentin4438 2 жыл бұрын
la première fois j'avais pas tout compris cette fois ci c'est beaucoup plus clair preuve que les cours sont profitables merci beaucoup 😀
@Cubdadure
@Cubdadure 3 жыл бұрын
Vous êtes absolument incroyable !! Une vidéo un jour, des commentaires, des échanges et le lendemain une vidéo « corrective » prenant en compte le tout. Je ne peux que dire « bravo, merci et respect »
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Je ne peux décemment pas laisser des éléments erronés dans mes vidéos. Les commentaires sont une vraie richesse. Je regrette vraiment que KZbin ne permette pas de mettre à jour une vidéo. Les vidéos taguées éducatives devraient offrir cette possibilité. Merci pour votre message.
@gerardkia6508
@gerardkia6508 3 жыл бұрын
Je partage complétement. Bravo et merci
@alladiagne2291
@alladiagne2291 4 ай бұрын
Merci pour ce magnifique travail
@benjamin3682
@benjamin3682 2 жыл бұрын
Bonjour, Merci, car la qualité du fond et de la forme sont super.
@ZinzinsIA
@ZinzinsIA 2 жыл бұрын
super vidéo c'est vraiment de l'or des explications aussi fouillées ! petite astuce pour ceux qui voudraient remplacer rapidement millis par micros on peut faire ctrl+f on tape l'expression qu'on veut remplacer (millis ici) et on indique celle qui doit la remplacer (micros) et y a plus qu'à appuyer sur tout remplacer
@patrickdelpit2289
@patrickdelpit2289 Жыл бұрын
Vidéos toujours très intéressantes ! La pédagogie est toujours au rendez-vous. Bravo
@ektoplazm6537
@ektoplazm6537 7 ай бұрын
Très intéressant comme exercice pour un débutant. Vous auriez pu parler de la notion de mono-coeur pour expliquer le bannissement de la fonction delay(), et la notion de macro concernant basculeLED. J'aurais aussi voulu voir la combinaison de millis et micro (avec modulos) pour obtenir de la précision sur 49 jours ^^. Dommage, je vais devoir réfléchir !! edit : voir la vidéo +2 suivante qui explique la gestion des overflow de variables.
@talham8331
@talham8331 2 жыл бұрын
Merci pour l effort el la méthode d explication
@pascaldemarichalar8131
@pascaldemarichalar8131 9 ай бұрын
Bonjour, Bravo pour vos vidéos !
@stephanedezons3488
@stephanedezons3488 3 жыл бұрын
Bonjour et merci pour vos vidéo ! Il est parfois difficile d'obtenir des informations claires sur des concepts de base qui méritent néanmoins d'être bien compris et vous le faites très bien ! Encore merci !
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Merci Stéphane. Et si un concept venait à moins bien passer, n'hésitez pas à le signaler.
@navarremicheluc6570
@navarremicheluc6570 2 жыл бұрын
Meme avis (que Olivier J)... j aborde en debutant complet Arduino et decouvre par ce biais le langage C. encore merci pour tout le travail en amont ! Pouce, pouce pouce et re-pouce !! ;-)
@alaincplx6124
@alaincplx6124 3 жыл бұрын
Merci beaucoup pour ces vidéos très pédagogiques
@fabricemotard4312
@fabricemotard4312 3 жыл бұрын
Très bonne vidéo simple et efficace ! Bravo encore 👏👏
@adamaadam8073
@adamaadam8073 3 жыл бұрын
Vidéo de qualité, comme d'habitude. Hâte de voir les videos montrant comment utiliser les moteurs
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Merci. Pour les moteurs, ça viendra mais ce n'est pas pour demain...
@paulragot6155
@paulragot6155 3 жыл бұрын
Bonsoir Eric, MERCI pour cette vidéo qui m'a été très profitable. En effet, je suis parti du cahier des charges et j'ai essayé de réaliser ce qui était demandé. J'ai eu une approche algorithmique différente pour arriver au même résultat. J'ai eu particulièrement des difficultés pour gérer l'overflow lorsque le compteur repasse à zéro. Ta solution est plus élégante, plus simple et plus concise que la mienne. Ton code m'a rafraîchi la mémoire sur la bonne utilisation des define : - convention utile, les mots définis sont en majuscules, - et les "define" paramétrés d'instructions sont convertis lors de la première passe du compilateur. disgression amusante : j'avais oublié d'initialiser les ports de sortie (pinMode ... OUTPUT) et bien cela fonctionnait quand même, mais avec une luminosité plus faible. Cordialement
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Très intéressante ta dernière remarque. Il y a une explication en plus. Sauras-tu la trouver ? Si d'autres lisent ces échanges, j'attends votre proposition d'explication. Pas très difficile mais il faut regarder le fonctionnement de l'ensemble du bloc entrée/sortie, ce que je n'ai pas encore présenté (figure 14.2 de la datasheet).
@paulragot6155
@paulragot6155 3 жыл бұрын
@@EricPeronnin Désolé, pour le buffer de sortie, je n'ai aucune idée sur le sujet. En revanche, dans ta vidéo suivante (pushbutton) j'ai bien compris les tensions sur VIN.
@EricPeronnin
@EricPeronnin 3 жыл бұрын
En fait, quand la broche est en entrée, l'activation de la résistance de pullup se fait par une écriture sur la sortie. Donc dans ton programme tu actives et désactives périodiquement la résistance de pullup. Comme elle est assez élevée, la LED s'allume peu lorsque la résistance de pullup est activée.
@jfmahe1407
@jfmahe1407 3 жыл бұрын
Merci.
@thierryjean8726
@thierryjean8726 3 жыл бұрын
Bonjour et merci pour la qualité des explications. Personnellement plutôt que "dernierRouge = dernierRouge + DEMI_PERIODE_ROUGE;" j'aurais écrit " dernierRouge = millis();" ce qui aurait ajouter une erreur sur le long terme qu'il n'y a pas avec ta solution !
@technophile01
@technophile01 3 жыл бұрын
Salut professeur ! J ai vu cette vidéo sur PC la nuit dernière : Magistral ! J ai compris enfin comment utiliser la fonction millis . Vous l avez expliqué mieux que quiconque (à ma connaissance). Je m'abonne à votre chaîne et j attends avec impatience les vidéos suivantes..
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Merci. Et celle-ci est une mise à jour de celle de cette nuit que j'ai du supprimer.
@technophile01
@technophile01 3 жыл бұрын
@@EricPeronnin j ai remarqué ce matin sa suppression et je n ai pas compris. Je reverrai cette deuxième version. Salut !
@momokad7606
@momokad7606 3 жыл бұрын
enfin j ai compris
@bernardrousseau7303
@bernardrousseau7303 3 жыл бұрын
Bravo Eric pour la clarté de tes explications qui impliquent pour toi de naviguer entre les écrans de façon surprenante, "chapeau". Une question pourtant, je débute et comment connaitre l'ordre des vidéos qui ne concernent qu'arduino?
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Bonjour Bernard et merci pour ton commentaire. Pour l'ordre, le plus simple est de consulter la playliste : kzbin.info/aero/PLuQznwVAhY2V7Uh0aHOgBvaiqRw9VeCis
@bernardrousseau7303
@bernardrousseau7303 3 жыл бұрын
Merci de ta réponse, bon courage pour la suite!!
@yveslemoine5724
@yveslemoine5724 Жыл бұрын
Bonjour et merci pour cette vidéo très intéressante, serait-il possible d'avoir un exemple similaire mais avec les demi périodes réglables par deux potentiomètres ?
@tohouenoucomlangildas7434
@tohouenoucomlangildas7434 Жыл бұрын
Bonjour Monsieur Merci pour vos tutoriels; cela aide énormément J'ai une petite difficulté que j'aimerai vous soumettre. En effet, j'aimerai faire fonctionner deux LED en utilisant la fonction millis mais je n'y arrive pas. Je veux juste qu'au démarrage, que la première LED reste allumé pendant 5minutes et dès qu'elle s'éteignes, la seconde commence par clionter (20 secondes éteinte et 1 minutes allumé). Je ne suis pas un bon programmeur, mais j'espère trouver de l'aide ici.
@pierreolivier7022
@pierreolivier7022 2 жыл бұрын
BONJOUR es que les commande servo_moteur ne vont pas perturbé la fonction millis() merci pour votre réponse et je me suis abonné et partagé. a bientôt.
@talham8331
@talham8331 2 жыл бұрын
Est ce qu' il un temps d erreur pour le temps de l interval .ex interval d allumage 150000+/- 30 ms
@ownedbyeasan
@ownedbyeasan 3 жыл бұрын
Bonjour, avant tout un grand merci pour vos vidéos très pédagogiques et ludiques ! Je n'ai pu m'empêcher de constater que la vidéo n°6 de la playlist "Programmer en C avec Arduino" était classée en privé, est-ce volontaire?
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Bonjour. C''était une première version d'une vidéo que j'ai finalement refaite et qui a pris la relève. J'ai supprimé la vidéo de la playliste suite à votre remarque. Merci
@tetar8419
@tetar8419 3 жыл бұрын
Bonjour super la vidéo J’essai de reprendre votre code pour l’utiliser a mes besoin mais je bloque ou alors je me mélange J’ai une led bleu qui va être allumé 1s Quand la led bleu s’éteint Je veux que la led rouge s’allume pendant 3s Quand la led bleu s’éteint la led rouge reviens pendant 1s Etc a l’infini Es que vous pouvez m’éclairer Je viens de découvrir votre chaîne grâce à cette vidéo et franchement je reprend tout votre playlist au top même si s’est vraiment pousser pour un débutant comme moi
@doubytchou4254
@doubytchou4254 3 жыл бұрын
Bonjour, Merci pour ces vidéos très enrichissantes même quand on connais un peu l'univers Arduino. Avec l'apport "d’écriture magique"!! J'ai une petite question : Quel est l’intérêt d'utiliser une variable "static" dans la boucle plutôt que de la declarer celle-ci en "public" dans ce genre de programme qui ne comporte au final qu'une seule boucle? En vous remerciant Cordialement
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Bonjour. L'intérêt est généralement d'éviter l'usage de variables globales (donc public) quand ce n'est pas utile. L'objectif est de prendre les bonnes habitudes de ne pas tout visible partout quand ce n'est pas utile.
@stephanefouret304
@stephanefouret304 3 жыл бұрын
Bonjour Eric , toujours de bonnes videos , j'"ai suivi et appliqué ton tuto pas moyen de me servir de #define avec la fonction basculeLED , j'y suis arrivé en faisant une void , on attend la prochaine .Je vais tenter de refaire en definissant une periode haute differente de la periode basse..
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Bonsoir. L'utilisation d'un define comme ceci fait parti des possibilité standard en C et C++. Je vous invite à copier coller le code source disponible après la vidéo sur la page geii.eu/index.php?option=com_content&view=article&id=235&Itemid=945 Il n'y a aucune raison pour que cela ne fonctionne pas. L'usage sous la forme d'une fonction est bien sûr possible comme vous l'avez fait. Tenez moi au courant.
@wassinimag1031
@wassinimag1031 2 жыл бұрын
merci pour la qualité d"enseignement S.V.P j'ai 2 programme 1 pour carte RFID( contrôle accès immeuble autre code pour éclairage immeuble avec 5 buttons poussoir séparément les codes fonctionne bien mais quand j' assemble les 2 code l'un des deux fonctionne et je voudrait que fonctionne en mémé temps pouvait vous m'aider pour çà merci pour
@rayanetournier6260
@rayanetournier6260 2 жыл бұрын
Bonjour, que penser de la solution qui teste millis modulo periode == 0 ? si le reste de la division est nul, on switch l'état de la LED concernée. C'est un plaisir d'avoir pu trouver vos vidéos M. Peronnin!
@EricPeronnin
@EricPeronnin 2 жыл бұрын
Bonjour Rayane. Le modulo est un bon moyen si la période est une puissance de 2. Si ce n'est pas le cas, l'arrivée en butée de millis() ou de micros() aboutira au déclenchement du modulo avec une erreur. Comme ce n'est pas si souvent que cela, il y a de nombreux usages où cela fera l'affaire.
@abdoulrazakharo1183
@abdoulrazakharo1183 2 жыл бұрын
Salut Monsieur Eric, merci pour le contenu très enrichissant que vous nous partagez ;j'ai utilisé la fonction millis dans un programme qui n'a pas fonctionné et je voudrais demander votre aide; en fait c'est un programme qui va permettre à deux relais de s'activer au même? moment quand on appui sur un bouton poussoir (on peut utiliser un capteur aussi) avec une temporisation différentes ;donc les deux relais se désactive à des moments différentes;15 seconds pour l'autre et 2 minutes pour le dernier relais ; le résultat que j'obtient est la suivante ;quand j'appuie sur le bouton poussoir les relais 1et 2 se désactive respectivement entre 15seconde et 2 minutes mais au relâchement ils prennent la même durée pour se désactivé ;pourtant je voudrais qu'il se désactive en même temps voici mon programme const byte relais1 = 7; const byte relais2= 8; const unsigned long relais1interval = 15000; const unsigned long relais2interval = 12O000; unsigned long relais1timer; unsigned long relais2timer; int Boutton_poussoir=2; void setup () { pinMode (relais1, OUTPUT); pinMode (relais2, OUTPUT); pinMode(Boutton_poussoir,INPUT_PULLUP); relais1timer = millis (); relais2timer = millis (); } void basculer_relais1() { if (digitalRead (Boutton_poussoir) == LOW) digitalWrite (relais1, HIGH); else digitalWrite(relais1,LOW); relais1timer = millis () } void basculer_relais2 () { if (digitalRead (Boutton_poussoir) == LOW) digitalWrite (relais2, HIGH); else digitalWrite(relais2,LOW); relais2timer = millis (); } void loop () { if ( (millis () - relais1timer) >=relais1interval) chronorelais1 (); if ( (millis () - relais2timer) >= relais2interval) chronorelais2 (); }
@alainbreysse4995
@alainbreysse4995 3 жыл бұрын
Bonjour Eric, Comme d'habitude très bonne vidéo, on attend la suite avec impatience. Pouvez-vous me donner votre avis sur l'analyseur logique "Inno-Maker LA2016". Encore merci pour cette vidéo.
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Bonsoir et merci pour le commentaire. Je ne connais pas cet analyseur. Je regarderai...
@AmesisProject
@AmesisProject 2 жыл бұрын
Hello ! tu as oublié de mettre ton lien ici. Je te mets un marqueur si tu souhaite le mettre 09:45. merci pour tes vidéos, je me forme bien la. Je bouffe la série arduino. 👍 Tiens je te fais gagner du temps. Tu as énoncé le static ici kzbin.info/www/bejne/d4GxkIpmYs2Va6M a 16:59
@EricPeronnin
@EricPeronnin 2 жыл бұрын
Bonjour. Merci pour ton commentaire. Comme il y a déjà une fiche pour la vidéo sur les variables à 08:52, il n'est pas possible d'en remettre une en 09:32... à 45.
@AmesisProject
@AmesisProject 2 жыл бұрын
@@EricPeronnin ha yess je vois !
@laurelehardy1282
@laurelehardy1282 Жыл бұрын
bonjour, super j'ai tout compris mais ce que je n'arrive pas c'est par exemple faire clignoter 3 fois une seconde toutes les 20 secondes. là oui je bloque
@loicbon
@loicbon 3 жыл бұрын
Bonjour, je compte me lancer avec Arduino, pour un projet où une action devra se produire plusieurs minutes après avoir appuyé sur un bouton. Pour utiliser la fonction millis() que vous présentez, une carte Arduino uno suffit-elle? Je pose cette question car je vois qu'il existe des cartes horloge additionnelle Je vous remercie par avance pour votre réponse.
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Bonjour. Oui la fonction millis est largement suffisante si vous n'avez pas besoin d'une grande précision, ce qui est souvent le cas. Si vous aviez besoin de connaître l'heure réelle à tout instant, il faudrait alors ajouter une des cartes que vous évoquez. Elles ont aussi un autre intérêt, celui d'abaisser la consommation de l'ensemble avec la possibilité de réveiller la carte Arduino au moment opportun en générant une demande d'interruption.
@loicbon
@loicbon 3 жыл бұрын
@@EricPeronnin Merci
@PhiphiBelgium
@PhiphiBelgium 3 жыл бұрын
Merci Eric pour cette intéressante vidéo :) J'ai malgré tout quelques questions: - dans le if((millis() - dernierRouge) >=DEMI_PERIODE_ROUGE){ dernierRouge = dernierRouge + DEMI_PERIODE_ROUGE; } Comment pourrait on élégamment, gérer l'overflow du compteur? (nous arrivons tôt ou tard dans la situation ou millis() < dernierRouge ? non?
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Bonjour. L'overflow est déjà géré par le principe de codage des entiers non signés. Si vous exécutez ceci : Serial.begin(115200); uint8_t millis = 10; uint8_t dernier = 250; uint8_t diff = millis - dernier; Serial.println(diff); Vous verrez 16 apparaître dans le terminal, ce qui correspond bien à la différence que l'on aurait obtenu sans l'overflow, c'est à dire avec millis = 256+10 = 266 Si maintenant vous voulez calculer la soustraction 10 - 250, il va falloir ajouter un 9è bit (qui n'existe pas sur 8 bits donc) à 10 pour calculer la soustraction et finalement calculer 266 - 250 = 16
@PhiphiBelgium
@PhiphiBelgium 3 жыл бұрын
@@EricPeronnin Merci beaucoup pour l'éclaircissement :)
@miragebleu5055
@miragebleu5055 3 жыл бұрын
Je pense qu'il faut aussi prendre en consideration les cycles machine des fonctions micro et millis, non?
@alexisdelauzun4015
@alexisdelauzun4015 3 жыл бұрын
Bonjour Éric, Tout d'abord merci de prendre le temps d'expliquer toutes les subtilités sur vos vidéos. J'ai essayé d'utiliser des millis() pour chronometrer le temps de fonction de mes entrées Arduino. Sous le programme Arduino cela fonctionne. Mais lorsque je copie/colle sur vscode j'ai des erreurs au niveau des fonctions qui utilisent la fonction millis(). Y a t'il une Bibliothèque à rajouter avec vscode ? Ou avez-vous une autre solution pour ce problème ? Merci par avance Bonne fin de week-end à vous ! Cordialement Alexis
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Bonsoir Alexis. Difficile de répondre comme ça. Quelle version utilisez-vous pour VS Code ? Utilisez-vous PlatformIO ou l'extension Arduino Microsoft ?
@miguelmeyran2278
@miguelmeyran2278 3 жыл бұрын
Excellente vidéo ! Petit détail : vous parlez de téléverser le programme à travers le Wifi après avoir réglé les problèmes de rebonds du bouton poussoir, mais je ne vois rien à propos du téléversement par Wifi. Miguel
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Bonjour. C'est présent dans une vidéo sur l'ESP8266 car il faut un composant équipé du WiFi
@micheldelsem7022
@micheldelsem7022 3 жыл бұрын
ETcetera et pas ECcetera!!!
@EricPeronnin
@EricPeronnin 3 жыл бұрын
Oui. Ou est le problème ? J'écris etc à chaque fois sur mes diapos de présentation...
Dad Makes Daughter Clean Up Spilled Chips #shorts
00:16
Fabiosa Stories
Рет қаралды 8 МЛН
English or Spanish 🤣
00:16
GL Show
Рет қаралды 17 МЛН
POV: Your kids ask to play the claw machine
00:20
Hungry FAM
Рет қаралды 11 МЛН
Dad Makes Daughter Clean Up Spilled Chips #shorts
00:16
Fabiosa Stories
Рет қаралды 8 МЛН