Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2306 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

ESP32 avec lecteur empreinte et écran 2.42"

n°379873
Lt Ripley
Ils ont tout niqué
Posté le 18-08-2022 à 19:08:26  profilanswer
 

Reprise du message précédent :
La vache, ça marche !  J'avais dû faire une erreur avec des {}.  J'ai viré cette boucle immonde de la mort qui tue, je boucle depuis le main : dans loop j'appelle le code que j'ai posté, qui est une methode dans ma classe, et si  FPM_OK  je descends dans le code.
 
Tout ça, à la base, pour avoir le capteur d'empreinte prêt sans attendre la connexion au WiFi :  J'allume mon truc, je colle mon empreinte et le coffre s'ouvre.  Et avec cette boucle de merde impossible de connaitre le status du WiFi (et l'IP au passage) autrement qu'en monopolisant avant toute chose L'ESP (encore une fois, les devs font chier avec leurs exemples :o ) avec une boucle infinie tant que WiFi.status() != WL_CONNECTED.  Car ma boucle loop ne se faisait pas.
 
Je suis très content, merci rat de combat de m'avoir mis sur la piste : "un seul while" il faut que je m'en rappelle bien !


Message édité par Lt Ripley le 18-08-2022 à 19:08:44

---------------
Mes apps  |  Viens coder  |  Mon topal de vente
mood
Publicité
Posté le 18-08-2022 à 19:08:26  profilanswer
 

n°379874
rat de com​bat
attention rongeur méchant!
Posté le 18-08-2022 à 19:10:29  profilanswer
 

Lt Ripley a écrit :

Si c'est une vraie question : un truc censé justement rendre la main et permettre a d'autres trucs de s'exécuter

Oui c'était une vraie question. C'est une fonction que tu as codée toi-même ou ça fait parti du monde Arduino?

n°379875
Lt Ripley
Ils ont tout niqué
Posté le 18-08-2022 à 19:35:57  profilanswer
 

Ça fait au moins partie d'arduino, ESP8266 et ESP32, je l'ai pas codé moi même.  Mais il y a des spécificités suivant si c'est Arduino uno ou ESP8266 ou ESP32 blabla, un véritable enfer, et apparemment faut la coder si tu l'appelles pas depuis le main


---------------
Mes apps  |  Viens coder  |  Mon topal de vente
n°379883
Lt Ripley
Ils ont tout niqué
Posté le 18-08-2022 à 20:51:40  profilanswer
 

Je crois que j'ai compris pourquoi ma page web répondait quand même malgré une loop() bloquée : je pense qu'elle tourne sur le core 0.  Le wifi (et un ou deux autres trucs systemes) tourne sur le core 0 et le reste sur le core 1 il me semble... contrairement à l'ESP8266 ou t'as intérêt de gérer sinon t'as plus de wifi apparemment


---------------
Mes apps  |  Viens coder  |  Mon topal de vente
n°379907
Lt Ripley
Ils ont tout niqué
Posté le 19-08-2022 à 09:03:05  profilanswer
 

Un truc étrange : Si j'ai une variable "maVariable" dans "maClasse1" et que je nomme aussi une variable pareil "maVariable" dans "maClasse2" VSCode gueule tout de suite que la variable est déjà déclarée dans la classe 1
 
Bizarre non ??
 
 
 
Autre chose : je déclare mes trucs au début du code du main, normal.  Je les utilise ensuite dans setup().  Comme par exemple un  unsigned long currentMillis;  ou un  const char* ssid="maBox";  ou aussi tous mes objets.
 
Mais un simple String voidMDP;  n'est pas vu dans le setup !  https://i.imgur.com/81hfLrp.png
 
Why ??

 
Bon il aime pas les variables écrites en majuscules :o


Message édité par Lt Ripley le 19-08-2022 à 10:08:53

