Bonjour,

Je dispose d'un Arduino Uno, je désire envoyer les infos de ce dernier vers un fichier Excel à partir d'un bouton poussoir lié à l'Arduino, je m'explique :

Je relie un bouton poussoir à une pin digital de l'Arduino et je veux que quand j'appuie sur le bouton cela puisse automatiquement incrémenter le chiffre dans une cellule


Ceci est mon code Arduino, j'envoie 0 sur le bouton est au repos, 1 si on appuie dessus (PS : délai de 3 sec car c'est le temps d'appui sur le bouton que j'impose)
Code Arduino : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
int i;
 
void setup(){
    pinMode(8, INPUT);
    Serial.begin(9600);
}
 
void loop(){
    i = digitalRead(8);
    Serial.println(i);
    delay(3000);
}


Concernant mon programme en VBA, j'arrive à récupérer les infos, mais pas de la bonne manière… c'est à dire que pendant que j'accueille les infos sur mon fichier Excel, je n'arrive pas à faire autre chose alors que je doit pouvoir manipuler dans le fichier Excel pendant qu'il reccueille les data de l'Arduino.

Mon code VBA :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim record As String * 1, emptyRecord As String * 1
Dim stopclick As Boolean
 
 
Sub stoploop()
    stopclick = True
    MsgBox ("Finished.")
End Sub
 
 
Sub ReadCommPC()
    Dim COMport As String
    Dim COMfile As Integer
    Dim COMstring As Variant
    Dim baudrate As Long
    Dim timeout As Date
    Dim record_cat As Variant
    Dim COLindex As Integer
    Dim ROWindex As Integer
 
    stopclick = False
    COLindex = 0
    ROWindex = 0
 
    COMport = Sheets("Setup").Range("C2").Value
    baudrate = Sheets("Setup").Range("C3").Value
    timespan = Sheets("Setup").Range("C4") * 3
    Sheets("Data").Select
    Range("A1").Select
 
     'Open COM# port with baud rate 9600, No parity, 8 data bits and 1 stop bit
    COMfile = FreeFile
    COMstring = COMport & ":" & baudrate & ",N,8,1"
 
    Open COMstring For Random As #COMfile Len = 1
    record = ""
    record_cat = ""
    timeout = Now + (timespan / 86400) 'if no data received in 20 sec give up
 
 
    Do While stopclick = False
        Get #COMfile, , record
 
        DoEvents   'Don't lock up excel while waiting
 
            If record <> "," And Asc(record) <> 13 And Asc(record) <> 10 And record <> emptyRecord Then
                record_cat = record_cat & record
            End If
 
            If Asc(record) = 13 Then
                Range("A1").Offset(ROWindex, COLindex).Value = Trim(record_cat)
                COLindex = 0
                record_cat = ""
                record = ""
                ROWindex = ROWindex + 1
                timeout = Now + TimeValue("00:00:20")  'if no data received in 20 sec give up
            End If
    Loop
    Close #COMfile
    Debug.Print "Finished"
End Sub
Merci de votre aide, bonne soirée