How do I get label.text servomotor angle position when I use button.touchdown or touchup?

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

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

Vedrai che prima o poi lo facciamo andare...ieri sera ero cotto !!!
Vediamo stasera ...
Ciao e buona giornata.

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. :grin: (or most probably mis-understood :rofl: :rofl: :rofl:)
Cheers.

U ve understood very well but I assumed it was clear from the beginning of the discussion lol.

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...

e comunque nel tuo codice il label angolo è completamente dissociato dal char...ecco perchè ti ponevi il problema della sincronizzazione...

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 ?
image

A questo punto se non posti i tuoi codici Arduino e .aia, per vedere cosa fanno, mi arrendo.

modificando in questo modo il pulsante funziona ma il label non va bene
image

ovviamente non ho modificato il valore logico "FALSE" visto che si trova in touchup con M...

image
questo li ho lasciai così....non serve associarli al global...

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)

  1. IL GLOBAL ANGLE VA SETTATO CON LA POSIZIONE INIZIALE DEL SERVO (NEL MIO CASO 90°)
  2. IL PROBLEMA è CHE IL LABEL MOSTRA SOLO INCREMENTI DI UNO A SINGOLI CLICK DEL PULSANTE....SE MANTENGO PREMUTO IL LABEL NON SEGNA NULLA
  3. OCCORRE RISOLVERE SOLO QUEST'ULTIMO PUNTO E TUTTO FUNZIONEREBBE

No need to "SHOUT" on this community.

1 Like

Se togli il blocco
image
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.