---------------
Mes apps  |  Viens coder  |  Mon topal de vente
n°379948
rat de com​bat
attention rongeur méchant!
Posté le 19-08-2022 à 16:48:53  profilanswer
 

Les variables en majuscules ça ne devrait pas poser de problème pourtant. Certes, il y a la convention que les désignateurs entièrement en majuscules c'est pour le préprocesseur, mais quand même... :??:

n°379950
Lt Ripley
Ils ont tout niqué
Posté le 19-08-2022 à 16:56:51  profilanswer
 

Oui j'ai pas bien compris moi non plus.

 

Franchement VSCode (+ le module PlateformIO pour l'esp) je trouve pas top,  par exemple parfois une erreur persiste, rien à faire,  je redémarre VSC et c'est bon...


---------------
Mes apps  |  Viens coder  |  Mon topal de vente
n°379953
rat de com​bat
attention rongeur méchant!
Posté le 19-08-2022 à 17:45:26  profilanswer
 

Au niveau des logiciels/IDE Arduino je ne saurais te conseiller, désolé... Moi c'est Geany sous Linux et code "from scratch" sans Arduino.

 

EDIT: A tout hasard, tu ne voulais pas mettre un espace entre void et MDP? Bon après un MDP déclaré en void ça n'a pas beaucoup de sens :o , mais peut-être ton IDE voyait "void" et se disait "il doit manquer un espace"?


Message édité par rat de combat le 19-08-2022 à 17:46:50
n°379954
Lt Ripley
Ils ont tout niqué
Posté le 19-08-2022 à 17:52:53  profilanswer
 

Ah tu dois avoir raison, je croyais avoir essayé "MDP" tout court mais non, et ça marche, c'est void qui a fichu le boxon, j'aurais du y penser [:tartine mariol:10]  
 
Tu codes quoi ?  En C ?  Et quels autres langages ?
 
Edit : c'est aussi la faute à VSC qui voit pas toujours quand tu corriges une erreur :kaola: , je suis sur d'avoir essayé "MDP".  Il est d'ailleurs toujours lent VS Intellij Idea en Java


Message édité par Lt Ripley le 20-08-2022 à 09:33:46

---------------
Mes apps  |  Viens coder  |  Mon topal de vente
n°379955
rat de com​bat
attention rongeur méchant!
Posté le 19-08-2022 à 17:55:31  profilanswer
 

C et rarement Assembleur AVR.

mood
Publicité
Posté le 19-08-2022 à 17:55:31  profilanswer
 

n°379959
Lt Ripley
Ils ont tout niqué
Posté le 19-08-2022 à 19:05:37  profilanswer
 

Ah ok
 
Si je fais ça (et dans le cas de start = false c'est à dire 10s après le boot et sans retour à true)
 

Code :
  1. if ( start && (millis() - previousMillis3 > millisInterval3) && WiFi.status() == WL_CONNECTED )


 
Au lieu de ça, est ce que j'économise un appel a millis() et donc je fous un peu la paix à l'ESP ?  Je pense que si start est false il teste pas le reste, j'ai bon ?
 

Code :
  1. currentMillis3 = millis();
  2.  
  3. if ( start && (currentMillis3 - previousMillis3 > millisInterval3) && WiFi.status() == WL_CONNECTED )


---------------
Mes apps  |  Viens coder  |  Mon topal de vente
n°379960
rat de com​bat
attention rongeur méchant!
Posté le 19-08-2022 à 19:07:28  profilanswer
 

En effet, si start==false il ne va pas tester le reste donc pas appeller millis(). Il me semble que le terme technique c'est "short circuit evaluation" ou un truc du genre.

 

Après, sans avoir vérifié, millis() ça doit juste être une variable à copier/retourner, c'est pas énorme au niveau perfs etc.


Message édité par rat de combat le 19-08-2022 à 19:08:46
n°379962
Lt Ripley
Ils ont tout niqué
Posté le 19-08-2022 à 19:19:21  profilanswer
 

Merci bien, j'ai fait la modif
 
Edit : Ah ok


Message édité par Lt Ripley le 19-08-2022 à 19:19:43

---------------
Mes apps  |  Viens coder  |  Mon topal de vente
n°380231
Lt Ripley
Ils ont tout niqué
Posté le 22-08-2022 à 20:39:37  profilanswer
 

Tout ça marche pas mal !
 
J'ai le capteur qui des fois passe pas son .begin, dans ce cas j'attends 400ms et je retente et ça passe.  J'ai pas trop trop envie pour l'instant de mettre le capteur en 5v + shifter à cause du nombre de câbles que ça induit.
 
Au boot, le capteur est disponible en 2s c'est très rapide depuis que j'ai optimisé le truc (j'attends plus la wifi avec un while :pt1cable: )
 
Si je débranche le tx (ou le rx je sais pas j'en ai pris un au hasard) du capteur alors l'ESP rame depuis le boot, et les secondes sur l'oled s'affichent toutes les 2 secondes, c'est peut être du au fait que begin est lancé 2 fois justement mais je vois pas comment faire autrement.  Mais la page web reste fonctionnelle, je peux ouvrir/fermer.
 
J'ai dégoté un bon truc pour gérer des délais en JS, et qui soit pas bloquant, je mets le code ici si ça peut servir
 

Code :
  1. var intervalID1;
  2.  
  3. function displayHome() {  // Appelée en boucle lors d'une action puis rompue ici même
  4.  
  5.        if (action && (Date.now() - actionMillis >= interval))  {
  6.            talking.innerHTML = "Enter password";
  7.            talking.style.backgroundColor = "#2196F3";
  8.            action = false;
  9.            clearInterval(intervalID1);     // Casser le setInterval lancé dans les actions
  10.        }                                  
  11. }
  12.  
  13. // Dans les actions (open/wrong password/close)
  14. intervalID1 = setInterval(displayHome, 200);


 
Une petite vidéo (qualité bof, je fais jamais de vidéo, l'écran oled est chouette en réalité, si on fait abstraction de la résolution :o )
https://drive.google.com/file/d/1Do [...] sp=sharing
 
Edit : Sur la ligne du bas de l'oled et de la page web le LTD est un joke, c'est 100% amateur [:lol_yvele]
 
La page Web
https://i.imgur.com/XQgy3RP.png


Message édité par Lt Ripley le 29-08-2022 à 12:09:02

---------------
Mes apps  |  Viens coder  |  Mon topal de vente
n°404059
froggycorp
Posté le 30-05-2023 à 21:34:46  profilanswer
 

rat de combat a écrit :

Question bête mais c'est quoi yield()? :o

 

C'est une excellente question et je te remercie de l'avoir poser.
Cela fait exactement cela :

 
Code :
  1. void yield(void) {}
 

Voilà, j'espère avoir égayé ta journée.

 

(puting, ca date de l'année dernière, j'avais po vu !)

 

(tant que j'y suis, pourquoi le serveur web fonctionne et pas le capteur ? C'est qu'il tourne sur CPU1 (ou CPU0) quand le sketch tourne sur CPU0 (ou CPU1), cela se configure dans l'IDE arduino)


Message édité par froggycorp le 30-05-2023 à 21:36:49
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
ESP32-S3, MicroPython et wifiComment envoyer un tableau de float du c++ au JS ? (ESP32)
Détecter dans le JS un changement de variable du code C++ (ESP32)Tv LG Led dont l'écran tourne au violet
ESP32 : Faire clignoter une LED sans monopoliser le programmeESP32 multiplexer caméra?
TV HITACHI L42VP01C ecran noirRecyclage écran portable
recycler l'écran d'une tablette Nexus pour faire une écran encastré.[aide projet] Streamer son écran qualité source vers un autre particul
Plus de sujets relatifs à : ESP32 avec lecteur empreinte et écran 2.42"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR