Protocollo firmata

di il
10 risposte

Protocollo firmata

Salve

Mi sto interessando a v.b. e in particolare al controllo di motori comandati da rele' a loro volta controllati con un timer .
Il tutto utilizzando arduino firmata e v.b.
Vorrei pero' riuscire a controllare anche dei servo ma l'unica cosa che sono riuscito a vedere e' la presenza di servofirmata come libreria presente negli esempi di arduino.Va bene caricarla cosi' in arduino ma poi il buio piu' totale per il codice in v.b.
Se qualcuno si interessa di queste procedure lo ringrazio se puo' darmi qualche dritta in merito.
Saluti.

10 Risposte

  • Re: Protocollo firmata

    Con il vb apri un collegamento seriale con l'Arduino e invia i comandi così come se li aspetta il firmware.
  • Re: Protocollo firmata

    Ciao e grazie della risposta.
    Attualmente la mia situazione e' questa:
    Arduino collegato al pc con dei led , con v.b. e firmata e un timer controllo l'accensione e lo spegnimento nel tempo dei led stessi e quindi ho il controllo volendo di tutti i rele' che mi serviranno utilizzando i pin sia digitali che analogici.Un servo ha un solo pin collegato ad arduino ma questo
    e' sufficiente che sia HIGH poi non mi sembra che abbia molta importanza ai fine del codice di controllo in arduino. Ci sono a disposizione librerie
    per poterlo controllare.
    In v.b. bisognerebbe riprendere questo controllo ma con codici che non conosco.Quello che ho osservato e' che in arduino firmata e' presente con diverse librerie tra cui anche servo.Bene posso caricarla ma poi....
  • Re: Protocollo firmata

    Hai detto le stesse cose di prima ... la mia risposta è la stessa.

    Apri un canale seriale con il VB e fornisci il codice di comando corretto che il firmware richiede per pilotare i servo. In genere un servo è pilotato tramite un segnale PWM e quindi non potrai utilizzare da VB direttamente il pin. Sarà il firmware a ricevere un comando apposito, ad esempio per spostare il servo di 90° tramite apposita funzione inclusa nel firmware.

    Questa cosa è indipendente dal VB. Qualsiasi linguaggio tu usi, devi aprire un collegamento seriale e dare i corretti comandi al firmware. Sarà questo a pilotare correttamente in PWM il servo.

    Ovviamente puoi anche scrivere il firmware per conto tuo senza utilizzare firmata.
  • Re: Protocollo firmata

    Detto cosi' ne so quanto prima.
    Puoi farmi un esempio di codice da mettere in v.b. (per ruotare il servo di un angolo alfa)
    Grazie.
  • Re: Protocollo firmata

    Di nuovo ...

    DIPENDE dal firmware !

    Aprire una connessione seriale e inviare un comando è un codice semplice e standard (trovi mille esempi con google).

    Ma QUALE comando inviare, QUALI dati (magari strutturati) inviare, DIPENDE da cosa si aspetta il FIRMWARE e io non conosco il firmware in questione, quindi come faccio a mostrarti del codice?

    Tu conosci Firmata? Sai cosa quali comandi sulla seriale si aspetta Firmata per pilotare un servo? Devi saperlo altrimenti non scrivi nessun codice con nessun linguaggio.
  • Re: Protocollo firmata

    In particolare, da quello che leggo qui

    http://firmata.org/wiki/V2.2ProtocolDetail

    la versione 2.2 di Firmata prevede la gestione di Servo (vedi alla fine della pagina).
  • Re: Protocollo firmata

    Negli esempi in arduino ci sono diverse librerie una volta caricato firmata e tra queste mi sono accorto anch'io che c'e' servofirmata.
    Allora partiamo da qui.
    Ho caricato servo firmata e scritto questo spezzone di codice in v.b. dando al pin 12 output.
    "
    Public Class Form1
    Dim prova As Integer

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If FirmataVB1 IsNot Nothing Then
    FirmataVB1.Connect("COM3", 57600)
    End If


    FirmataVB1.PinMode(12,OUTPUT)
    TextBox1.Text = "0"

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    TextBox1.Text = TextBox1.Text + 1
    If TextBox1.Text = "50" Then
    ........................................
    End If

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Timer1.Start()
    End Sub
    End Class
    "

    Il problema e' aggiungere quella parte di codice o modificare quello scritto in modo da poter comandare il servo con il suo pin 12.
    Ad esempio per farlo ruotare di 120 gradi quando il timer segna 50
    Riesci ad aggiustare il codice per raggiungere l'obiettivo?
    Grazie.
  • Re: Protocollo firmata

    Per un servo devi impostare pinmode SERVO scegliendo uno dei pin abilitati per il pwm e usare la analogwrite su quel pin per controllarlo in pwm

    Ma la classe FirmataVB dove l'hai scaricata? È compatibile con servofirmata?
  • Re: Protocollo firmata

    Ho caricato firmata in arduino che compare negli esempi con 14 varianti da (Allinput firmata..servofirmata... a test)
  • Re: Protocollo firmata

    Emit ha scritto:


    Ho caricato firmata in arduino che compare negli esempi con 14 varianti da (Allinput firmata..servofirmata... a test)
    E quindi? Che vuoi dire?

    Io ti ho chiesto altro ... e poi, il suggerimento l'hai seguito?
Devi accedere o registrarti per scrivere nel forum
10 risposte