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 :

Arduino et WinDev + thermocouple


Sujet :

Arduino

  1. #41
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 922
    Par défaut
    Citation Envoyé par misere Voir le message
    Je récupère une chaine de caractères du style "&)0" ou "!"<tab>0".
    vous êtes sûr que vous avez mis la console à 9600 bauds?

  2. #42
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2023
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2023
    Messages : 30
    Par défaut
    Merci, pour cette réponse documentée. Malheureusement je n'ai pas les bases pour la comprendre bien.

    Si c'est "char Temperature" qui pose problème, j'ai aussi essayé de le passer en "float Temperature"

    Dans les deux cas le compilateur passe sans problème et ne retourne aucun message d'erreur.

    Seulement " compilation terminée" et ensuite "téléversement fait"

    Ce que je récupère dans les deux cas sont les mêmes chaines de caractère.

    J'ai essayé avec des valeurs fixées "Température = 25" par exemple, et dans les deux cas je retrouve la même chaine que je ne sais pas exploiter.

  3. #43
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2023
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2023
    Messages : 30
    Par défaut
    Oui j'ai mis à 9600
    Windev ne me retourne pas d'erreur.
    J'ai mis une commande pour savoir la taille de la chaine à récupérer et Windev lit sans problème.

  4. #44
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2023
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2023
    Messages : 30
    Par défaut
    La connexion est établie avec "ConnexionEtablie=sFixeParamètre(4, 9600, 1, 8, 0)"

    La variable ConnexionEtablie me retour bien le bon port.

    Par contre il s'agit peut-être des autres paramètres

  5. #45
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2023
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2023
    Messages : 30
    Par défaut
    L'idée de vérifier le taux de transfert m'ayant orienté je viens d'essayer en mettant la parité à 0.
    Du coup je récupère une chaine lisible: une série de trois chiffre un point une autre série de 3 chiffres et ce sur une cinquantaine de caractères. Ca devient lisible. Maintenant je crois pouvoir avancer et chercher pourquoi je n'ai pas le résultat attendu.

  6. #46
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 922
    Par défaut
    ah c'est windaube qui récupère mal ce qui arrive sur le port série, c'est ça ? l'arduino sera en 9600 bauds, 8N1

    le code arduino est fonctionnel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    float Temperature;
    int CapteurVal;
    float Tension;
     
    void setup() {
     Serial.begin(9600);
    }
     
    void loop() {
      CapteurVal = analogRead(2);
      Tension = (CapteurVal/1024.0)*5.0;
      Temperature = (Tension-.5)*100;
     
      // Vider le buffer de sortie série avant d'y envoyer la nouvelle valeur
      Serial.flush();
      Serial.print (Temperature);
     
      delay(3000);
    }
    il pourrait être simplifié (pas besoin de toutes ces variables globales)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void setup() {
      Serial.begin(9600);
    }
     
    void loop() {
      int valeurCapteur = analogRead(2);
      float tension = (valeurCapteur / 1024.0) * 5.0;
      float temperatureC = (tension - 0.5) * 100;
      Serial.println(temperatureC); // on met println pour avoir un passage à la ligne
      delay(3000);
    }
    côté windev vous pourriez sans doute (en supposant que le lien série soit sur COM5) faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    SerialPort: Handle
    Buffer: string = ""
    CaractereLu: string
     
    // Ouverture du port série COM5 à 9600 bauds en 8N1 (par défaut)
    SerialPort = SerialOpen("COM5", 9600)
     
    IF SerialPort <> -1 THEN
        WHILE TRUE
            SerialRead(SerialPort, CaractereLu)
            Buffer += CaractereLu
     
            IF Buffer = "FIN" THEN
                BREAK // Quitter la boucle
            END
     
            IF CaractereLu = '\n' THEN
                Info(Buffer, "Message reçu")
                Buffer = "" // Réinitialiser le tampon pour le prochain message
            END
        END
     
        SerialClose(SerialPort)
     
    ELSE
        Error("Impossible d'ouvrir le port série COM5.")
    END
    vous devriez voir les messages et si l'arduino envoie FIN alors le code s'arrête

  7. #47
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2023
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2023
    Messages : 30
    Par défaut
    Pendant que vous répondiez à mes difficultés, je suis allé vérifier ce que ça donnait en changeant la parité de 1 à 0

    Je suis allé aussi chercher les caractéristiques du capteur de température. Je crois que c'est un DHT11 mais je n'en suis pas sûr vu que j'ai reçu ce capteur dans un lot avec la carte UNO avec 25 autres dont certains que je n'ai pas repéré. Celui que j'utilise ressemble beaucoup ( forme et couleur à un DHT11)

    Il a une plage de 0 à 50° et je suppose de 0 à 1024. J'ai donc modifié le code ARDUINO pour le calcul de la température à renvoyer, et j'ai mis un délai de 30000 sur la boucle loop()

    J'ai une surprise : Je viens d'apprendre que chez moi j'ai 193.25 °C ( C'est chaud ! )

    Je vais tester vos code Windev.
    Les variables qui ne servent pas dans le code ARDUINO, c'est que j'ai fait un wagon d'essais quand le code me renvoyait des trucs que je ne savais pas analyser...

  8. #48
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 922
    Par défaut
    On ne lit pas les infos d’un DHT11 avec un analogRead…

    Prenez une bibliothèque et regardez les exemples

  9. #49
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2023
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2023
    Messages : 30
    Par défaut
    Dans un premier temps c'est ce que j'avais fait. J'avais lu avec la bibliothèque et afficher la température dans l'IDE. Ca marchait parfaitement
    C'est parce que j'ai eu le problème en récupérant les valeurs avec Windev que j'ai essayé de faire une lecture directe sans la bibliothèque.

    Du fait que j'ai eu les mêmes résultats je ne suis pas revenu sur le code avec la bibliothèque.

    Mais vous avez sûrement raison. Je vais revenir à mon code initial pour avoir (peut-être) les bonnes valeurs. Mais apparemment il ne s'agit que d'un coefficient entre les deux méthodes.
    Je vais tester tout çà maintenant que je peux lire un résultat

  10. #50
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2023
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2023
    Messages : 30
    Par défaut
    Ca marche nickel avec la bibliothèque DHT11.
    Dans un premier temps j'ai cru qu'il y avait un rapport constant entre les deux versions.
    Mais, l'arrivée du séchoir à cheveux à remis tout en place!
    Seule la version DHT11 avec bibliothèque fonctionne.

    Bonne journée.

  11. #51
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 922
    Par défaut
    Je ne sais pas quel composant vous avez mais le DHT 11 utilise le protocole oneWire

    https://www.mouser.com/datasheet/2/7...on-1143054.pdf

  12. #52
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2023
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2023
    Messages : 30
    Par défaut
    Nos messages se sont croisés.
    Vous aviez raison, cela ne marche pas sans le bibliothèque.
    Ca affiche des valeurs qui change de peu, mais pas la température

  13. #53
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 656
    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 656
    Par défaut
    Bonjour Jay M,
    Citation Envoyé par Jay M Voir le message
    ...Bref on transgresse des règles et GCC sait que c'est dangereux, d'où le warning ...
    En résumé, ici GCC fait du C et s'assoit sur le plus fort typage de C++. Je me demande bien dans quel cas ce transtypage const * char -> char peut être intéressant.

    Salut

  14. #54
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 922
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Bonjour Jay M,

    En résumé, ici GCC fait du C et s'assoit sur le plus fort typage de C++.
    c'est un bon résumé (ça permet de compiler des vieux code C avec un warning)

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