Communication Arduino

tbft

XLDnaute Accro
Bonsoir

Je souhaiterai faire communiquer Excel et un Arduino via le la liaison série (USB).
Le transfert des données doit se faire dans les deux sens.
J'ai fait des recherches sur le net et à chaque fois il faut installer un "truc".

Est ce que quelqu'un s'est déjà confronté à un projet similaire ?

D'avance merci pour votre aide.
 

Staple1600

XLDnaute Barbatruc

tbft

XLDnaute Accro
Bonjour JM

Merci pour ton aide.
J'ai commencé à regarder hier soir.
J’espère avoir du temps se soir pour essayer la dernier méthode car apparemment il n'y a rien besoin d'installer.
Même si ça marche, je pense essayer les autres.
Je te tiens informé de l'avancé du projet
 

tbft

XLDnaute Accro
Bonsoir

Je suis en train d'essayer de faire tourner la troisième méthode de JM.
Mais, je bloque sur l'instruction :
Open COMstring For Random As #COMfile Len = 1
VBA m'indique : Erreur exécution 53 Fichier introuvable...

Je dis aussi fichier mais en plusieurs mots...

Avez-vous une idée, svp?

Pour information j'ai du changer la ligne sleep 20 par application.wait 20.
 

tbft

XLDnaute Accro
Rectification
J'ai fait ma blonde...
J'avais oublier de rebrancher l'arduino....
Je continue
J'ai l'impression que c'est l'instruction :"Get #COMfile, , record " qui me fait planté Excel...

Après plusieurs relance d'Excel, ben , c'est tombé en marche

Merci à tous les deux...
 
Dernière édition:

tbft

XLDnaute Accro
Bonjour JM

Je viens de jeter un coup d'œil vite fait sur "le fichier".
C'est du lourd.
Il faudrait que j'y regarde de plus près dés que j'aurais un moment.
En tout les cas, vous m'avez permis d'établir le premier contact, merci encore encore....
Je vous tiens informé de la suite de la progression de la communication
 

tbft

XLDnaute Accro
Bonjour

Je cherche le code équivalent (pour écrire au lieu de lire) au code suivant:
VB:
Sub ReadCommPC()
  Dim COMfile As Integer
  Dim COMstring As Variant
  Dim baudrate As Long
  Dim record_cat As Variant
  Dim record As String * 1
'  Dim record As String
  Dim emptyRecord As String * 1
  COMport = "COM3"   'Enter the COM port here.
  baudrate = 9600       'Enter the baud rate here.
  'Open COM port with baud rate, 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
  Open COMstring For Random As #COMfile Len = 1
  record = ""
  record_cat = ""
  Do
    DoEvents   'Don't lock up excel while waiting
    Get #COMfile, , record      'data is read in 1 character at a time
    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   ' if carriage return
      MsgBox (Trim(record_cat))
      record_cat = ""
      record = ""
    ElseIf record = "," Then     ' if comma
      MsgBox (Trim(record_cat))
      record_cat = ""
    End If
    Application.Wait 20 'sleep 20
  Loop
  Close #COMfile
End Sub
 

tbft

XLDnaute Accro
Bonjour JM

yes j'y suis arrivé et ça grâce à toi mille merci ne suffirait pas.
En partant de l'exemple de ton lien https://playground.arduino.cc/Main/Excel, j'ai pu lire l'horloge.
J'ai modifié le programme de l'arduino pour qu'il lise l'heure que sur ordre (via le port série).
J'ai essayé avec l'interface de programmation arduino et l'interface com
Puis j'ai ajouté la macro suivante. Elle envoi l'ordre et "tends l'oreille" pour récupérer l'heure.
Oui il y a pas grand intérêt de récupérer l'heure... ce n'est pas le but final du projet mais une étape.
VB:
sub WriteCommPC()
  Dim COMfile As Integer
  Dim COMstring As Variant
  Dim baudrate As Long
  Dim record_cat As Variant
  Dim record As String * 1
'  Dim record As String
  Dim emptyRecord As String * 1
  COMport = "COM3"   'Enter the COM port here.
  baudrate = 9600       'Enter the baud rate here.
  'Open COM port with baud rate, 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
  Open COMstring For Random As #COMfile Len = 1
  record = "d"
  Put #COMfile, , record
  Close #COMfile
  ReadCommPC
End Sub

Ce code sera modifié trituré malmené pour être adapté à mon projet.
Mais encore merci pour l'aide

Oups :
J'ai oublié de répondre à la question : dans les deux sens mais avec Excel comme maître et l'arduino en esclave
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof