IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

[ESP32] Aide petit programme


Sujet :

Arduino

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2024
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [ESP32] Aide petit programme
    Bonjour a tous , j'ai besoins d'aide pour la modification d'un petit programme que j'ai fait sur un esp32 pour la gestion de mon surplus solaire .
    Je suis loin d’être un expert en la matière, donc je m’excuse d'avance si je n'utilise pas les bon terme car j'ai appris cela tout seul.

    je voudrais faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            if ( Power2 == 0 && Power1 == 0) mais que si et seulement si Power 1 et 2 sont toujours à 0 au bout de 10sec 
             {
               valDim2 = 0;
               dimmer2.setPower(valDim2);
               dimmer2.setState(OFF);
             }
    je sais pas si c'est clair !

    Peut être je doit créer un Timer d’après ce que j'ai pu lire ici et là mais je ne sais pas quoi écrire pour le déclarer dans mon cas.
    car je suppose qu'il faudra qu'il repasse a 0 si les conditions de sont pas réunis.

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 629
    Points : 1 580
    Points
    1 580
    Par défaut
    Hello,

    Quelque chose dans ce style-là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    power1=read....
    power2=read....
    if(power1==0 && power2==0) {
    	int start_time=millis();
    	while(millis()-start_time<10000);		// on attend 10 secondes
    	power1=read....
    	power2=read....
    	if(power1==0 && power2==0) {
    		....
    	}
    }
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2024
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    je ne comprends pas les power=readpourquoi écrire cela ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    pour vous si j'écris cela c’est correct ?
     
    if ( Power2 == 0 && Power1 == 0)
             {
              int start_time=millis();
    	        while(millis()-start_time<10000);	
              if ( Power2 == 0 && Power1 == 0)
             {
               valDim2 = 0;
               dimmer2.setPower(valDim2);
               dimmer2.setState(OFF);
             }
             }

  4. #4
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 629
    Points : 1 580
    Points
    1 580
    Par défaut
    Non. Où power1 et power2 changent-ils de valeur entre le premier et le second test ? Car je suppose que leur valeur est lue quelque part.


    Et,


    Edit: power1=read.... c'est parce que je ne sais pas comment se fait l'acquisition de power1 et power2. J'aurais pu écrire power1=get....
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2024
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ce sont des variables renseigné plus haut dans le programme , donc elle change au fur et a mesure du temps.

  6. #6
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 341
    Points : 4 171
    Points
    4 171
    Par défaut
    Bonjour,

    Sauf erreur, millis() ne retourne pas un int mais unsigned long.

    Je ne vois pas l'intérêt d'utiliser millis() si c'est pour bloquer le système par une boucle. Un delay(10000) l'aurait bloqué tout aussi bien avec une concision incomparable.

    Si on est dans la loop arduino, il est possible d'en tirer partie car elle va remplacer la boucle while... (start_time est soit une variable globale soit une static de la fonction).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       power1 = read....
       power2 = read....
       unsigned long now_time = millis();
       if(power1 | power2) start_time = now_time;  // Test aussi efficient que peu lisible ;-)
       else if(start_time - now_time > 10000) {
          start_time = now_time;
          valDim2 = 0;
          dimmer2.setPower(valDim2);
          dimmer2.setState(OFF);
       }
    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  7. #7
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2024
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Le délai ne vas pas.
    Je veux que si une des 2variables est différente de zéro pendant les 10 seconde ce qui se passe dans le IF ne s'effectue pas.

  8. #8
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 341
    Points : 4 171
    Points
    4 171
    Par défaut
    Bonsoir Seblespi,

    Citation Envoyé par Seblespi Voir le message
    Le délai ne vas pas.
    Je veux que si une des 2 variables est différente de zéro pendant les 10 seconde ce qui se passe dans le IF ne s'effectue pas.
    Ce n'est pas ce que fait ce code. Le while tourne tout seul (il y a un ";" sans aucune instruction avant) exactement comme un delay sans s'occuper de ce qui se passe. C'est seulement après les 10 s qu'il y a un test. Autrement dit, si pendant les 10 s l'une des tensions revient mais re-disparaît au moment du test, celui-ci se comportera comme si les tensions étaient restées à 0. Il faudrait mettre le test dans la boucle while pour s'assurer qu'il n'y a aucun retour pendant les 10 s.

    A titre indicatif, le code que je propose s'assure en permanence qu'aucune tension ne revient avant l'échéance.

    Salut
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  9. #9
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2024
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ok j'essaierai ça . Merci

Discussions similaires

  1. Aide, petit programme
    Par deWeb dans le forum Débuter
    Réponses: 10
    Dernier message: 31/10/2010, 19h34
  2. aide petit programme flash
    Par endelium dans le forum Flash
    Réponses: 1
    Dernier message: 08/11/2009, 23h44
  3. aide petit programme pour débutant
    Par kartp0rqx dans le forum C
    Réponses: 16
    Dernier message: 14/10/2005, 19h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo