Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Radiocomandi


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 17 gennaio 16, 18:27   #1 (permalink)  Top
User
 
L'avatar di TermicOne
 
Data registr.: 02-01-2004
Residenza: Vicino a Saronno
Messaggi: 6.998
FrSky Taranis - Lua scripts per tutti

Una tra le caratteristiche più interessanti di Open TX è la possibilità di estendere le funzioni disponibili della nostra Taranis (che sono già tantissime) con scripts in linguaggio Lua.

Ma questa funzionalità è davvero per tutti o è riservata solo ai guru dell'informatica?

Non mi sono mai avvicinato a questa funzionalità perchè intimorito dal fatto di mettersi ad imparare a 65 anni suonati il linguaggio Lua solo per aggiungere qualche funzionalità ad una radio ....che ne ha già fin troppe!

La possibilità però di disegnare a piacimento delle schermate popolate solo delle informazioni che servono, con caratteri belli grandi e leggibili senza occhiali intanto che si vola e facendo magari anche qualche piccolo calcolo, mi ha stimolato e ho provato ad avventurarmi.

Ho così scoperto che nonostante il linguaggio preveda numerosissimi comandi e funzioni (tanti da perdersi) in fondo si riescono a fare molte cose dal risultato (per me) sorprendente usando solo pochissimi statements dalla sintassi assai semplice.

Lasciando le funzioni più complesse agli esperti penso che la maggior parte di noi si possa avventurare a scrivere poche righe di codice per costruire semplicissimi scripts per generare variabili calcolate (model scripts) e soprattutto disegnare pagine con solo le informazioni che servono durante il volo (telemetry scripts) visualizzate nel modo che ci è più utile.

Penso che possa essere utile mettere in comune questo percorso sia per condividere con altri questo "approccio semplice" ai Lua scripts (non ho trovato un "Taranis Lua scripts for dummies"), sia perchè magari qualche esperto potrà darci commenti e suggerimenti... ...mantenendosi però rigorosamente sulla strada della assoluta semplicità.

Naturalmente possiamo usare questo thread anche per condividere i nostri semplici scripts che magari faranno sorridere i più esperti ma potranno essere di ispirazione anche per altri.

Al momento sto usando la versione 2.0.19 di OpenTx e di Companion.

Luciano
Icone allegate
FrSky Taranis - Lua scripts per tutti-script1.jpg  
TermicOne non è collegato   Rispondi citando
Vecchio 17 gennaio 16, 18:34   #2 (permalink)  Top
User
 
L'avatar di TermicOne
 
Data registr.: 02-01-2004
Residenza: Vicino a Saronno
Messaggi: 6.998
Risorse

Non ho trovato dei tutorial sufficientemente "for dummies" e quindi ho usato questi reference guide:

https://docs.google.com/document/d/1...h.d47rzdjza6kz

https://opentx.gitbooks.io/opentx-lu...guide/content/

Particolarmente utili come guida introduttiva sono le due simpatiche paginette linkate qui:

Grad School | OpenTX University


Una delle cose più interessanti di questi Lua Scripts è che si possono testare interamente usando il simulatore nel Companion per poi passarli sulla radio solo quando funzionano. Per fare questo è comodo avere sul PC una cartella con la copia delle directories della SD della radio e fare in modo che Companion nel "Setting" utilizzi quella cartella.

Per creare i nostri script, visto che saranno semplici, si puo' usare anche il "blocco note".

Una delle cose invece più antipatiche è che non è comodo trovare gli errori perchè non ho trovato come fare un debugging decente. Se manca una virgola lo script non gira dicendo <error> e sono cavoli amari trovare l'errore, spesso per esclusione.

Un'altra cosa antipatica è che mi sono imbattuto in comandi che funzionano perfettamente su Companion ma che non sono riuscito a far girare sulla Taranis. Negli esempi che seguiranno ho messo solo i comandi che girano in entrambi gli ambienti.
TermicOne non è collegato   Rispondi citando
Vecchio 17 gennaio 16, 18:38   #3 (permalink)  Top
User
 
L'avatar di TermicOne
 
Data registr.: 02-01-2004
Residenza: Vicino a Saronno
Messaggi: 6.998
Including Lua in OpenTX Download

Per iniziare potete usare anche solo Companion e provare i vostri primi scripts.

