Angelo,
scusa, ma continuiamo a girare intorno al quesito fondamentale: Arduino manda indietro i valori raggiunti, o no ?
Perché se hai già un codice che fa quello, la risposta alla tua ultima domanda è set angle.text = valore ricevuto da Arduino. Tutto lì. (ma non credo, se no non faresti la domanda)
It s easy with sliders but i want to do it with button touchdown
Quindi questa frase non vuol dire che hai già una versione con gli slider che funziona ! Ma sai che gli slider, che hai usato in altre app, ti danno immediatamente il valore raggiunto dallo slider mentre lo muovi. Ma questo sarebbe solo il valore impostato (non quello raggiunto effettivamente dal servo!).
Se metto assieme le due frasi precedenti mi viene da dire: attualmente il tuo Arduino non trasmette ad AI2 ma riceve solo i comandi ?
Ti faccio adesso la domanda che avrei dovuto farti subito: posta il tuo .aia ed il tuo .ino che gli do un'occhiata, se no non ne veniamo fuori.
Se è solo questo che vuoi, l'aia che ti ho mandato fa esattamente quello, cioè visualizza in una label ogni valore ottenuto tenendo premuto il tasto Incrementa o Decrementa.
sì è cio che desidero fare e sarebbe comunque la posizione effettiva raggiunta dal servo poiché il char nello sketch è ovviamente legato ad una mappatura (e questo anche nel caso di uno slider). Nel tuo codice dove figura il carattere "u" oppure "U"?
I was sending 1 byte over the bluetooth, 0..255. Where from 0 to 180 was responsible for the servo rotation, and from 181 to 255 was the motor speed, and from a separate manipulator. Here's the logic
Attenzione, quando ti ho mandato il mio codice non sapevo ancora che i comandi sono u e U ed M per fermare e, paragonando il comportamento degli slider (che tu hai detto che già usavi), pensavo che tu mandassi dei valori numerici .
Comunque adesso l'aia allegato fa questo:
Se premi il tasto Increase e lo tieni premuto, ogni 50 millisecondi invia U al servo e incrementa il valore angolare (a loop aperto). Quando lo rilasci, manda M per fermare il servo.
Se premi il tasto Decrease e lo tieni premuto, ogni 50 millisecondi invia u al servo e decrementa il valore angolare (a loop aperto). Quando lo rilasci, manda M per fermare il servo.
Ho portato il clock da 20 milli a 50 milli perché se trasmetti ad ogni incremento, bisogna dare il tempo al BT di trasmettere il nuovo comando ed al servo di attuare.
Resta da capire come fai a sincronizzare lo 0 la prima volta se non mandi valori numerici ma solo u U e M.
Onestamente, se non posti il tuo aia e soprattutto il tuo .ino non riesco più a seguirti. Touchdown.aia (3.3 KB)
Ciao e buona notte
i vari "char" sono legati ad una mappatura che tengono conto delle larghezze d'impulso min e max (rapportate a 4096 poichè uso PCA9685 a 12 bit...).
Comunque davvero grazie domani provo il tuo codice
He's not sending angle values but just "rotate cw" (character U), "rotate ccw" (character u) and "stop" (character M). The numeric value is local to the app: it's not sent to the servo.
He relies on a look-up table buried into the Arduino code: each time the servo receives a character it moves of a "quantum" cw or ccw accordingly. That's what I consider, anyway, an "open loop" control.
At least, this is what I've understood. (or most probably mis-understood )
Cheers.
ho testato il tuo codice implementandolo nella mia app ma non va bene. Ad un click touchdown il servo compie una rotazione continua da 180 a 0 mentre (in touchup da 0 a 180...). Il label angolo invece comincia ad contare all'infinito...
pulsante touchdown (SERVO n. 1 base del mio progetto, perfettamente calibrato posizione iniziale 90°, range 0-180)
CASO 1: premo una volta il pulsante, il servo ruota e si porta per esempio a 89° ------------------------> IL LABEL DEVE MOSTRARE 89°
CASO 2: mantengo la pressione sul pulsante, il servo ruota e si porta per esempio a 60°--------------------> IL LABEL DEVE MOSTRARE SIA LE POSIZIONI PARZIALI SIA LA POSIZIONE FINALE
ESATTAMENTE COME UNO SLIDER! (COME GIA' DETTO SE UTILIZZASSI UNO SLIDER IL PROBLEMA è BANALE E BASTEREBBERE SOLO UNA RIGA DI COMANDO...)
TI RINGRAZIO PER LA TUA PERSEVERANZA ED AIUTO MA IL TUO CODICE NON FA QUESTO
Ciao Angelo,
ma aspetta un momento: il mio codice (provato ancora un minuto fa) con il TouchDown dei tasti Increase e Decrease, finché sono tenuti premuti, aggiungono o tolgono 1 al valore di angolo e lo trasmettono in modo sincrono al BT con U e u , mentre il TouchUp lo ferma, disabilitando il clock e mandando M: Non è che l'hai modificato in modo che che il TouchUp non toglie piùl 'abilitazione al clock, per cui continua per sempre a incrementare o decrementare ?
A questo punto se non posti i tuoi codici Arduino e .aia, per vedere cosa fanno, mi arrendo.
come ho già ampiamente ribadito nel caso di un slider il problema non si pone poiché il label è associato al cursore posizionato esattamente nella posizione iniziale scelta (la sincronizzazione è dunque implicita)
Il clock non si ferma più e va avanti l'incremento del valore angolare nella label, per cui se il servo si ferma, perché ha ricevuto M, la label perde il sincronismo.
Come ti ho detto, a questo punto non riesco ad andare avanti, senza sapere cos' altro hai modificato del mio codice (che comunque è da integrare nel tuo, in quanto implementa solo l'automatismo del keyclick, simulando uno slider), e senza sapere cosa fa il tuo Arduino.
Lascio quindi alla community, ed altri Power Users più esperti di me, l'opportunità di aiutarti.
If somebody else, has understood what @angelo needs, please feel free to help him.
Many thanks.