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:
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:
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 :lol:
Bonne journée à vous !