Se invece volete provarli anche sulla radio occorre configurare la vostra Taranis in modo che supporti Lua. Il supporto Lua è infatti una delle opzioni che generano un firmware da caricare sulla radio.

E' tutto molto semplice. Occorre solo seguire il capitoletto "Including Lua in OpenTX Download" nella guida introduttiva linkata sopra.
TermicOne non è collegato   Rispondi citando
Vecchio 17 gennaio 16, 19:18   #4 (permalink)  Top
User
 
L'avatar di TermicOne
 
Data registr.: 02-01-2004
Residenza: Vicino a Saronno
Messaggi: 6.998
Telemetry scripts

Mi è sembrato che gli script più semplici e più utili siano quelli che configurano nuove pagine di telemetria.

Per creare nuove pagine di telemetria è sufficiente creare nella directory SCRIPTS della SD una subdirectory con il medesimo nome del modello in uso. In questa subdirectory verranno messi gli script lua che creano le nuove pagine di telemetria per quel modello.

Ad esempio il mio modello si chiama INSIDE-F5J quindi ho messo il mio primo script telem1.lua nella SD (e nel PC) nella directory \SCRIPTS\INSIDE-F5J\telem1.lua
Icone allegate
FrSky Taranis - Lua scripts per tutti-directory.jpg  
TermicOne non è collegato   Rispondi citando
Vecchio 17 gennaio 16, 19:25   #5 (permalink)  Top
User
 
L'avatar di TermicOne
 
Data registr.: 02-01-2004
Residenza: Vicino a Saronno
Messaggi: 6.998
Primo script per creare una pagina telemetry di esempio

Provate a creare il file telem1.lua nella subdirectory con il nome del vostro modello usando un editor di testo qualsiasi, anche blocco note va bene:

Codice:
local function run()
   
   tempoVolo = model.getTimer(0)

   lcd.drawTimer(100, 1, tempoVolo.value, XXLSIZE)
	
end

return { run=run }
Se tutto è configurato bene e avete salvato telem1.lua nella subdirectory con il nome del vostro modello allora potrete vedere che nel simulatore Taranis di Companion c'è una nuova pagina di telemetria con il timer1 scritto bello grosso in posizione 100 sulla riga 1 (vedi immagine allegata).

Ora possiamo creare le nostre pagine personalizzate mettendo quello che vogliamo visualizzare tra

Codice:
local function run()
e

Codice:
end

return { run=run }
Icone allegate
FrSky Taranis - Lua scripts per tutti-telem1.jpg  
TermicOne non è collegato   Rispondi citando
Vecchio 17 gennaio 16, 19:36   #6 (permalink)  Top
User
 
L'avatar di TermicOne
 
Data registr.: 02-01-2004
Residenza: Vicino a Saronno
Messaggi: 6.998
I comandi da mettere nello script come sopra che ho trovato particolarmente utili e che ho provato sono:

Per leggere i timer
model.getTimer(0)
model.getTimer(1)

esempio:
Codice:
tempoVolo = model.getTimer(0)
Per visualizzare un timer
lcd.drawTimer(x, y, value, flags)
esempio:
Codice:
lcd.drawTimer(100, 1, tempoVolo.value, XXLSIZE)
Per visualizzare un canale qualsiasi (vedi lista)
lcd.drawChannel(x, y, value, flags)
esempio:
Codice:
lcd.drawChannel(26, 48, "tx-voltage", DBLSIZE)
Per visualizzare un testo
lcd.drawText(x, y, text, flags)
esempio:
Codice:
lcd.drawText(100, 45, "tempo volo", 0)
Per disegnare righe di separazione
lcd.drawLine(x1, y1, x2, y2, pattern, flags)
esempio:
Codice:
lcd.drawLine(0, 39, 89, 39, SOLID, 0)
Per maggiori dettagli potete consultare i reference guide linkati nei primi post, ma anche solo con questi 5 tipi di comandi si possono creare telemetry pages che mi sembrano particolarmente interessanti.
TermicOne non è collegato   Rispondi citando
Vecchio 17 gennaio 16, 19:45   #7 (permalink)  Top
User
 
L'avatar di TermicOne
 
Data registr.: 02-01-2004
Residenza: Vicino a Saronno
Messaggi: 6.998
A titolo di esempio ecco un semplice script che usa unicamente i comandi sopra riportati con i quali si possono fare molto semplicemente pagine anche ricche e complesse.

