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 !