|
Registrazione | Gallery | FAQ | Lista utenti | Social Groups | Calendario | Cerca | I messaggi di oggi | Segna forums come letti |
| Strumenti discussione | Visualizzazione |
17 gennaio 16, 19:27 | #1 (permalink) Top |
User 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 |
17 gennaio 16, 19:34 | #2 (permalink) Top |
User 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. |
17 gennaio 16, 19:38 | #3 (permalink) Top |
User 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. |
17 gennaio 16, 20:18 | #4 (permalink) Top |
User 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 |
17 gennaio 16, 20:25 | #5 (permalink) Top |
User 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 } Ora possiamo creare le nostre pagine personalizzate mettendo quello che vogliamo visualizzare tra Codice: local function run() Codice: end return { run=run } |
17 gennaio 16, 20:36 | #6 (permalink) Top |
User 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) lcd.drawTimer(x, y, value, flags) esempio: Codice: lcd.drawTimer(100, 1, tempoVolo.value, XXLSIZE) lcd.drawChannel(x, y, value, flags) esempio: Codice: lcd.drawChannel(26, 48, "tx-voltage", DBLSIZE) lcd.drawText(x, y, text, flags) esempio: Codice: lcd.drawText(100, 45, "tempo volo", 0) lcd.drawLine(x1, y1, x2, y2, pattern, flags) esempio: Codice: lcd.drawLine(0, 39, 89, 39, SOLID, 0) |
17 gennaio 16, 20:45 | #7 (permalink) Top |
User 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 } |
17 gennaio 16, 20:51 | #9 (permalink) Top | |
User Data registr.: 02-01-2004 Residenza: Vicino a Saronno
Messaggi: 6.998
| Citazione:
..e che in fondo non è poi tanto difficile se un pensionato di 65 anni è riuscito a farci qualcosa.... Luciano | |
17 gennaio 16, 22:45 | #10 (permalink) Top | |
User Data registr.: 28-08-2000 Residenza: Novara
Messaggi: 1.094
| Citazione:
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
__________________ http://www.thingiverse.com/filotto78/about "I am responsible for what I say, not for what you understand" | |
Bookmarks |
Strumenti discussione | |
Visualizzazione | |
| |
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
Taranis e LUA script | badtime | Radiocomandi | 2 | 02 giugno 18 15:12 |
Lua file per telemetria su taranis plus 2.1 | ludiga | Radiocomandi | 0 | 16 settembre 15 14:23 |
Frsky Taranis | salvatoremadasa | Compro | 1 | 29 aprile 15 23:16 |
Frsky Taranis Plus | gallma | Merc. Motori ed Elettronica | 1 | 29 aprile 15 09:12 |
FrSky Taranis | microchip | Compro | 11 | 02 aprile 15 00:49 |