Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
2 participants
Page 1 sur 1
Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Bonjour à tous. Comme dit dans ma présentation, ce forum et les différente vidéos m'ont permis de bien exploiter la radio de mon gars : x9lite et la mienne xlite, après plusieurs années à voler en Hitec Aurora. Je suis capable de gérer mes phases de vol, fonctions globales, inter logiques, lancer des scripts bref ravi !
J'aimerais pouvoir avoir un script "typé f3k" loisir qui permette d'avoir un timer de temps de vol (cela je gère, il est géré par la télémétrie) et un timer qui enregistre le meilleurs temps de vol. Bien sympa pour se motiver avec mon gars de 12 ans
J'ai voulu utiliser celui ci mais cela ne fonctionne pas https://frskytaranis.forumactif.org/t7253-resoluf3k-enregistrer-le-meilleur-chrono-avec-2-timers
Je comprends son fonctionnement mais cela bugue le timer2 disparait et ne prend pas la valeur du 1 .
Merci par avance.
Pierre
J'aimerais pouvoir avoir un script "typé f3k" loisir qui permette d'avoir un timer de temps de vol (cela je gère, il est géré par la télémétrie) et un timer qui enregistre le meilleurs temps de vol. Bien sympa pour se motiver avec mon gars de 12 ans
J'ai voulu utiliser celui ci mais cela ne fonctionne pas https://frskytaranis.forumactif.org/t7253-resoluf3k-enregistrer-le-meilleur-chrono-avec-2-timers
Je comprends son fonctionnement mais cela bugue le timer2 disparait et ne prend pas la valeur du 1 .
Merci par avance.
Pierre
Dernière édition par PierreF le Sam 13 Juin 2020 - 20:06, édité 1 fois
PierreF- Messages : 16
Date d'inscription : 25/04/2020
Age : 47
Localisation : Gerponville
Re: Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Hello Pierre,
Selon la doc, il est possible de simplifier le code : (Ceci n'est pas un jugement sur le code original )
Tu peux peut-être essayer avec cette version. (Désolé mais avec le covid, je ne suis pas équipé pour tester le code. )
Coyotte
Selon la doc, il est possible de simplifier le code : (Ceci n'est pas un jugement sur le code original )
- Code:
local function run()
local Vol = model.getTimer(0)
local Ret = model.getTimer(1)
if Vol.value > Ret.value then
model.setTimer(1, Vol.value)
end
return 0
end
return {run=run}
Tu peux peut-être essayer avec cette version. (Désolé mais avec le covid, je ne suis pas équipé pour tester le code. )
Coyotte
_________________
... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
(R. Waters)
Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Salut.
Merci ! Je vais essayer aujourd'hui. Une autre question, tu afficherais quoi en réglage du timer 2 avant le premier lancement du script ? Off ?
Merci
Pierre
Merci ! Je vais essayer aujourd'hui. Une autre question, tu afficherais quoi en réglage du timer 2 avant le premier lancement du script ? Off ?
Merci
Pierre
PierreF- Messages : 16
Date d'inscription : 25/04/2020
Age : 47
Localisation : Gerponville
Re: Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Oui je le laisserais en off.
C'est un timer qui ne doit pas évoluer par lui-même... Il sert juste de mémoire.
Par contre, si tu veux garder le meilleurs temps absolu, c-à-d pour toutes les séances de vol, il faudrait probablement sélectionner "Persistant RAZ manuelle".
D'ailleurs... En regardant la config des timers, je me demande s'il ne faut pas simplement choisir "Persistant (Vol)" pour que le script original fonctionne... A tester.
Coyotte
C'est un timer qui ne doit pas évoluer par lui-même... Il sert juste de mémoire.
Par contre, si tu veux garder le meilleurs temps absolu, c-à-d pour toutes les séances de vol, il faudrait probablement sélectionner "Persistant RAZ manuelle".
D'ailleurs... En regardant la config des timers, je me demande s'il ne faut pas simplement choisir "Persistant (Vol)" pour que le script original fonctionne... A tester.
Coyotte
_________________
... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
(R. Waters)
Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Bon j'ai testé. Toujours le même problème sur la X9lite. Si chrono off il ne s'affiche pas et je ne sais pas si le script marche. Si chrono activé il ne tient pas compte du script
Merci
Peirre
Merci
Peirre
PierreF- Messages : 16
Date d'inscription : 25/04/2020
Age : 47
Localisation : Gerponville
Re: Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Une petite question : Quand actives-tu le script ? Sur un switch à la fin du vol je suppose ?
Une autre : Où places-tu le script sur la carte SD ? (Je n'ai pas le temps de chercher après ces infos mais je veux bien faire un essai si tu me dis où tu places cela... )
Coyotte
Une autre : Où places-tu le script sur la carte SD ? (Je n'ai pas le temps de chercher après ces infos mais je veux bien faire un essai si tu me dis où tu places cela... )
Coyotte
_________________
... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
(R. Waters)
Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Déjà merci pour l'aide
Alors le script est activé par fonction spéciale et sur on. Je n'ai pas essayé en effet en fin de vol.
Le timer 1 lui est géré par fonction spéciale et inter logic, en fonction alti il s'enclenche et s’arrête, remise à 0 au bout de 230 secondes.
Le script est sur sd, scripts, functions je l'ai appelé record.lua
Alors le script est activé par fonction spéciale et sur on. Je n'ai pas essayé en effet en fin de vol.
Le timer 1 lui est géré par fonction spéciale et inter logic, en fonction alti il s'enclenche et s’arrête, remise à 0 au bout de 230 secondes.
Le script est sur sd, scripts, functions je l'ai appelé record.lua
PierreF- Messages : 16
Date d'inscription : 25/04/2020
Age : 47
Localisation : Gerponville
Re: Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Ok... Ca marche... (Dans le simulateur s'entend...)
J'ai modifié le code comme suit :
Il faut aussi que le Timer2 ne soit pas sur OFF.
Il faut donc une condition qui ne soit jamais vraie afin que le timer ne se modifie pas lui-même.
J'ai donc créé un inter logique L01 (le N° importe peu)
On associe le Timer2 à L01. Du coup le timer est 'actif'.
Et j'ai configuré Timer 2 en Persistant (RAZ manuelle) .
J'ai mis les deux timers sur la page de télémétrie et hop !
A priori, cela devrait fonctionner chez toi aussi.
Bonne chance,
Coyotte
J'ai modifié le code comme suit :
- Code:
local function run()
local Vol = model.getTimer(0)
local Ret = model.getTimer(1)
if Vol.value > Ret.value then
Ret.value = Vol.value
model.setTimer(1, Ret )
end
return 0
end
return {run=run}
Il faut aussi que le Timer2 ne soit pas sur OFF.
Il faut donc une condition qui ne soit jamais vraie afin que le timer ne se modifie pas lui-même.
J'ai donc créé un inter logique L01 (le N° importe peu)
- Code:
L01 a<x MAX 0
On associe le Timer2 à L01. Du coup le timer est 'actif'.
Et j'ai configuré Timer 2 en Persistant (RAZ manuelle) .
J'ai mis les deux timers sur la page de télémétrie et hop !
A priori, cela devrait fonctionner chez toi aussi.
Bonne chance,
Coyotte
_________________
... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
(R. Waters)
Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Cela fonctionne ! Merci beaucoup !!!!! Je vole avec mon gars de 12 ans et ce petit challenge en f3k loisir va bien le booster
J'essaierai de voir ce que tu as modifié dans le script pour comprendre un peu, et bravo pour le truc pour mettre le timer 2 en état de fonctionner ! bravo ! Je n'aurais jamais trouvé ......
Du coup j'avais trouvé un petit script typé F3k qui mémorisait les meilleurs lancés ..... ce qui peut être bien motivant, mais il ne marchait pas non plus ....... si tu veux y jeter un coup d'oeil top, si pas l'envie ou le temps je comprends, tu m'as déjà bien aidé
Merci encore
J'essaierai de voir ce que tu as modifié dans le script pour comprendre un peu, et bravo pour le truc pour mettre le timer 2 en état de fonctionner ! bravo ! Je n'aurais jamais trouvé ......
Du coup j'avais trouvé un petit script typé F3k qui mémorisait les meilleurs lancés ..... ce qui peut être bien motivant, mais il ne marchait pas non plus ....... si tu veux y jeter un coup d'oeil top, si pas l'envie ou le temps je comprends, tu m'as déjà bien aidé
Merci encore
PierreF- Messages : 16
Date d'inscription : 25/04/2020
Age : 47
Localisation : Gerponville
Re: Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Pour l'explication :
La fonction GetTimer retourne une structure de données qui contient toutes les infos liées au Timer.
(Type, activation, valeur, type de décompte, ... )
La mise à jour du Timer (SetTimer) utilise une structure identique.
Dans le code original, le SetTimer passe une nouvelle structure de données :
Dans le code modifié, je garde la structure de données du 2eme timer et je me contente de modifier sa valeur 'temp'.
(Dans l'absolu, c'est plus propre. Mais cela ne veut pas dire que le code originel est mal torché )
Pour ton autre script, tu peux toujours le poster. Si j'ai le temps, je jetterai un oeil.
Dis-moi juste ce que c'est sensé faire et ce qui ne fonctionne pas.
Bonne soirée,
Coyotte
La fonction GetTimer retourne une structure de données qui contient toutes les infos liées au Timer.
(Type, activation, valeur, type de décompte, ... )
La mise à jour du Timer (SetTimer) utilise une structure identique.
Dans le code original, le SetTimer passe une nouvelle structure de données :
Il y a donc un risque de modifier d'autres valeurs que le temps écoulé.{ mode=0, start=0, value=Vol.value, countdownBeep=0, minuteBeep=false, persistent=2 }
Dans le code modifié, je garde la structure de données du 2eme timer et je me contente de modifier sa valeur 'temp'.
(Dans l'absolu, c'est plus propre. Mais cela ne veut pas dire que le code originel est mal torché )
Pour ton autre script, tu peux toujours le poster. Si j'ai le temps, je jetterai un oeil.
Dis-moi juste ce que c'est sensé faire et ce qui ne fonctionne pas.
Bonne soirée,
Coyotte
_________________
... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
(R. Waters)
Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee- Administrateur
- Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)
Re: Résolu Script 2 timers, un temps de vol et un meilleur temps de vol
Salut.
C'est ce script :
C'est ce script :
- Code:
--[[
F3K Launch Tracker
Telemetry script
REQUIRES OpenTX 2.1.X
Detects and measures launch hights
Releases
1.0 31/10/15 Initial release
1.1 14/11/15 moved the launch detection to the background
start dealing with units
1.2 18/11/15 playNumber now supports 'feet'
1.3 18/06/18 adapted to OpenTX-2.2.1 + sensitivity adaptation removed
(C) 2018 Axel Barnitzke
--]]
-- constants (you may change the 's1' pot and/or the 'sf' switch to your needs)
local thr_id = getFieldInfo('thr').id -- field index throttle stick (demo)
-- local s1_id = getFieldInfo('s1').id -- field index s1 (sensitivity)
local launch_id = getFieldInfo('sf').id -- field index launch enable switch
local LAUNCH_ENABLED = 1024 -- switch value to enable launch detection
-- (1024 back; -1024 front)
local title = "F3K Launch Tracker"
local demo = false -- use throttle stick to simulate hight
-- runtime variables
local altitudes
local alt_id = 0 -- field index telemetry altitude
local vsp_id = 0 -- field index telemetry vertical speed
local vMin = 5 -- launch detected at 5 m/s asc rate
local newTime = 0
local oldTime = 0
local status = 0
local useFeets = false -- Use general settings -> Measurement Units = "imperial" for "feet"
-- Don't forget to adapt the sensor units to feet
local unit_name = 'm'
local units = 9 -- the lady says 'meters'
local m2f = 1.0
-------------------------------------------------------------------------
-- Check if vario is enabled in telemetry section
-------------------------------------------------------------------------
local function initVariometer()
if( getFieldInfo('VSpd') == nil ) then
title = 'Error in Telemtry!'
else
alt_id = getFieldInfo('Alt').id
vsp_id = getFieldInfo('VSpd').id
end
end
-------------------------------------------------------------------------
-- make the launch detection variable
-------------------------------------------------------------------------
local function adjustLaunchDetection()
-- vMin = 5 m/s +/- 3 m/s
-- return (5.0 + (3.0/1024.0 * getValue(s1_id))) * m2f
return (5.0 * m2f)
end
-------------------------------------------------------------------------
-- get altitude from variometer (or throttle stick for testing purposes)
-------------------------------------------------------------------------
local function getAlt()
if(demo) then
local alt
-- get altitude from throttle
alt = (getValue(thr_id) + 1024 ) * 100.0 / 2048.0 -- 0m until 100m
return (alt * m2f)
else
-- get altitude from variometer
return getValue(alt_id)
end
end
-------------------------------------------------------------------------
-- demo: compute vertical speed by comparing current height against last height
-------------------------------------------------------------------------
local newAlt = 0.0
local oldAlt = 0.0
local doldTime = 0
local dnewTime = 0
local deltaAlt
local function demoVspeed()
local vsp
dnewTime = getTime()
newAlt = getAlt()
if(oldAlt == 0.0) then
oldAlt = newAlt
end
deltaAlt = newAlt - oldAlt
vsp = deltaAlt / (dnewTime - doldTime)
oldAlt = newAlt
doldTime = dnewTime
return vsp * 10.0
end
-------------------------------------------------------------------------
-- return variometer Vspd value
-------------------------------------------------------------------------
local function getVspeed()
if (demo) then
-- in demo mode the vertical speed needs some computation
return demoVspeed() * m2f
else
return getValue(vsp_id)
end
end
-------------------------------------------------------------------------
-- draw last 6 altitues on the right side of the screen
-------------------------------------------------------------------------
local function drawAltitudes()
for i=1,6 do
altitudes.draw( 175, 9*(i-1)+5, i, PREC2 + LEFT)
end
end
-------------------------------------------------------------------------
-- draw the frame to add values
-------------------------------------------------------------------------
local function drawFrame()
lcd.drawLine( 0, 47, 159, 47, SOLID, 2 )
lcd.drawLine( 159, 0, 159, 63, SOLID, 2 )
lcd.drawText( 10, 50, title, MIDSIZE)
lcd.drawNumber( lcd.getLastPos() + 9 , 54, status, 0) -- debug
end
-------------------------------------------------------------------------
-- draw a BIG actual altitude in the center of the screen
-------------------------------------------------------------------------
local function drawAltitude()
local alt = getAlt()
lcd.drawNumber( 24, 4, 10.0 * alt, PREC1 + XXLSIZE + LEFT)
lcd.drawText( lcd.getLastPos(), 4, unit_name, DBLSIZE)
end
-------------------------------------------------------------------------
-- background (periodically called when custom telemetry screen is not visible)
-------------------------------------------------------------------------
local function background( event )
-----------------------------------------------------------------------
-- the launch tracker state machine
-----------------------------------------------------------------------
if status == 10 then
-- loop enabled: prepare launch detection
-- I think 5 m/s is a good value -> no need to make it variable
vMin = adjustLaunchDetection()
status = 20
elseif status == 20 then
-- detect a launch
if(getVspeed() >= vMin) then
oldTime = getTime()
status = 30
end
elseif status == 30 then
-- wait 500ms
if ((getTime() - oldTime) >= 50) then
status = 32
end
elseif status == 32 then
-- launched: now detect maximum in launch curve
if(getVspeed() <= 0.1 ) then
-- maximum reached
oldTime = getTime()
status = 40
end
elseif status == 40 then
-- wait 100ms (a vario is not that fast)
if ((getTime() - oldTime) >= 10) then
status = 42
end
elseif status == 42 then
-- get max height
local maxAlt = getAlt()
-- (TBD: F3B wait for a second maximum before disable launch mode)
altitudes.push(maxAlt)
playNumber( 10.0 * maxAlt, units, PREC1 )
status = 0
else
-- wait for launch detection to be enabled
if (getValue(launch_id) == LAUNCH_ENABLED) then
status = 10
end
end
end
-------------------------------------------------------------------------
-- run (periodically called when custom telemetry screen is visible)
-------------------------------------------------------------------------
local function run(event)
-- call background functionality
background(event)
-- draw screen
lcd.clear()
drawFrame()
drawAltitude()
drawAltitudes()
end
-------------------------------------------------------------------------
-- create a stacked display
-------------------------------------------------------------------------
local function numericStack( s )
local tab = {}
local size
-- called by constructor
local function initialize( s )
size = s
for i=1,size do
tab[ i ] = 0.0
end
end
-- stacks nums, discarding the older values
local function push( a )
for i=2,size do
tab[ i-1 ] = tab[ i ]
end
tab[size] = a
end
-- get one num
local function get( i )
if( i > size) then i = size end
return tab[ i ]
end
-- clean stack
local function reset()
initialize( size )
end
-- draw num
local function draw( x, y, i, att )
local val = tab[ i ]
if val > 0.0 then
lcd.drawNumber( x, y, 100.0 * val, att )
else
lcd.drawText( x, y, "-----", att + LEFT)
end
end
-- constructor
initialize( s )
return { push=push, get=get, reset=reset, draw=draw }
end
-------------------------------------------------------------------------
-- init (the script init function)
-------------------------------------------------------------------------
local function init()
initVariometer()
if (getGeneralSettings().imperial > 0) then
useFeets = true
unit_name = 'ft'
units = 10 -- the lady says 'feet'
m2f = 3.28
end
altitudes = numericStack(6)
end
return { init=init, background=background, run=run }
[b]Je me suis penché dessus , et j'ai compris que le problème venait de la résolution de l'écran plus petite. J'ai donc fait des changements en testant et cela marche :)
J'ai juste un défaut esthétique en début de cycle (photo[/b])
[b]Mes différences, mais je je vois pas ou modifier la place des petits pointillés
[/b]-------------------------------------------------------------------------
-- draw last 6 altitues on the right side of the screen
-------------------------------------------------------------------------
local function drawAltitudes()
for i=1,6 do
altitudes.draw( 100, 9*(i-1)+5, i, PREC2 + LEFT)
end
end
-------------------------------------------------------------------------
-- draw the frame to add values
-------------------------------------------------------------------------
local function drawFrame()
lcd.drawText( 1, 57, title, smallSIZE)
end
-------------------------------------------------------------------------
-- draw a BIG actual altitude in the center of the screen
-------------------------------------------------------------------------
local function drawAltitude()
local alt = getAlt()
lcd.drawNumber( 1, 4, 10.0 * alt, PREC1 + XXLSIZE + LEFT)
lcd.drawText( lcd.getLastPos(), 4, unit_name, DBLSIZESIZE)
end
PierreF- Messages : 16
Date d'inscription : 25/04/2020
Age : 47
Localisation : Gerponville
PierreF- Messages : 16
Date d'inscription : 25/04/2020
Age : 47
Localisation : Gerponville
Sujets similaires
» [Résolu]F3K: enregistrer le meilleur chrono avec 2 timers
» [Presque RESOLU] Problème avec un script - la radio freeze
» taranis x9E / remise à zéro des "timers"
» upgrade x12s en access
» Annonce temps de vol
» [Presque RESOLU] Problème avec un script - la radio freeze
» taranis x9E / remise à zéro des "timers"
» upgrade x12s en access
» Annonce temps de vol
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum