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 :
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 ...
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); } }
Si quelqu'un trouve la solution, je lui paie un verre
Bonne journée à vous !
Partager