miliamperios.com

Bootstrap Framework 3.3.6

Más de una docena de componentes reutilizables construidos para proporcionar iconografía, menús desplegables, grupos de entrada, navegación, alertas, y mucho más ...

El mundo del RC y el PC juntos. Fundado el 7 de Febrero del 2005.

Moderador: Moderadores

Avatar de Usuario
Por Pichi_Arg
#1378500
Hola compañeros!

Soy un aeromodelista que comenzó de pequeño armando y pintando avioncitos de plástico, hasta que mi tío Agustín me regalo mi primer VC, un Stuka (negro) de plástico de la casa Cox, con un .049ci....algo realmente imposible de volar :roll:
Luego me pase al RC, mi primera emisora fue una Futaba Attack de 4 canales...allá en los ´80, en mi pais era un lujo eso.
Llegado a España, luego de pasar por una Multiplex (que mejor olvidar), puede comprarme una HITEC Eclipse 7, mi primer emisora con trims digitales!
Pasaron los años y el mercado iba evolucionando, por lo que vendí mi Eclipse y dí el salto a la que sigo considerando una de las mejores emisoras del mercado por precio y calidad, una Hitec Aurora 9...una verdadera maravilla!
Con esta emisora uno puede configurar ABSOLUTAMENTE TODO, cada una de los sticks, interruptores y canales, tal y como uno quiera.
Lamentablemente tiene un fallo, y es que si uno le conecta la lipo al revés, de la placa sale más humo que cuando hago un asado con los amigos... :cry:
Luego de haberme cargado la emisora, me puse a leer y leer sobre la Taranis 9 plus.
Le consulte a compañeros del club que la utilizan y todos me dijeron lo mismo:
"si te gusta programar y liarte con el ordenador, es tu radio, podrás hacer con ella lo que quieras"
...y como soy mazoca, me la compré! :lol:

Señores, con esta radio se puede hacer lo mismo que con una HITEC AURORA 9X...y un millón de cosas más que jamás podras hacer ni en una Hitec, ni en una Futaba (bueno, en esta es que no se puede hacer nada), ni en ninguna otra marca 8)

Como bien me dijo uno de aquellos compañeros sobre si me gustaba programar, y de echo, es una de mis faenas el programar PLCs, me puse a investigar como programar la interface de la TARANIS 9+.

En este hilo, lo que pretendo es traspasar lo poco que voy aprendiendo de programar los LUA SCRIPTS , dichos scripts (o códigos) pueden ser utiles para poder visualizar los datos de algún sensor de telemetría, como nivel de bateria, posicion de GPS, altura, velocidad, rpm...etc, etc
También trataré de explicar como customizar una pantalla para visualizar datos que uno quiera guardar (como el nº de licencia de la federación o nº de socio del club)...o simplemente colocar tu nombre, para que la emisora "no se pierda" (en manos de gente ajena).

Espero poder ayudar :wink:
Avatar de Usuario
Por Pichi_Arg
#1378503
Además de que a primera vista sabemos que la pantalla de nuestra Taranis es monocromática retroiluminada, lo siguiente que debemos saber es el tamaño de nuestra pantalla.
La Taranis 9+ cuenta con una pantalla de 212 pixels de ancho por 64 pixels de altura.

Por medio de un código LUA podremos acceder a la visualización de cualquier variable de la emisora, siempre y cuando esté dentro de esta superficie de 212x64 pixels.

Por ahora, lo más sencillo, es crear un pequeño código al cual accederemos por medio del botón PAGE.
Para ello, primero hay que crear el código en un archivo de texto con la extensión ".lua"

Particularmente utilizo el BLOC DE NOTAS de Windows, y al grabar el archivo le cambio la extensión de .txt a .lua
Luego se podrá editar, siempre y cuando se configure el Windows diciendole que abra este tipo de archivos con el Bloc de Notas.

El archivo generado se debe guardar en la SD, más exactamente en la carpeta SCRIPTS/TELEMETRY

Dentro de esta carpeta iremos guardando los scripts que vayamos creando.

Mi consejo es ir probando los scripts con el simulador del OpenTx Companion (mi version es la 2.1.9).
Avatar de Usuario
Por LUAR
#1378504
Hola Pichi_Arg:
Antes de anda darte las gracias por compartir tus conocimientos.
Me parece un tema muy interesante que ayudará a muchos de nosotros aunque desgraciadamente no soy propietario de una (tengo una MC20 que espero que dure muchos años), pero aun así me suscribo al tema.
Un saludo.
Raúl.
Avatar de Usuario
Por Pichi_Arg
#1378506
Para poder "escribir" algo en la pantalla se debe crear un código de este estilo:


local function run(event)
lcd.clear()
lcd.drawText(0,30,"FORO MILIAMPERIOS")
end
return{run=run}

Con solo copiar esas 5 líneas, pegarlas en un archivo de bloc de notas y guardarlas como "test.lua", ya habremos generado nuestro primer código de LUA (o LUA Script).
Se vería de esta manera:
PIC-0.jpg

Paso a explicar que significa cada línea:

local function run(event) / inicia un algoritmo que funcionará todo el tiempo que este la emisora encendida
lcd.clear() / limpia la pantalla de cualquier otro script que la hay autilizado
lcd.drawText(0,30,"FORO MILIAMPERIOS") / escribe a partir de la columna "0" y la línea "30" la palabra que estará entre comillas.
end / finaliza el algoritmo
return{run=run} / hace que el algoritmo vuelva a repetirse


Me gustaría que ahora lo intentes, cambiando el texto por cualquier otro texto, y lo cambies de ubicación para ir entendiendo el mecanismo. :wink:
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
Por Pichi_Arg
#1378507
LUAR escribió: ↑
Mar, 28 Nov 2017 21:51
Hola Pichi_Arg:
Antes de anda darte las gracias por compartir tus conocimientos.
Me parece un tema muy interesante que ayudará a muchos de nosotros aunque desgraciadamente no soy propietario de una (tengo una MC20 que espero que dure muchos años), pero aun así me suscribo al tema.
Un saludo.
Raúl.
Gracias Raul!
Te deseo de que dure...y mucho!!! :D ...que la cosa no está para cambiar de emisora seguido...jejejeje
Realmente espero que sea de ayuda y la gente que no sabe programar se le quite el miedo. :wink:
Saludos!!!
Avatar de Usuario
Por Pichi_Arg
#1378511
Ahora les presentaré una pantalla un poco más compleja, en donde podremos jugar con los tamaños de las letras de los textos, el fondo de la pantalla y el parpadeo de algún texto:

local function run(event)
lcd.clear()
local fechactual = getDateTime()
lcd.drawFilledRectangle(0,0,212,64,15, GREY_DEFAULT)
lcd.drawText(20,0, "FORO MILIAMPERIOS", DBLSIZE + INVERS + BLINK)
lcd.drawText(1,20, "Licencia num.: 0001", SMLSIZE + INVERS )
lcd.drawText(1,30, "Socio num.: 001", SMLSIZE + INVERS )
lcd.drawText(1,40, "Club: LOCOS POR LOS AVIONCITOS", SMLSIZE + INVERS )
lcd.drawText(1,50,"Dia: " , SMLSIZE + INVERS )
lcd.drawText(lcd.getLastPos()+2,50,fechactual.day.."/"..fechactual.mon.."/"..fechactual.year, SMLSIZE + INVERS )
lcd.drawText(1,58,"Hora: " , SMLSIZE + INVERS )
lcd.drawText(lcd.getLastPos()+2,58,fechactual.hour..":"..fechactual.min, SMLSIZE + INVERS )
upTime = getTime() / 100
lcd.drawTimer(120, 58, upTime, TIMEHOUR + INVERS)
end
return { run=run }


Copiar todo el texto que está en negrita y pegarlo en un archivo de bloc de notas y guardarlo como "mah-foro.lua"
PIC-1.jpg

Paso a explicar cada línea:

local function run(event)
lcd.clear()
local fechactual = getDateTime()
rescata la fecha desde el sistema de la configuración de la emisora
lcd.drawFilledRectangle(0,0,212,64,15, GREY_DEFAULT)
pinta un rectangulo negro partiendo de la coordenada 0,0 y con un tamaño de 212x64,
o sea, toda la pantalla

