Firmata vb.net e leggere valore analogico

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 :blush:

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