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 - Excel (VBA) : Problème d'initialisation


Sujet :

Arduino

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Arduino - Excel (VBA) : Problème d'initialisation
    Bonjour à tous, je viens vers vous car j'ai un petit soucis d'initialisation de communication de port Serial.

    En fait, j'ai créé un programme (en m'inspirant de sources Googlisées) qui me permet d'allumer la LED 13 dès que j'envoie un 1 avec Excel (j'ai simplifié le programme au maximum pour faire mes essais, la finalité n'est pas celle-ci)

    Celui-ci fonctionne mais uniquement si j'ai déjà ouvert le moniteur serial de l'IDE. Si je débranche l'Arduino, que je recommence la manip mais que je n'ouvre pas le moniteur, rien ne se passe. Je vois que des données sont reçues par l'Arduino car la LED Rx s'allume bien mais rien d'autre ne se passe, on dirait que le Serial ne reçoit rien du côté Arduino. Si j'ouvre une fois le moniteur et que je le referme aussitôt, ça refonctionne. Comme si il manquait un truc pour initialiser mon port Serial

    Voici mon code VBA (repris en grande partie du net) :

    Code VBA : 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
    Dim COMfile As Integer
     
    Public Sub Envoi_serial()
     
            Put #COMfile, , "1"
     
    End Sub
     
    Public Sub Ouverture_port()
     
        On Error GoTo Erreur_Port
            COMfile = FreeFile
            Open "COM" & Worksheets("Contrôle Arduino").Range("B3").Value & ":115200,BIN,CD0,CS0,DS0,OP0,RB64,RS,TB64" For Binary Access Read Write As #COMfile
        Exit Sub
    Erreur_Port:
            MsgBox ("Connexion au port COM impossible." & vbCrLf & Err.Description)
            Err.Clear
     
       Exit Sub
     
    End Sub
    Public Sub Fermeture_port()
     
         Close #COMfile
     
    End Sub


    et voici mon code Arduino :
    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
    int reception = 0;
     
     
    void setup() {
      //Init Serial USB
      Serial.begin(115200);
     
    }
     
     
    void loop() {
     
    if (Serial.available() > 0) {
      reception = Serial.parseInt() ;
     if (reception == 1) { 
      digitalWrite(13,HIGH);
       delay(1000);
     }
     
      digitalWrite(13,LOW);
     
    }
    }
    J'ai donc essayé plusieurs manips, j'ai réduit le code au maximum, j'ai essayé de faire un flush sur le port, j'ai vérifié qu'il y avait les mêmes données en entrée sur le Serial Arduino en utilisant un moniteur Serial tierce (Serial Port Monitor) mais rien à faire ...

    Si quelqu'un trouve la solution, je lui paie un verre

    Bonne journée à vous !

  2. #2
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Bonjour Jeremy

    Citation Envoyé par jeremy.lambert Voir le message
    Si quelqu'un trouve la solution, je lui paie un verre
    Excellente motivation

    J'aime beaucoup "jouer" avec Excel et un Arduino, par exemple:


    Je vais regarder ton problème.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  3. #3
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Bonjour Jeremy

    Mise à part le fait que tu n'as pas initialisé le port de la LED, dans setup()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	pinMode(13, OUTPUT);
    	digitalWrite(13, LOW);
    ta paire de programme fonctionne très bien.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Bonjour,

    pour certaines cartes Arduino (Leonardo si je ne me trompe pas), il faut que DTR = 'enable' et RTS = 'enable'.

    [edit]
    Je ne sais plus si avec UNO les paramètres DTR et RTS ont une influence. Toujours est-il que je les mets toujours à "enable" ou "true".
    Il arrive aussi que lors de l'ouverture du port la carte s'initialise. Il faut donc attendre la fin complète de son initialisation avant de lui envoyer des instructions. La durée d'initialisation dépend du modèle. Dans ton code VBA ajoute une pause de 200 à 500ms après l'ouverture du port.
    [/edit]

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonsoir à vous, je reviens avec une bonne nouvelle, ça fonctionne ! Mais pas sur la même carte

    En fait, j'ai refais l'essai avec mon Arduino Nano (je sais pas avec quelle carte tu as fais tes essais jpbbricole ?), et ça ne fonctionne toujours pas si on n'ouvre pas le Serial

    Par contre, après avoir cherché un peu ce qu'était le DTS et RTS (de ce que j'ai compris ce sont des signaux mais je n'ai pas trouvé comment les activer/désactiver sans application tierce), j'ai refais l'essai avec un Arduino Pro Mini (= Leonardo), et ça fonctionne !

    Du coup, la théorie de Auteur me semble être la bonne piste, à creuser

    Merci à vous et bonne soirée !

  6. #6
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Bonsoir Jeremy

    J'ai fait mes essais avec un UNO qui est identique au Nano.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  7. #7
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par jeremy.lambert Voir le message
    Par contre, après avoir cherché un peu ce qu'était le DTS et RTS (de ce que j'ai compris ce sont des signaux mais je n'ai pas trouvé comment les activer/désactiver sans application tierce), j'ai refais l'essai avec un Arduino Pro Mini (= Leonardo), et ça fonctionne !
    Dans le code posté :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    Open "COM" & Worksheets("Contrôle Arduino").Range("B3").Value & ":115200,BIN,CD0,CS0,DS0,OP0,RB64,RS,TB64" For Binary Access Read Write As #COMfile
    Parmi les arguments qui suivent "BIN" certains correspondent sans doute aux contrôles des flux. Par contre, je ne trouve aucune documentation sur les paramètres de cette chaîne "BIN,CD0,CS0,DS0,OP0,RB64,RS,TB64". Certains termes me laissent perplexe.

    Un commentaire dans cette discussion me conforte dans l'idée :
    https://forum.arduino.cc/t/arduino-s...eeded/192954/2
    What Arduino are you using?
    I suspect that code would not work with an Uno or Mega which are reset when the PC program opens the serial port.
    ajoute une pause de 1s par exemple après ta fonction Open pour voir.

  8. #8
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Pareil aucune doc trouvée de mon côté, faut dire que ça doit pas être courant ... De même pour l'objet "Freefile", on ne trouve pas grand chose

  9. #9
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Bonjour Jeremy

    Si tu le désires, je peux te faire un extrait simplifié de la feuille Excel du post #2, qui fonctionne "à tout les coups" et, dans les 2 sens.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  10. #10
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour à toi, pour ma part le problème a été résolu en changeant de carte, après s ça peut aider quelqu'un dans la communauté pourquoi pas

    Je serais par contre bien curieux de comprendre la chaine de caractère soulignée par Auteur

    Cordialement

  11. #11
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Une doc (enfin) :
    https://www.qb64.org/wiki/OPEN_COM

    Mais ça ne me dit pas comment accéder aux contrôles du port série. Via le panneau de configuration de windows (panneau de configuration -> Système -> puis gestionnaire de périphériques), on peut modifier le contrôle des flux dans les options du port en passant de "aucun" à "xon/xoff". Mais je ne sais pas si cela résoudra le problème.

  12. #12
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour à vous, super la doc !

    Du coup, le RTS est bien désactivé, il faudrait que je refasse un essai sans cette variable et voir si j'ai le même résultat

    Je reviens vers vous bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Excel VBA : Problème pour ouvrir un classeur sur une feuille précise
    Par relenaheero dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/09/2021, 13h52
  2. Réponses: 3
    Dernier message: 12/10/2017, 18h52
  3. [EXCEL - VBA] Problème ouverture fichier suite Macro Userform
    Par Guidhy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/04/2007, 09h18
  4. Problème avec open() [Excel VBA]
    Par heddicmi dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 16h21
  5. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27

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