lcd.drawText(20,0, "FORO MILIAMPERIOS", DBLSIZE + INVERS + BLINK)
escribe el texto partiendo de las coord. 20,0, con las letras en un tamaño doble, en invertido y parpadeando
lcd.drawText(1,20, "Licencia num.: 0001", SMLSIZE + INVERS )
escribe el texto partiendo de las coord. 1,20 con las letras en tamaño reducido y fondo invertido
lcd.drawText(1,30, "Socio num.: 001", SMLSIZE + INVERS )
lcd.drawText(1,40, "Club: LOCOS POR LOS AVIONCITOS", SMLSIZE + INVERS )
lcd.drawText(1,50,"Dia: " , SMLSIZE + INVERS )
lcd.drawText(lcd.getLastPos()+2,50,fechactual.day.."/"..fechactual.mon.."/"..fechactual.year, SMLSIZE + INVERS )
partiendo de la última posicion de escritura, luego escribirá el DIA, MES y AÑO
lcd.drawText(1,58,"Hora: " , SMLSIZE + INVERS )
escribirá el texto en la coordenada indicada
lcd.drawText(lcd.getLastPos()+2,58,fechactual.hour..":"..fechactual.min, SMLSIZE + INVERS )
escribirá la hora y minutos actuales en la coordenada indicada
upTime = getTime() / 100
lee la hora desde el sistema
lcd.drawTimer(120, 58, upTime, TIMEHOUR + INVERS)
escribirá el tiempo de algun temporizador que hayamos configurado previamente en el modelo actual
end
return { run=run }
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
Por Pichi_Arg
#1378513
...y para acabar por hoy, les dejaré uno que he hecho para todo aquel que tenga un modulo de GPS.
Yo lo utilizo para controlar la velocidad de mis aviones de pylon.
Solo me interesa visualizar lo siguiente:
Velocidad actual
Velocidad máxima
Altura actual
Altura máxima

Aquí se los dejo, solo es copiar, pegar y guardar como "gps_telem.lua"

local function run(event)
lcd.clear()
lcd.drawText(15,5, "Foro Miliamperios", SMLSIZE)
lcd.drawNumber(200, 5, getValue("GSpd"), XXLSIZE)
lcd.drawNumber(100, 50, getValue("GAlt"), MIDSIZE)
lcd.drawText(6, 20, "ALT. MAX:", SMLSIZE)
lcd.drawNumber(100, 20, getValue("GAlt+"), SMLSIZE)
lcd.drawText(6, 30, "VEL. MAX:", SMLSIZE)
lcd.drawNumber(100, 30, getValue("GSpd+"), SMLSIZE)
lcd.drawText(6, 54, "ALTURA")
lcd.drawText(120, 50, "VELOCIDAD", MIDSIZE)
lcd.drawRectangle(107, 1, 104, 62)
lcd.drawRectangle(1, 1, 105, 14)
lcd.drawRectangle(1, 16, 105, 47)
end
return{run=run}

PIC-2.jpg
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
Por Pichi_Arg
#1378514
Para poder ir probando los distintos scripts, les recomiendo usar el OpenTx Companion.

Lo primero es crear un modelo cualquiera, dará igual como se configure el modelo.
Dentro de la configuración de este modelo, se debe ir a la pestaña de TELEMETRIA.
Haciendo scroll hasta abajo del todo, se aprecian 4 pestañas que dicen "Pantalla telemetria 1", "Pantalla telemetria 2", "Pantalla telemetria 3" y "Pantalla telemetria 4".
PIC-4.jpg
En "perzonalizar tipo de pantalla" colocaremos "Script", automáticamente en el desplegable de su derecha se podrá seleccionar los script que hayamos guardado en el directorio de la SD (el cual es un clon en el PC de la SD de la emisora).
Una vez hecho esto, recomiendo cerrar la ventana de la configuracion del modelo y entrar directamente por medio del botón de SIMULADOR que está abajo del todo en la ventana donde se ven todos los modelos que tenemos guardados en memoria.
PIC-3.jpg
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
Por LUAR
#1378572
Hola Pichi_Arg:
Tengo un problema, bueno muchos, estoy haciendo los deberes y me encuentro con:
  • No tengo Taranis.
  • Donde guardo del pc el fichero lua que genero.
  • En ajuste he asignado una ruta a Estructura de archivos SD", ha guardado el fichero lua pero no aparece en el desplegable.
  • Si escribo en el espacio del desplegable el nombre del fichero y lo simulo me aparece:
