BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Radiocomandi (https://www.baronerosso.it/forum/radiocomandi/)
-   -   FrSky Taranis - Lua scripts per tutti (https://www.baronerosso.it/forum/radiocomandi/353596-frsky-taranis-lua-scripts-per-tutti.html)

sinapse75 18 novembre 16 17:49

Forse ho capito perche questa mattina non ha funzionato.........
Luciano è possibile che ogni intervento sulla telemetria (come la riassegnazione dei sensori, maiuscole, minuscole, ecc) bisogna necessariamente spegnere e riaccendere la tx per fare riconoscere eventuali modifiche allo script lua?

TermicOne 18 novembre 16 18:30

Citazione:

Originalmente inviato da sinapse75 (Messaggio 4982391)
Forse ho capito perche questa mattina non ha funzionato.........
Luciano è possibile che ogni intervento sulla telemetria (come la riassegnazione dei sensori, maiuscole, minuscole, ecc) bisogna necessariamente spegnere e riaccendere la tx per fare riconoscere eventuali modifiche allo script lua?

Non saprei...solitamente faccio tutte le operazioni di definizione sensori su Companion e provo tutto su PC. Quando funziona tutto su PC scarico sulla radio le definizioni dei modelli e copio i relativi LUA.... e di solito funziona tutto. Quando pasticcio con sensori e LUA non faccio quasi mai le modifiche sulla radio ma lavoro prevalentemente su PC.

TermicOne 18 novembre 16 18:31

Citazione:

Originalmente inviato da LONGFLYER (Messaggio 4981703)
Ciao, da ciò che riporti si comprende che potresti ottenere il medesimo risultato esecutivo usando Global al posto di Static perdendo lo scope a livello di funzione (lo scope è il campo di utilizzo, cioè in quale pezzo di codice quella variabile opera). Essendo però uno script, percio' tendenzialmente corto (e magari anche il solo) c'e' poco da confondersi prediligendo pertanto l'efficienza funzionale. Se vuoi provare, leggo che una variabile se non specificata diversamente è sempre Global, basterà quindi non usare Static per le variabili da aggiungere (se vuoi puoi anteporre a ciascun nome una g minuscola così da evidenziare ulteriormente la globalità della variabile). Può darsi inoltre che si debba dichiarerà le variabili global fuori dalla funzione (nel caso non funzionasse definirle dentro la funzione).

Il suggerimento di LONGFLYER mi ha fatto scoprire una cosa interessante di LUA.

Ho provato quello che avevo trovato scritto in un forum (riportato qualche post fa) ed effettivamente funziona.

Se serve una variabile statica è possibile definirla global; in questo caso è statica ma visibile da tutti gli altri LUA script e da OpenTX, con i relativi vantaggi e svantaggi.

Se serve una variabile statica limitatamente ad uno script si puo' definirla local fuori dalla funzione; la variabile si comporta proprio come una variabile statica ma rimane local allo script (e non è quindi visibile negli altri script).

Ora possiamo applicare il suggerimento per ottimizzare il codice....

LONGFLYER 19 novembre 16 01:22

Citazione:

Originalmente inviato da TermicOne (Messaggio 4982414)
Il suggerimento di LONGFLYER mi ha fatto scoprire una cosa interessante di LUA.

Ho provato quello che avevo trovato scritto in un forum (riportato qualche post fa) ed effettivamente funziona.

Se serve una variabile statica è possibile definirla global; in questo caso è statica ma visibile da tutti gli altri LUA script e da OpenTX, con i relativi vantaggi e svantaggi.

Se serve una variabile statica limitatamente ad uno script si puo' definirla local fuori dalla funzione; la variabile si comporta proprio come una variabile statica ma rimane local allo script (e non è quindi visibile negli altri script).

Ora possiamo applicare il suggerimento per ottimizzare il codice....

Hai compreso tutto! Buon lavoro :wink:

marzipane 23 novembre 16 20:08

1 Allegato/i
ringraziandoti ancora per lo script volevo chiederti però perché la terza barra è diversa dalle altre due?

grz

TermicOne 23 novembre 16 20:50

Citazione:

Originalmente inviato da marzipane (Messaggio 4984308)
....perché la terza barra è diversa dalle altre due?

La barra nera rappresenta la tensione attuale della cella. La barra bianca rappresenta la tensione minima raggiunta dalla cella nel periodo di tempo. Quando attacchi la batteria, anche se non accendi il motore, puo' capitare che il sensore senta una variazione momentanea di tensione e lo script la registra. Dopo aver collegato la batteria se vuoi vedere tutto pulito puoi fare un reset telemetry tenendo premuto il tasto enter. Naturalmente puoi anche non farlo perchè quando accendi il motore la tensione di tutte le celle scende regolarmente e tutto sembra più regolare.

LONGFLYER 23 novembre 16 21:59

Citazione:

Originalmente inviato da TermicOne (Messaggio 4984319)
La barra nera rappresenta la tensione attuale della cella. La barra bianca rappresenta la tensione minima raggiunta dalla cella nel periodo di tempo. Quando attacchi la batteria, anche se non accendi il motore, puo' capitare che il sensore senta una variazione momentanea di tensione e lo script la registra. Dopo aver collegato la batteria se vuoi vedere tutto pulito puoi fare un reset telemetry tenendo premuto il tasto enter. Naturalmente puoi anche non farlo perchè quando accendi il motore la tensione di tutte le celle scende regolarmente e tutto sembra più regolare.

Ciao, magari hai già ottimizzato lo script? Hai potuto notare la differenza effettuando un testo specifico?
Non so come hanno realizzato il software della Taranis (dovrei dare un'occhiata al codice ...), ed è possibile che gli script LUA siano eseguiti in bassa priorità, ma a scanso di equivoci, conviene essere efficaci negli script LUA :wink:

marzipane 23 novembre 16 22:06

Grazie per pronta . in effetti io avevo provato "su scrivania" e non "sul campo" , appena provato fuori ho capito.

Ora servirebbe uno script relativo al gps...:rolleyes: a scopo diattico...

TermicOne 23 novembre 16 22:43

Citazione:

Originalmente inviato da LONGFLYER (Messaggio 4984337)
Ciao, magari hai già ottimizzato lo script? Hai potuto notare la differenza effettuando un testo specifico?
Non so come hanno realizzato il software della Taranis (dovrei dare un'occhiata al codice ...), ed è possibile che gli script LUA siano eseguiti in bassa priorità, ma a scanso di equivoci, conviene essere efficaci negli script LUA :wink:

Non ho ancora provato ad ottimizzare il codice anche perchè stavo cercando un sistema per misurare l'effettivo miglioramento ottenuto con le ottimizzazioni....che comunque farò. La % di CPU consumata dallo script è infatti visualizzabile solo nei mix scripts ma non nei telemetry scripts.

Sicuramente occorre essere efficaci negli script anche perchè gli script LUA sono controllati dal software della Taranis che garantisce massima priorità alle funzioni fondamentali della radio. Se gli script consumano troppa CPU o troppa memoria vengono brutalmente stoppati dalla saggia Taranis. Ecco perchè è scritto abbastanza chiaramente di non usare script LUA per gestire o filtrare output vitali come i movimenti delle parti mobili.

"Mix scripts should not exceed allowed run-time/ number of instructions.
Mix scripts are run with less priority than built-in mixes. Their execution period is around 30ms and is not guaranteed!
Mix scripts can be disabled/killed anytime due to logic errors in script, not enough free memory, etc...)
WARNING - Do not use Lua mix scripts for controlling any aspect of your model that could cause a crash if script stops executing."

TermicOne 23 novembre 16 22:48

Citazione:

Originalmente inviato da marzipane (Messaggio 4984340)
Ora servirebbe uno script relativo al gps...:rolleyes: a scopo didattico...

Non ho il GPS della Taranis e non mi viene proprio in mente cosa ci si possa fare di utile...se suggerisci qualcosa magari proviamo visto che ora con il simulatore telemetria si puo' provare tutto con campanion.

In ogni caso qui ci sono un sacco di esempi anche se non sono adatti allo scopo didattico perchè non sono semplicissimi:

R/C Settings - Lua Scripts


.

LONGFLYER 25 novembre 16 16:12

Citazione:

Originalmente inviato da TermicOne (Messaggio 4984360)
Non ho ancora provato ad ottimizzare il codice anche perchè stavo cercando un sistema per misurare l'effettivo miglioramento ottenuto con le ottimizzazioni....che comunque farò. La % di CPU consumata dallo script è infatti visualizzabile solo nei mix scripts ma non nei telemetry scripts.

Sicuramente occorre essere efficaci negli script anche perchè gli script LUA sono controllati dal software della Taranis che garantisce massima priorità alle funzioni fondamentali della radio. Se gli script consumano troppa CPU o troppa memoria vengono brutalmente stoppati dalla saggia Taranis. Ecco perchè è scritto abbastanza chiaramente di non usare script LUA per gestire o filtrare output vitali come i movimenti delle parti mobili.

"Mix scripts should not exceed allowed run-time/ number of instructions.
Mix scripts are run with less priority than built-in mixes. Their execution period is around 30ms and is not guaranteed!
Mix scripts can be disabled/killed anytime due to logic errors in script, not enough free memory, etc...)
WARNING - Do not use Lua mix scripts for controlling any aspect of your model that could cause a crash if script stops executing."

Ciao, visto che non c'è un timestamp < 10ms e la bassa priorità degli script non garantisce una regolarità, penso che per avere un indice di miglioramento puoi solo osservare quante volte risparmi di eseguire intere ramificazioni di codice. Per l'appunto, ponendo:
- un contatore (var. statica) aggiornato a prescindere ad ogni ingresso di script;
- in una ramificazione di codice per una cella di batteria, stampi il valore del contatore e poi lo resetti;
- se vuoi, puoi affiancarlo al precedente così da avere anche un minimo di storia per meglio vedere il trend ... nulla poi vieta di riportare per ciascuno il relativo timestamp.

In questo modo, vedrai sul display della radio quante volte hai risparmiato la ramificazione di codice della cella. Visto che le celle sono 6, avrai risparmiato quel valore * 6 (se non ricordo male lo script che lessi).

TermicOne 25 novembre 16 16:37

Grazie per il suggerimento! Lo faccio e poi farò sapere...

marzipane 30 gennaio 17 18:33

una domanda un po così:

vorrei fare uno script che a secondo delle posizioni dello switch mette a display un determinato testo
ad esempio: se SD^ "Stabilizzato"

fattibile?

o che ha tutta la lista delle modalità di volo e in base a quella attuale viene evidenziata (tipo fondo nero scritta bianco)

non si tratta di ricevere la modalità dalla scheda ma di una cosa testuale proprio impostata prima a secondo delle modalità impostate sulla scheda

qualche suggerimento?
grz

marzipane 30 gennaio 17 21:17

1 Allegato/i
ho scritto una roba molto primitiva ma in parte è quello che voglio

premetto che sono partito dall'esempio della guida alla voce
lcd.drawSwitch
quello che in più vorrei è che in base alla posizione dello switch la corrispondente riga venga evidenziata

fattibile?

TermicOne 31 gennaio 17 08:24

Sicuramente fattibile semplicemente aggiungendo qualche if per far apparire il testo solo nella corrispondente posizione dell'interruttore.

...anche se personalmente, per esperienza diretta e personale, ritengo che le indicazioni della modalità di volo (sia per aerei che per multicotteri) debbano provenire dalla telemetria della scheda di controllo per evitare pericolosi fraintendimenti. Ad esempio se la scheda perde il fix GPS l'interruttore ti dice ancora RTL o LOITER e tu pensi che lo sia) ma la scheda rimane magari in STAB e se ne va a spasso....Se poi hai attivato i fail safe (altamente sconsigliato) il rischio di confusione é ancora maggiore ...ma qui su questo tema siamo OT e se vuoi possiamo continuare in altro thread.

marzipane 31 gennaio 17 10:16

parliamo cmq di un quadricottero molto semplice per svolazzare sopra i campi cmq...

questo mi serve solo per ricordarmi le posizioni dello switch, sono d'accordo con le considerazioni che hai fatto tu.

quindi la domanda ora è come faccio ad evidenziare lo status della posizione dello switch?

con lcd.drawSwitch metto a video il nome dello switch ma come faccio ad ottenere il suo valore per poi mettere una condizione IF a secondo del valore?
e poi il valore è -1, 0, 1? (una mia ipotesi)

marzipane 31 gennaio 17 17:08

1 Allegato/i
fatto...

e funziona come volevo.
le modalità che uso sono sempre quelle, e cmq mi dà un'idea di come è settata la modalità in partenza, che poi vada in rtl per qualche motivo è un altro discorso

Lua script per tutti!!

TermicOne 31 gennaio 17 21:06

1 Allegato/i
Citazione:

Originalmente inviato da marzipane (Messaggio 5009248)
fatto...
e funziona come volevo.

ottimo!

...un semplice esempio di come con pochi statements sia possibile realizzare semplici ma utili pagine personalizzate.

http://www.baronerosso.it/forum/atta...3&d=1485889696

Ale_Zakko 08 agosto 17 17:41

Che voi sappiate, può uno script impostare la schermata telemetria su un determinato modello quando viene selezionato? Senza dover tenere premuto il pulsante page? Grazie!

Ippon 22 novembre 17 08:36

Salve a tutti,
ho scritto un semplice script che mi visualizza la tensione totale del pacco batterie ed i valori delle singole celle.
La visualizzazione a display è perfetta, completa di decimali.
Ho configurato poi uno switch in modo che mi pronunci i valori.
Succede però una cosa strana, la tensione totale del pacco viene pronunciata completa di decimali, quella delle singole celle no.
Il valore delle celle viene pronunciato arrotondato,
es. 3,97 pronuncia 4, 3,92 pronuncia 3 ecc.
Qualcuno può aiutarmi.
Grazie in anticipo.



Inviato dal mio iPad utilizzando Tapatalk

TermicOne 22 novembre 17 10:52

Posso tentare di aiutarti ma occorrerebbe avere lo script che stai usando

Ippon 22 novembre 17 19:01

Citazione:

Originalmente inviato da TermicOne (Messaggio 5073467)
Posso tentare di aiutarti ma occorrerebbe avere lo script che stai usando



Per prima cosa grazie per la risposta.
In allegato ti invio copia dello script, foto di quanto visualizzato dalla radio e i print screen delle schermate del companion, riguardanti la telemetria e le Funzioni speciali.
Come dicevo nel mio msg, sul display della radio la visualizzazione è corretta, pertanto credo che lo script sia corretto.
Il problema è legato a cosa la radio pronuncia.
Scusa se allego direttamente le immagini, ma non ho capito come fare per allegare un file zip al mio messaggio.
Grazie

https://uploads.tapatalk-cdn.com/201...5eaded52f9.jpg
https://uploads.tapatalk-cdn.com/201...542f219568.jpg
https://uploads.tapatalk-cdn.com/201...737fb002ba.jpg
https://uploads.tapatalk-cdn.com/201...7be3c299d8.jpg


Inviato dal mio iPhone utilizzando Tapatalk

TermicOne 22 novembre 17 22:28

Ora ho capito. Lo script serve unicamente per la visualizzazione. Per la voce usi la funzione standard Play Value su un interruttore ....e sembra che questa abbia il problema dei decimali.

Non l'ho provata sulla Taranis ma su Companion a me funziona correttamente e la voce della simulazione recita il valore della cella con un decimale. Unica differenza rispetto alla tua è che io ho lasciato tutto in inglese.

Nel tuo caso è solo la radio che ha antipatia per i decimali delle celle o anche Companion?

Ippon 23 novembre 17 17:23

Citazione:

Originalmente inviato da TermicOne (Messaggio 5073558)
Ora ho capito. Lo script serve unicamente per la visualizzazione. Per la voce usi la funzione standard Play Value su un interruttore ....e sembra che questa abbia il problema dei decimali.



Non l'ho provata sulla Taranis ma su Companion a me funziona correttamente e la voce della simulazione recita il valore della cella con un decimale. Unica differenza rispetto alla tua è che io ho lasciato tutto in inglese.



Nel tuo caso è solo la radio che ha antipatia per i decimali delle celle o anche Companion?



Ho fatto altre prove utilizzando questa volta il simulatore della telemetria incluso in Companion ed ho capito qual’è la logica di funzionamento degli annunci.
Praticamente la funzione “suona valore” arrotonda il valore pronunciato considerando la seconda cifra dopo la virgola.
Pertanto:
3,96 dirà 4
3,92 dirà 3,9 ecc.
Inizialmente non avevo capito questa cosa in quanto le misurazioni reali delle celle erano tutte oltre 3,95, pertanto il valore pronunciato era sempre 4, questo mi aveva indotto a pensare che non venissero pronunciati i decimali.
TermicOne grazie comunque per le tue risposte.
Un saluto


Inviato dal mio iPhone utilizzando Tapatalk

TermicOne 02 febbraio 18 14:42

Un bel sito segnalato da akrobaticone dove si trovano un po' di info su script lua e molto altro

http://rcdiy.ca/category/0400-lua/

brandol 31 maggio 18 09:12

Lua Script e ricezione dati telemetrici.
 
Buongiorno a tutti,
ho letto con grande interesse tutta la discussione, io ho assemblato un quadricottero con fly control Naza mv2 ricevente X8R e Tx Taranis qx7, ho configurato il tutto e piano piano ho già effettuato dei test di volo in hovering più diverse traslazioni totale 15 minuti, passiamo al dunque ... ora da ciò che ho capito dovrei scaricare ed installare con le procedure debite il software Lua script che eventualmente mi consentirebbe di poter visualizzare in maniera personalizzabile "caratteri grandi, posizionamento dei dati a piacimento " i valori telemetrici.
Ma questi benedetti valori telemetrici vengono trasmessi dalla naza direttamente alla taranis "senza altri dispositivi" e tramite il software vengono elaborati ???
La cosa che mi lascia perplesso sono i valori di tensione di ogni singola cella, secondo il mio parere il cavetto di bilanciamento delle batterie dovrebbe in qualche modo essere collegato a una sorta di dispositivo in grado di monitorare lo stato delle celle e dopo di che anzi contestualmente il dato rilevato dovrebbe essere trasmesso alla Taranis.
Gradirei un Vostro parere.

ioteo 31 maggio 18 11:17

Configurando adeguatamente controller di volo, la risposta é si, da una porta seriale ottieni un segnale che puoi collegare alla Smart port della ricevente.
Per la tensione delle singole celle ti serve un sensore aggiuntivo, altrimenti sempre mediante fc puoi ottenere la tensione totale.


Inviato dal mio iPhone utilizzando Tapatalk

brandol 31 maggio 18 13:02

Citazione:

Originalmente inviato da ioteo (Messaggio 5105570)
Configurando adeguatamente controller di volo, la risposta é si, da una porta seriale ottieni un segnale che puoi collegare alla Smart port della ricevente.
Per la tensione delle singole celle ti serve un sensore aggiuntivo, altrimenti sempre mediante fc puoi ottenere la tensione totale.


Inviato dal mio iPhone utilizzando Tapatalk

Scusa, mi potresti indicare uno schemino per il collegamento ? Gentile.

ioteo 31 maggio 18 13:29

Scusa avevo letto male, ho confuso Naza con Naze...
Temo non sia immediata la cosa, qualcuno l’ha fatto ma ha realizzato un’interfaccia specifica.


Inviato dal mio iPhone utilizzando Tapatalk

brandol 31 maggio 18 14:21

tu hai qualche traccia da seguire ??


Tutti gli orari sono GMT +2. Adesso sono le 22:18.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002