Salve a tutti, sto facendo un programma in vbnet per comandare arduino tramite PC, ma non riesco a leggere il valore di un input analogico con il firmware standard firmata. Mi spiego meglio: non ho problemi per ingressi e uscite digitali, nessun problema per il PWM, mentre non riesco a leggere il valore di un ingresso analogico. Riesco a leggere il valore se scarico su arduino lo sketch simpleanalogfirmata. Qualcuno può gentilmente spiegarmi i comandi per leggere un input analogico in vbnet di arduino?
Grazie
Hai provato a dare una occhiata qui?
Ciao si ho provato, ma proprio non riesco a capire come fare per avere su una label il valore di uno dei 6 ingressi analogici 
Scusa ma forse non ho capito io.
Qualsiasi programma/linguaggio PC si usi su Arduino deve girare lo sketch Firmata. (StandardFirmata)
Firmata non è altro che un protocollo di comunicazione. Lato PC con VB usi la libreria che conosce il protocollo, ma lato Arduino devi caricare lo sketch (tra quelli forniti con IDE) StandardFirmata che capisce qui comandi.
Ciao su Arduino ho messo lo sketch standardfirmata, ma il problema lo ho su vb, poichè non riesco a capire quali sono i comandi per poter assegnare ad una label il valore di un ingresso analogico di arduino.
Non lo uso, guardando il codice di esempio mi sembra che ci deve essere un evento per ricevere da Arduino i dati relativi ai pin digitali:
Private Sub FirmataVB1_AnalogMessageReceieved(ByVal pin As Integer, ByVal value As Integer) Handles FirmataVB1.AnalogMessageReceieved
pin è il numero del pin, value il valore. Quel FirmataVB1 si riferisce al nome del controllo messo nella form.
Non sò se però questo basta.
Ho provato a caricare l'esempio VBExtended del sito ma a me non funziona l'analogico
Ciao ho fatto varie prove e con questa leggo dei valori, ma non corrispondono alla realta. Inoltre la label non cambia. Qualcuno può vedere il vb code e adattarlo?:
questo è il code:
Imports Firmata.FirmataVB
Public Class Form1
Dim data As Integer = 0
Private AnalogPins As New Hashtable
Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
FirmataVB1.Connect("COM4", 115200)
For Each ctrl As System.Windows.Forms.Control In Me.Controls
Dim ThisCtrl As Firmata.AnalogPinControl = Nothing
If TypeOf ctrl Is Firmata.AnalogPinControl Then
ThisCtrl = ctrl
AnalogPins.Add(CStr(ThisCtrl.PinNumber), ThisCtrl)
AddHandler ThisCtrl.AnalogOnOff_Changed, AddressOf AnalogPinControl_AnalogOnOff_Changed
End If
Next
End Sub
Private Sub AnalogPinControl_AnalogOnOff_Changed(ByVal PinNumber As Integer, ByVal OnOff As Integer)
FirmataVB1.AnalogPinReport(PinNumber, OnOff)
End Sub
Private Sub DataReceived(ByVal pin As Integer, ByVal value As Integer) Handles FirmataVB1.AnalogMessageReceieved
Dim AnalogPin As Firmata.AnalogPinControl
'pin = 5
AnalogPin = AnalogPins(CStr(pin))
AnalogPin.SetAnalogValue(value)
data = value
'displayValue()
End Sub
Private Sub displayValue()
'TextBox1.Text = data
Label1.Text = data
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
displayValue()
End Sub
End Class
Aggiornamento, son riuscito a vedere la label, non avevoattivato il timer, ma ora non sono in grado di modificare due label per due ingressi diversi. Ho provato così ma non funziona. questo è il codice:
Private Sub DataReceived(ByVal pin As Integer, ByVal value As Integer) Handles FirmataVB1.AnalogMessageReceieved
Dim AnalogPin As Firmata.AnalogPinControl
Dim Analogpin5 As Firmata.AnalogPinControl
AnalogPin = AnalogPins(CStr(0))
AnalogPin.SetAnalogValue(value)
data = value
Analogpin5 = AnalogPins(CStr(5))
Analogpin5.SetAnalogValue(value)
data1 = value
End Sub
Private Sub displayValue()
'TextBox1.Text = data
Dim phvalue As Double
phvalue = data * 5 / 1024
Label1.Text = phvalue * 3.5
Label2.Text = data1
End Sub
qualcuno mi può dire dove sbaglio?
grazie