screenshot-2.png
Me puedes decir ¿donde he de guardar el fichero para que lo encuentre?
¿Como capturas la imagen del simulador con los botones, a mi solo me guarda la pantalla.

Gracias.
Un saludo.
Raúl.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
Por Lytium
#1378573
Muchas gracias por compartir tus conocimientos y tiempo, tengo una taranis y con el tema de los lua no me entero voy a seguir tu hilo con atención .
Un saludo.
Avatar de Usuario
Por Pichi_Arg
#1378582
LUAR escribió: ↑
Vie, 01 Dic 2017 0:36
Hola Pichi_Arg:
Tengo un problema, bueno muchos, estoy haciendo los deberes y me encuentro con:
  • No tengo Taranis.
  • Donde guardo del pc el fichero lua que genero.
  • En ajuste he asignado una ruta a Estructura de archivos SD", ha guardado el fichero lua pero no aparece en el desplegable.
  • Si escribo en el espacio del desplegable el nombre del fichero y lo simulo me aparece:
screenshot-2.png
Me puedes decir ¿donde he de guardar el fichero para que lo encuentre?
¿Como capturas la imagen del simulador con los botones, a mi solo me guarda la pantalla.

Gracias.
Un saludo.
Raúl.
No es necesario contar con la radio para probar los scripts, sí que es necesario tener el OpenTx Companion, por lo menos, mi misma version, ya que con la siguiente no sé si será igual (calculo que sí, pero no a ciencia cierta).

Deberás tener una estructura de archivos tal y como está en la SD de la emisora.
Para ello, deberias crear una carpeta en tu C: que se llame SD.
Dentro de esa carpeta creas otra que se llame SCRIPTS.
Dentro de SCRIPTS creas una que se llame TELEMETRY.
Siempre todo en mayúsculas.

En el Companion, debes ir a EDITAR AJUSTES, y en el casillero que dice "Esctructura de archivos SD", debes seleccionar la carpeta que se llama "SD"

Si todo esto lo tienes tal cual lo acabo de explicar, y aun asi no te lee el LUA, entonces debes decirme si al cambiar la extension del archivo, realmente estas cambiando la extension o es que al nombre lo estas llamando gps.lua.txt , lo cual es muy distinto a gps.lua
Te lo digo porque en el explorador de archivo, si no configuras el "Ver extesion de archivo" entonces no verás la extension y renombraras al archivo sin poder cambiar su extension.
Para que sea correcto se debe abrir una ventana de Explorador de Archivos, ir a Organizar, Opciones de carpeta y busqueda, picar la pestaña Ver y desmarcar la casilla que dice: "Ocultar las extensiones de archivo para tipos de archivos conocidos"

Una vez hecho esto, deberias poder ver las extensiones de todos los archivos de tu ordenador.
Ahora debes poder ver si el archivo del lua script se llama "gps.lua" (el correcto) o "gps.lua.txt" (el incorrecto).

Si hasta acá has hecho todo esto y aun sigue sin funcionar, siempre debes recordar que para que los cambios que hagas en el COmpanion se hagan efectivos, se debe cerrar la ventana del modelo, y volver a abrirla.
A veces hasta es necesario cerrar por completo el Companion y volver a abrir y voile!

Con respecto a las imagenes que he colgado, lo que he hecho son fotos de pantalla con la tecla "ImprPant" de mi teclado, luego abres el PAINT, haces Ctrl+N y luego Ctrl+V y se pegará la imagen capturada.
Luego edito el rectagulo que me interesa mostrar, y ya esta.

A ver si ahora lo logras!