Le righe che iniziano con "--" sono commenti e possono essere omesse


Codice:
local function run()
   
   	-- leggi tempo volo corrente da timer1
	tempoVolo = model.getTimer(0)
	
	-- leggi tempo motore totale da timer2
	tempoMotore = model.getTimer(1)
 	
	-- display tempo motore totale
	lcd.drawText(1, 1, "tempo motore", 0)   
	lcd.drawTimer(1, 12, tempoMotore.value, DBLSIZE)

	-- display tensione batterie TX e RSSI
	lcd.drawText(5, 41, "batt", SMLSIZE)
	lcd.drawText(68, 41, "rssi", SMLSIZE)   
	lcd.drawChannel(26, 48, "tx-voltage", DBLSIZE)
	lcd.drawChannel(87, 48, "rssi", DBLSIZE)	

	-- display tempo volo in grande 
	lcd.drawTimer(100, 1, tempoVolo.value, XXLSIZE)
	lcd.drawText(100, 45, "tempo volo", 0) 
	
	-- righe divisorie
	lcd.drawLine(90, 0, 90, 70, SOLID, 0)
	lcd.drawLine(0, 39, 89, 39, SOLID, 0)

end

return { run=run }
Icone allegate
FrSky Taranis - Lua scripts per tutti-telem2.jpg  
TermicOne non è collegato   Rispondi citando
Vecchio 17 gennaio 16, 19:46   #8 (permalink)  Top
User
 
L'avatar di lambdafly
 
Data registr.: 12-09-2012
Residenza: In the cloud
Messaggi: 2.507
Immagini: 3
Complimenti per l'ottima iniziativa, sicuramente darà la spinta che manca a molti per iniziare a sviluppare script LUA.
lambdafly non è collegato   Rispondi citando
Vecchio 17 gennaio 16, 19:51   #9 (permalink)  Top
User
 
L'avatar di TermicOne
 
Data registr.: 02-01-2004
Residenza: Vicino a Saronno
Messaggi: 6.998
Citazione:
Originalmente inviato da lambdafly Visualizza messaggio
...sicuramente darà la spinta che manca a molti per iniziare a sviluppare script LUA.
...grazie lamdafly...mi auguro che altri amici si avventurino in questo ambiente che all'inizio sembra un pochino ostico ma che apre un sacco di possibilità...

..e che in fondo non è poi tanto difficile se un pensionato di 65 anni è riuscito a farci qualcosa....

Luciano
TermicOne non è collegato   Rispondi citando
Vecchio 17 gennaio 16, 21:45   #10 (permalink)  Top
User
 
L'avatar di alevilla
 
Data registr.: 28-08-2000
Residenza: Novara
Messaggi: 1.094
Citazione:
Originalmente inviato da TermicOne Visualizza messaggio
Una delle cose invece più antipatiche è che non è comodo trovare gli errori perchè non ho trovato come fare un debugging decente. Se manca una virgola lo script non gira dicendo <error> e sono cavoli amari trovare l'errore, spesso per esclusione.
Seguo la discussione con interesse.
Per lavoro, quando devo scrivere del codice, uso Notepad++ che ho scoperto avere la possibilità di settare come linguaggio proprio LUA.
Non è un debugger, ma aiuta visivamente a vedere se tutto è stato scritto nella maniera corretta, soprattutto quando hai diversi processi annidati.
Inoltre non costa nulla e volendo non necessita neanche di installazione. Io stesso uso la versione portable.
Allego schermata.

In attesa di altri post, ti faccio i complimenti per l'iniziativa.

Saluti
Alevilla
Immagini allegate
Tipo file: jpg Cattura.jpg‎ (42,1 KB, 630 visite)
__________________
http://www.thingiverse.com/filotto78/about
"I am responsible for what I say, not for what you understand"
alevilla non è collegato   Rispondi citando
Rispondi

Bookmarks



Strumenti discussione
Visualizzazione

Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
Taranis e LUA script badtime Radiocomandi 2 02 giugno 18 14:12
Lua file per telemetria su taranis plus 2.1 ludiga Radiocomandi 0 16 settembre 15 13:23
Frsky Taranis salvatoremadasa Compro 1 29 aprile 15 22:16
Frsky Taranis Plus gallma Merc. Motori ed Elettronica 1 29 aprile 15 08:12
FrSky Taranis microchip Compro 11 01 aprile 15 23:49



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


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