Saludos!
Avatar de Usuario
Por Pichi_Arg
#1378595
Buenas a todos!
Hoy me interesa hacerles conocer los comandos correspondientes a los tamaños y tipos de caracteres que podremos utilizar en una línea de comando del tipo lcd.drawText (x,y,"texto",--tipo de caracter--)

Los scripts para la Taranis cuentan con las siguientes variantes de caracteres:

0 (o dejando en blanco el espacio) caracter normal
XXLSIZE tamaño extra grande - SOLO PARA NÚMEROS
DBLSIZE tamaño doble
MIDSIZE tamaño medio
SMLSIZE tamaño pequeño
INVERS modo invertido, como si se utilizara un rotulador resaltador.
BLINK texto parpadeante

Un pequeño script en donde podremos ver cada una de esas fuentes con su estilo.
Lamentablemente la BLINKING no se verá, ya que solo podrán verlas en su Companion o en la emisora.

Copiar y pegar el siguiente script:

local function run(event)
lcd.clear()
lcd.drawText(1,1,"Normal sin 0")
lcd.drawText(80,1,"Normal con 0",0)
lcd.drawText(160,1,"INVERS",INVERS)
lcd.drawText(160,9,"BLINK",BLINK)
lcd.drawText(80,9,"SMLSIZE",SMLSIZE)
lcd.drawText(1,16,"DBLSIZE",DBLSIZE)
lcd.drawText(1,40,"DBLS-INVERS",DBLSIZE+INVERS)
lcd.drawText(160,20, "23", XXLSIZE)
end
return{run=run}



PIC-5.jpg

Como pueden observar, es posible hacer combinaciones de tamaño con el tipo de visualizacion de la fuente.
Con respecto al tamaño XXLSIZE, solo se pueden utilizar con números, no con letras (por lo menos yo no he podido)
Por lo tanto, es una buena opción como visualizador de una altura, temperatura, voltaje, rpm o dato importante que uno quiera visualizar mientras está volando, ya que con una pasada de ojo por la pantalla será fácil de ver.

Si una de las líneas del script no les interesa que se ejecute, con solo colocar dos signos "-" delante hará que el script ignore la línea.
Esto también sirve para hacer comentarios sobre lo que se está haciendo, por ejemplo:

local function run(event)
lcd.clear()
lcd.drawText(1,1,"Normal sin 0")
--El segundo texto no me interesa que se vea
--lcd.drawText(80,1,"Normal con 0",0)
lcd.drawText(160,1,"INVERS",INVERS)
lcd.drawText(160,9,"BLINK",BLINK)
lcd.drawText(80,9,"SMLSIZE",SMLSIZE)
lcd.drawText(1,16,"DBLSIZE",DBLSIZE)
--No me interesa que se vea el DBLSIZE + INVERS
--lcd.drawText(1,40,"DBLS-INVERS",DBLSIZE+INVERS)
--Voy a cambiar el numero de 23 a 57
lcd.drawText(160,20, "57", XXLSIZE)
end
return{run=run}




PIC-6.jpg
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
Por LUAR
#1378604
Hola Pichi_Arg:
Pichi_Arg escribió:En el Companion, debes ir a EDITAR AJUSTES, y en el casillero que dice "Esctructura de archivos SD", debes seleccionar la carpeta que se llama "SD"
Gracias, había creado una carpeta con la estructura de scripts y telemetry pero no se llamaba SD.

Lo de la imagen pensé que lo hacia Companion al pinchar sobre la cámara y me faltaba validar algo, pero ya veo que es con imprimir pantalla y recortar.
Gracias de nuevo.
A ver si tengo tiempo para ir practicando y aprendiendo que me parece muy interesante aunque no tenga Taranis.
Un saludo.
Raúl
Por cortijo
#1378621
Hola Pichi.arg: primero darte las gracias por el proyecto y por tu tiempo.
Decirte que estoy igual que Luar, me sale "script syntax error" y creo que he hecho bien todos los pasos que indicas, esta hecha la carpeta y en telemetry he puesto los dos archivos, con los dos me da el mismo mensaje
un saludo
He metido otro lua y tambien me da el fallo. Lo estoy haciendo desde el open en el pc
Avatar de Usuario
Por Pichi_Arg
#1378623
cortijo escribió: ↑
Sab, 02 Dic 2017 11:05
Hola Pichi.arg: primero darte las gracias por el proyecto y por tu tiempo.
Decirte que estoy igual que Luar, me sale "script syntax error" y creo que he hecho bien todos los pasos que indicas, esta hecha la carpeta y en telemetry he puesto los dos archivos, con los dos me da el mismo mensaje
un saludo
He metido otro lua y tambien me da el fallo. Lo estoy haciendo desde el open en el pc
Hola compañero!
La verdad es que no lo entiendo el porque...
Tienes habilitado los lua en "Editar ajustes"?
pic-9.jpg
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
Por Pichi_Arg
#1378624
Intentaré explicar como "leer" valores de la emisora, como ser la posición de los sticks, potenciómetros o interruptores.
Cada uno de estos mandos tiene su respectivo nombre en el script de Taranis.
Los mas sencillos son los poteciómetros e interruptores, ya que el nombre que nos aparece en el simulador será el mismo que utilizaremos en el script.
Los sticks son los siguientes:

Palanca del gas : thr
Palanca de direccion: rud
Palanca de profundidad: ele
Palanca de alerones: ail

Si abren el OpenTx COMPANION y inician el simulador podrán ver los nombres de cada uno de los interruptores y potenciometros con los que cuenta la emisora.
Para aquellos que no tienen Taranis debo avisar que el SH es un interruptor del tipo "pulsador", o sea, no queda enclavado en la posicion inferior, a la que uno suelte la palanca vuelve a su posicion inicial.

Los valores de cada una de estas entradas va desde -1024 hasta 1024.

El siguiente script e suna demostración de visualización de los valores del pulsador "SH".

La primera parte del script verán una cosa rara, es un algoritmo para redondear y poder visualizar de forma porcentual los valores del interruptor, ya que como antes dije, los valores van de -1024 a 1024, entonces este algoritmo lo que hace es llevar el -1024 a -100%
y el 1024 a 100%.

Cambiando el "sh" por cualquier otro nombre de entrada (tanto de interruptor, potenciometro o palanca) podrán observar como va variando el valor de la misma.

Este es el script:



function round(num,decimal)
local mult= 10^(decimals or 0)
return math.floor(num * mult + 0.5) / mult
end

local function run(event)
local Valor = getValue ('sh') / 10.24
lcd.clear()
lcd.drawText(0,0,"VALOR DE ENTRADA %:",MIDSIZE)
lcd.drawText(lcd.getLastPos()+5,0,round(Valor, 2), DBLSIZE)

if Valor == 100 then
lcd.drawText(0,40,"EUREKA",DBLSIZE)
end

end
return{run=run}

PIC-7.jpg

También podrán observar que he incluido un comando "if-then", en el cual lo que hice fué que cuando el valor de la entrada sea igual a 100, entonces se verá un texto que dice "EUREKA" ;)

PIC-8.jpg
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Por cortijo
#1378638
Hola compañero!
La verdad es que no lo entiendo el porque...
Tienes habilitado los lua en "Editar ajustes"?

Solucionado, no se me habia guardado la configuracion de telemetria en opentx
gracias y un saludo
Avatar de Usuario
Por juan-
#1378649
Una peticion a sotavento, que puede sevir para añadir practicidad a la teoría:
Me gustaria que la emisora que me dijese la hora de reloj y el minuto (hh:mm), cada diez minutos después de encender la radio, sin pantalla, sin tocar ninguna tecla y de viva voz.
Avatar de Usuario
Por Pichi_Arg
#1378667
juan- escribió: ↑
Sab, 02 Dic 2017 20:00
Una peticion a sotavento, que puede sevir para añadir practicidad a la teoría:
Me gustaria que la emisora que me dijese la hora de reloj y el minuto (hh:mm), cada diez minutos después de encender la radio, sin pantalla, sin tocar ninguna tecla y de viva voz.
Estupenda idea!
Dejame que busque la información necesaria, hago un script, lo pruebo y si veo que va bien, se los presento.
:wink:
Gracias!!!

¡Elija que Addons deben funcionar, utilice sólo lo que realmente necesita!