www.F3News.fr

Le forum du planeur radiocommandé catégorie F3x
 
AccueilPortailFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 *** FR-SKY TARANIS *** Mega thread

Aller en bas 
Aller à la page : Précédent  1 ... 5, 6, 7 ... 10 ... 14  Suivant
AuteurMessage
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Lun 13 Oct 2014 - 15:52

Bon, je n'ai peut-être pas expliqué assez comment ça fonctionne.

Pour les timers:

  • "Total" affiche le temps de travail.
    Le temps de travail (temps de vol en même temps, je n'ai pas fait de distinction ici) démarre quand les gaz passent le seuil défini par THROTTLE_MINI (qui correspond au minimum sur cette voie).

  • "Engine" affiche le temps moteur.  Ce timer s'arrête quand la voie des gaz repasse sous le seuil THROTTLE_MINI.

  • "Glide" affiche le temps écoulé depuis la coupure moteur.  Donc, Engine + Glide = le temps de vol (si tu ajoutes ça au "total", tu dois obtenir 10 min).



Le switch

Au posé, ou à la fin du temps de travail (j'ai laissé filer le timer après l'expiration des 10 min pour pouvoir voir de combien on déborde) on peut arrêter le timing en ramenant le switch F vers soi.  Ce switch n'est cependant pris en compte qu'après 10s de plané (ou en cas de vol invalide).

Lorsque on veut remettre tout à zéro, on repousse SF, et tout est réinitialisé.


Les altitudes :

  • "Alt Cut" est l'altitude au coupé du moteur.

  • "Alt 10s" est l'altitude 10s plus tard.

  • "Alt Max" est l'altitude max du vol.



Les annonces vocales :

Le script utilise la directory pour les voix en anglais.  Si tu veux changer, il faut mettre SOUND_PATH avec 'FR' au lieu de 'EN' (j'ai jamais mis ma radio en français, donc je ne sais pas ce qui est dispo comme sons dans cette langue).

J'ai mis une fonction "vocalEnabled()" qui permettrait de désactiver les sons, mais pour l'instant, elle retourne toujours qu'ils sont actifs.

Il y a le décompte vocal par minute et pour les 10 dernières secondes si tu as configuré ton timer comme je l'ai mis dans ma capture d'écran (et si tu as le package son qui va bien, sinon, c'est des bips à la fin).

Il est possible d'ajouter un son "badflight.wav" pour avoir l'annonce vocale du vol non valide (faire un fichier avec un programme de text to speech ou utiliser un son genre "Meuh!"  Rolling Eyes ).

Les altitudes au coupé de moteur et 10s après sont annoncées.

===========================================

Ca, c'est la théorie.

Donc, ton switch E, il fait quoi ?  Parce que dans mon script, il n'est pas utilisé du tout.
Je ne pige pas trop, puisque tu dis plus loin que ton moteur est sur SD ?
Ou je n'ai rien compris  scratch

Si c'est ton moteur (coupé, mi-vitesse, full, dans cet ordre), il doit démarrer le timing du vol dès que tu sors de "coupé" et arrêter le timing moteur dés que tu reviens sur "coupé".  Si tu as le coupé au milieu, ça ne permet pas d'utiliser la mi-vitesse avec le script sans avoir des vols invalides (puisque ça coupe le moteur entre les deux).

--

Pour la coupure auto du moteur et le réarmement, de la façon dont je veux le faire dans une prochaine révision, l'inter de réarmement ne sera pas géré par le script, mais par un mix (c'est plus sûr en cas de plantage du script).  C'est-à-dire que je compte alimenter une GV avec un pourcentage (0% ou 100%).  A chacun ensuite de l'utiliser comme il veut dans son mix moteur.

Si tu as un autre alti qui gère déjà la coupure moteur, évidemment, il ne faut rien mixer du tout.

===========================================

Pour tes autres demandes, tu veux que je change
  • le timer "glide" pour afficher le temps de vol y compris le temps moteur, c'est ça ?  (en gros, c'est 10min - le timer1)
  • l'annonce vocale du temps de moteur ?  (attention que ça va se passer juste avant ou juste après l'altitude de "lâcher").
  • l'annonce vocale du temps de vol ?  (mais évidemment, ça dépend fort du moment où on coupe SF)

?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
maume gilles
pilote d'or
pilote d'or
avatar

Nombre de messages : 637
Localisation : 13
Date d'inscription : 16/12/2007

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Lun 13 Oct 2014 - 17:36

Michel,

Sur mon prog le switch E contrôle l'alti vario ( haute précision frsky) il agit sur ton scrip sur le temps ENGINE et GLIDE???

Voila la partie de mon programme ou il apparait .




Le moteur est commandé par SD

SD bas moteur arrêté
SD milieu mi gaz selon courbe
SD haut  full régime selon courbe



Pour le temps GLIDE /
il doit afficher le temps de vol du planeur cad de là mise en route du moteur jusqu'au posé ou la fin du temps de travail .
Je pense que le swicht F quand il est vers nous devrait arrêter Glide et Total et quand tu pousse F vers le bas RAZ de tout .

Annonce vocale /

J'ai bien les annonces altitudes: a la coupure du moteur et 10 sec après ( en français )

par contre pas d'annonce du TOTAL qui est le temps de travail restant .

pas d'annonce non plus pour vol nul .

Je vais essayer de voir ce qui ne va pas sur les annonces audio

Faut pas allé trop vite drunken  drunken  drunken

Pour l'instant je pense que le temps GLIDE et les actions de F doivent être modifiés

Gilles
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Lun 13 Oct 2014 - 18:05

Tu ne sais pas poster ton fichier eepe quelque part ?
Parce que ta config de vario, je ne vois pas comment elle pourrait influencer sur le script (ou alors il y a un méchant bug dans le firmware quelque part). J'ai une config similaire sur les miens. Avoir ton eepe me permettrait de regarder ça de plus près.

Le switch F est supposé faire ce que tu décris !

Le total, si tu as configuré le timer comme je l'avais mis dans ma capture dans un message précédent, il doit être annoncé toutes les minutes (et plus de détails dans la dernière minute). Ce n'est pas lié au script.

L'annonce pour vol nul, j'ai pris un nom de fichier arbitraire. Donc, il faut que tu mettes ce fichier sur la carte SD (voir mon msg précédent).


Au fait, ça n'a rien à voir, mais FrSky vient de publier une màj de firmware pour les varios produits depuis avril 2014 (problème de précision pour l'altitude).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
maume gilles
pilote d'or
pilote d'or
avatar

Nombre de messages : 637
Localisation : 13
Date d'inscription : 16/12/2007

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Lun 13 Oct 2014 - 18:19

J'ai mis un son pour le vol nul . Mais toujours pas d'annonces du temps total?

Pour, l'annonce du temps moteur en live .

S'est une annonce très importante , il suffit de compter en temps (en sec) réel jusqu'au moment ou l'on arrête le moteur : 1, 2 ,3 , 4 ........ , . Comme cela en fonction de l'alt, du temps moteur restant et si on a trouvé ou pas une pompe on peu remettre plein gaz pour prendre un max d'alt ou arrêter le moteur en exploitant ce que l'on a trouvé.


après les annonces altitudes prennent le relais

Gilles
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Lun 13 Oct 2014 - 19:45

Ok, petites modifs dans le script pour
1/ Afficher le temps de vol plutôt que le temps plané ;
2/ décompter le temps moteur plutôt que de le compter (permet d'avoir les annonces vocales).

Donc, pareil, pour le décompte, voici la config de timer à mettre :



avec le pack son "amber", ça donne "twenty seconds", puis "ten, nine, eight" ... "one, zero".

Et le script :

Code:
--[[
   LUA telemetry script for F5J training

   Displays the altitude at engine cut-off, 10s after that, and max reached during the flight
   Displays the remaining work time, remaining engine time and the flight time

   If the engine is used more that 30s or twice in the same flight, the flight is declared invalid
   (a badflight.wav file can be used to signal this with audio)

   Switch F is used to signal the end of the flight and stop the timers (up) then reset everything (down)

   Customization (look for numbers in the code):
   (1) CH1 is used for the throttle
   (2) The value where the throttle is meant to be active (defaults to -1024)
   (3) Switch F is used to end (up) then reset (down) the flight
   (4) Language for the sounds (for the texts, change the texts in the drawDashboard() and drawFault() functions)

   Mike, ON4MJ
--]]


--
-- Timer class
--   (this is generic, and will have to be modified in 2.0.13+ where the setTimer() bug is fixed)
-- Precondition: timerId is either 0 or 1
--
local function createTimer( timerId, startValue )
   local id = timerId
   local timer = model.getTimer( id )

   local function setTimerWA() -- work-around for the difference in parameters of setTimer() compared to the return of getTimer()
      local t = {
         mode=timer.mode, start=timer.start, value=timer.value, countdownBeep=timer.countdownBeep,
         minuteBeep = timer.minuteBeep and 1 or 0,
         persistent = timer.persistent and 1 or 0
      }
      model.setTimer( id, t )
   end


   local function getVal()
      timer.value = model.getTimer( id ).value
      return timer.value
   end

   local function start()
      timer.mode = 1
      setTimerWA()
   end

   local function stop()
      timer = model.getTimer( id )
      timer.mode = 0
      setTimerWA()
      return timer.value
   end

   local function reset()
      timer.value = timer.start
      setTimerWA()
   end

   local function draw( x, y, att )
      local val = getVal()
      lcd.drawTimer( x, y, val, att )
      return val
   end



   if startValue then
      timer.start = startValue
      reset()
   end

   return {
      start = start,
      stop = stop,
      reset = reset,
      draw = draw,
      getVal = getVal
   }
end


-- F5J stuff

local SOUND_PATH = '/SOUNDS/EN/'      -- (4)

local THROTTLE_MIN = -1020         -- (2) (normally -1024)
local THR = getFieldInfo( 'ch1' ).id       -- (1)
local ALT = getFieldInfo( 'altitude' ).id
local SF = getFieldInfo( 'sf' ).id       -- (3)


local alt = 0
local alt10 = 0
local max = 0
local state = 1 -- 1=reset; 2=launch; 3=cutoff; 4=glide; 5=landed; 6=disqualify


local timer1 = createTimer( 0, 600 )   -- flight time
local timer2 = createTimer( 1, 30 )   -- engine time
local time3 = 0


local function vocalEnabled()
   return true
end

local function handleMax()
   local a = getValue( ALT )
   if a > max then
      max = a
   end
   return a
end

local function disqualify()
   if vocalEnabled() then
      playFile( SOUND_PATH .. 'badflight.wav' )
   end
   timer2.stop()
   timer1.stop()
   state = 6
end

local function checkThrottle()
   if getValue( THR ) > THROTTLE_MIN then
      disqualify()
   end
end

local function checkReset()
   if getValue( SF ) < 0 then
      timer2.stop()
      timer1.stop()
      timer2.reset()
      timer1.reset()
      time3 = 0

      alt = 0
      alt10 = 0
      max = 0

      state = 1
      return true
   end
   return false
end

local function checkEnd()
   return (getValue( SF ) > 0)
end




-- state transition functions

local function resetState()
   -- wait for take-off
   if getValue( THR ) > THROTTLE_MIN then
      timer2.start()
      timer1.start()
      state = 2
   end
end

local function launchState()
   -- wait for the motor cut
   if getValue( THR ) <= THROTTLE_MIN then
      timer2.stop()
      alt = getValue( ALT )
      max = alt
      if vocalEnabled() then
         playNumber( alt, 6, 0 )
      end
      state = 3
   elseif timer2.getVal() < 0 then
      disqualify()
   end
end

local function cutoffState()
   local a = handleMax()

   -- wait for the 10s end
   if (time3 - (30 - timer2.getVal())) >= 10 then
      alt10 = a
      if vocalEnabled() then
         playNumber( alt10, 6, 0 )
      end
      state = 4
   else
      checkThrottle()
   end
end

local function glideState()
   handleMax()

   -- wait for the end of flight
   if checkEnd() then
      timer2.stop()
      timer1.stop()
      state = 5
   else
      checkThrottle()
   end
end

local function landedState()
   -- wait for reset
   checkReset()
end

local function disqualifyState()
   -- wait for end
   if checkEnd() then
      state = 5
   end
end




local functions = { resetState, launchState, cutoffState, glideState, landedState, disqualifyState }

function background()
   time3 = 600 - timer1.getVal()
   functions[ state ]()
end



local function drawDashboard()
   lcd.drawFilledRectangle( 0, 23, 212, 18, 0 )

   lcd.drawText( 4, 4, "Alt cut:", MIDSIZE )
   lcd.drawNumber( 64, 4, alt, MIDSIZE+LEFT )
   lcd.drawText( lcd.getLastPos(), 4, "m", 0 )

   lcd.drawText( 4, 26, "Alt 10s:", MIDSIZE+INVERS )
   lcd.drawNumber( 64, 26, alt10, MIDSIZE+LEFT+INVERS )
   lcd.drawText( lcd.getLastPos(), 26, "m", INVERS )
   
   lcd.drawText( 4, 48, "Alt max:", MIDSIZE )
   lcd.drawNumber( 64, 48, max, MIDSIZE+LEFT )
   lcd.drawText( lcd.getLastPos(), 48, "m", 0 )
   
   lcd.drawText( 120, 4, "Work:", MIDSIZE )
   timer1.draw( 174, 4, MIDSIZE )

   lcd.drawText( 120, 26, "Engine:", MIDSIZE+INVERS )
   timer2.draw( 174, 26, MIDSIZE+INVERS )

   lcd.drawText( 120, 48, "Flight:", MIDSIZE )
   lcd.drawTimer( 174, 48, time3, MIDSIZE )
end


local function drawFault()
   lcd.drawRectangle( 4, 4, 204, 56 )
   lcd.drawText( 40, 25, "INVALID FLIGHT", DBLSIZE+BLINK )
end


local function run()
   background()

   if state < 6 then
      drawDashboard()
   else
      drawFault()
   end
end

return {background=background, run=run}
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc PUJOL
pilote d'or
pilote d'or
avatar

Nombre de messages : 1905
Age : 54
Localisation : Essonnes
Date d'inscription : 21/07/2009

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Lun 13 Oct 2014 - 21:18

Mets aussi un compteur de 10 secondes après la coupure moteur pour signaler au pilote que pendant ce temps il ne faut pas qu'il prenne de trop l'ascendance...
Marc
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Lun 13 Oct 2014 - 23:37

Marc PUJOL a écrit:
Mets aussi un compteur de 10 secondes après la coupure moteur pour signaler au pilote que pendant ce temps il ne faut pas qu'il prenne de trop l'ascendance...

Ben, c'est la version concours, alors Wink

Parce que là, avec la télémétrie, pas besoin.  A la fin des dix secondes, on est averti par la 2e lecture d'altitude.
(en fait, même sans vario, on aura juste une lecture "0 meters" à la fin des dix secondes).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
maume gilles
pilote d'or
pilote d'or
avatar

Nombre de messages : 637
Localisation : 13
Date d'inscription : 16/12/2007

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Mar 14 Oct 2014 - 11:01

Michel,

J'ai résolu les pb d'annonces cela venait d'un raz d'un compteur du progr du planeur .

Le premier script fonctionne  cheers . J'ai installé la dernière version , sur cette dernière version il y a un pb  lol! .

Mise en marche du moteur , ok
tout les temps démarrent ok , annonce  a rebours du temps moteur, ok
arrêt du moteur, annonce alt ok
10sec après annonce alt ok , a ce moment précis tout les temps se fige !

As tu le même pb?

Gilles
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
maume gilles
pilote d'or
pilote d'or
avatar

Nombre de messages : 637
Localisation : 13
Date d'inscription : 16/12/2007

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Mar 14 Oct 2014 - 13:04

Michel

En fait il n'y a pas de pb, cela fonctionne parfaitement. je laissais le switch F dans la mauvaise position.

Demain je fais les essais en vol , je te tiens au courant

Encore merci

Gilles
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Mar 14 Oct 2014 - 20:12

maume gilles a écrit:
En fait il n'y a pas de pb, cela fonctionne parfaitement.

Ca me rassure !

Merci pour le feedback Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
maume gilles
pilote d'or
pilote d'or
avatar

Nombre de messages : 637
Localisation : 13
Date d'inscription : 16/12/2007

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Mer 15 Oct 2014 - 14:52

Michel,

Je viens de faire une petite séance .

Mes premières impressions sont très bonne . Naturellement dans quelques semaines mon jugement sera plus juste .

bien /

affichage super
valeurs affichées super
annonce alt arrêt moteur ok
annonce alt arrêt moteur + 10 sec ok
fonctionnement de la page avec le switch F OK

moyen /

compte a rebours moteur pas assez précis il manquerait d'annoncer les 15sec

pas bien /

J'ai constaté a plusieurs reprise un bug d'un script surement du a une mauvaise utilisation de switch F . Par exemple quand tu veux arrêter le vol avant les annonces alt ??
Une fois le script désynchronisé j'ai mis un moment a revenir a la normale .
Plus d'info a ce sujet après que j'aurais fait plus d'essai .

Gilles
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Mer 15 Oct 2014 - 15:05

maume gilles a écrit:

moyen /

compte a rebours moteur pas assez précis il manquerait d'annoncer les 15sec

Malheureusement, ce n'est pas lié au script, c'est le firmware de la Taranis qui est comme ça.
Si tu programmes à la main un timer avec décompte vocal dans un autre modèle, tu auras exactement le même résultat.

Citation :

pas bien /

J'ai constaté a plusieurs reprise un bug d'un script surement du a une mauvaise utilisation de switch F . Par exemple quand tu veux arrêter le vol avant les annonces alt ??
Une fois le script désynchronisé j'ai mis un moment a revenir a la normale .
Plus d'info a ce sujet après que j'aurais fait plus d'essai .

Oui, je sais, ce n'est pas un bug, c'est supposé fonctionner comme ça. C'est d'ailleurs documenté lol!

C'est possible de le changer, ça complique juste un peu le script.
Je vais essayer de faire ça un de ces soirs.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
maume gilles
pilote d'or
pilote d'or
avatar

Nombre de messages : 637
Localisation : 13
Date d'inscription : 16/12/2007

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Mer 15 Oct 2014 - 17:10

Michel,

Merci pour ce script . J'avais demandé un 2cv et tu nous proposes une Ferrari .

Il y a aussi la coupure du moteur automatique au bout de 30 sec a réfléchir .

Pour l'instant je coupe le moteur quand j'attends 29 sec ce qui est pas si mal que ça en fait .

Peu être faut il attendre que cela  décante un peu  avant de revoir le script , il n'y a rien qui presse .

Quand le script déconne, cela affecte les annonces surtout celle du moteur , parfois aussi les différents timer . Quand ça déconne je ne sais plus comment doit être positionné l'inter F. Ce qui rend plus long un retour a la normale.

Merci

Gilles
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Mer 15 Oct 2014 - 17:20

Je vais le changer.

Mais en gros, pour l'instant, si tu te mets dans une situation où tu es perdu, il faut laisser passer les 10s après la coupure moteur.  Ensuite, tu peux tirer l'inter pour arrêter les timers et le repousser pour faire une RAZ.

Si tu chipotes à l'inter avec le moteur qui tourne ou avant l'expiration des dix secondes, ça fait des trucs prévisibles, mais il faut connaître la logique du script.  En gros, si tu tires l'inter avant, et que tu le laisses dans cette position, tout va s'arrêter quand les 10s sont passées (c'est le phénomène que tu avais avant et que tu as fini par diagnostiquer tout seul).  Si tu fais aller l'inter dans tous les sens, ça n'aide pas.

Il faut juste te ramener dans une situation connue (en gros, il suffit d'attendre) et ça repart normalement.


Mais bon, je vais arranger ça, ça sera moins perturbant.

(Merci pour le commentaire Ferrari Laughing )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Jeu 16 Oct 2014 - 20:13

Ok, en avant pour la V3...

On peut maintenant chipoter le switch d'arrêt/RAZ dans toutes les phases du programme, et le résultat ne devrait plus perturber l'utilisateur.

J'en ai profité pour améliorer un poil la gestion de la détection de coupure des gaz.  J'imagine que vous avez tous ça sur un switch, mais pour mes tests, je l'avais mis sur le manche de gaz, et sur le crantage, j'avais parfois un petit retour en arrière, qui me générait un vol non valide alors que c'était juste la mise des gaz qui tremblait un peu (je ne suis sans doute pas très clair, mais je me comprends, c'est l'essentiel Rolling Eyes  What a Face).

Code:

--[[
   LUA telemetry script for F5J training

   Displays the altitude at engine cut-off, 10s after that, and max reached during the flight
   Displays the remaining work time, remaining engine time and the flight time

   If the engine is used more that 30s or twice in the same flight, the flight is declared invalid
   (a badflight.wav file can be used to signal this with audio)

   Switch F is used to signal the end of the flight and stop the timers (up) then reset everything (down)

   Customization (look for numbers in the code):
   (1) CH1 is used for the throttle
   (2) The value where the throttle is meant to be active (defaults to -1024)
   (3) Switch F is used to end (up) then reset (down) the flight
   (4) Language for the sounds (for the texts, change the texts in the drawDashboard() and drawFault() functions)

   Mike, ON4MJ
--]]


--
-- Timer class
--   (this is generic, and will have to be modified in 2.0.13+ where the setTimer() bug is fixed)
-- Precondition: timerId is either 0 or 1
--
local function createTimer( timerId, startValue )
   local id = timerId
   local timer = model.getTimer( id )

   local function setTimerWA() -- work-around for the difference in parameters of setTimer() compared to the return of getTimer()
      local t = {
         mode=timer.mode, start=timer.start, value=timer.value, countdownBeep=timer.countdownBeep,
         minuteBeep = timer.minuteBeep and 1 or 0,
         persistent = timer.persistent and 1 or 0
      }
      model.setTimer( id, t )
   end


   local function getVal()
      timer.value = model.getTimer( id ).value
      return timer.value
   end

   local function start()
      timer.mode = 1
      setTimerWA()
   end

   local function stop()
      timer = model.getTimer( id )
      timer.mode = 0
      setTimerWA()
      return timer.value
   end

   local function reset()
      timer.value = timer.start
      setTimerWA()
   end

   local function draw( x, y, att )
      local val = getVal()
      lcd.drawTimer( x, y, val, att )
      return val
   end



   if startValue then
      timer.start = startValue
      reset()
   end

   return {
      start = start,
      stop = stop,
      reset = reset,
      draw = draw,
      getVal = getVal
   }
end


-- F5J stuff

local SOUND_PATH = '/SOUNDS/EN/'      -- (4)

local THROTTLE_MIN = -1020         -- (2) (normally -1024)
local THR = getFieldInfo( 'ch1' ).id       -- (1)
local ALT = getFieldInfo( 'altitude' ).id
local SF = getFieldInfo( 'sf' ).id       -- (3)


local alt = 0
local alt10 = 0
local max = 0
local state = 1 -- 1=reset; 2=launch; 3=cutoff; 4=glide; 5=landed; 6=disqualify


local timer1 = createTimer( 0, 600 )   -- flight time
local timer2 = createTimer( 1, 30 )   -- engine time
local time3 = 0

local THROTTLE_MIN_HYSTERESIS = THROTTLE_MIN + 4


local function vocalEnabled()
   return true
end

local function handleMax()
   local a = getValue( ALT )
   if a > max then
      max = a
   end
   return a
end

local function disqualify()
   if vocalEnabled() then
      playFile( SOUND_PATH .. 'badflight.wav' )
   end
   timer2.stop()
   timer1.stop()
   state = 6
end

local function checkThrottle()
   if getValue( THR ) > THROTTLE_MIN_HYSTERESIS then
      disqualify()
   end
end

local function checkReset()
   if getValue( SF ) < 0 then
      timer2.stop()
      timer1.stop()
      timer2.reset()
      timer1.reset()
      time3 = 0

      alt = 0
      alt10 = 0
      max = 0

      state = 1
      return true
   end
   return false
end

local function checkEnd()
   return (getValue( SF ) > 0)
end

local function goToLandedState()
   timer2.stop()
   timer1.stop()
   state = 5
end



-- state transition functions

local function resetState()
   -- wait for take-off
   if getValue( THR ) > THROTTLE_MIN_HYSTERESIS then
      timer2.start()
      timer1.start()
      state = 2
   end
end

local function launchState()
   -- wait for the motor cut
   if checkEnd() then
      goToLandedState()
   elseif getValue( THR ) <= THROTTLE_MIN then
      timer2.stop()
      alt = getValue( ALT )
      max = alt
      if vocalEnabled() then
         playNumber( alt, 6, 0 )
      end
      state = 3
   elseif timer2.getVal() < 0 then
      disqualify()
   end
end

local function cutoffState()
   local a = handleMax()

   if checkEnd() then
      goToLandedState()
   else
      -- wait for the 10s end
      if (time3 - (30 - timer2.getVal())) >= 10 then
            alt10 = a
            if vocalEnabled() then
               playNumber( alt10, 6, 0 )
            end
            state = 4
      else
         checkThrottle()
      end
   end
end

local function glideState()
   handleMax()

   -- wait for the end of flight
   if checkEnd() then
      goToLandedState()
   else
      checkThrottle()
   end
end

local function landedState()
   -- wait for reset
   checkReset()
end

local function disqualifyState()
   -- wait for end
   if checkEnd() then
      state = 5
   end
end




local functions = { resetState, launchState, cutoffState, glideState, landedState, disqualifyState }

function background()
   time3 = 600 - timer1.getVal()
   functions[ state ]()
end



local function drawDashboard()
   lcd.drawFilledRectangle( 0, 23, 212, 18, 0 )

   lcd.drawText( 4, 4, "Alt cut:", MIDSIZE )
   lcd.drawNumber( 64, 4, alt, MIDSIZE+LEFT )
   lcd.drawText( lcd.getLastPos(), 4, "m", 0 )

   lcd.drawText( 4, 26, "Alt 10s:", MIDSIZE+INVERS )
   lcd.drawNumber( 64, 26, alt10, MIDSIZE+LEFT+INVERS )
   lcd.drawText( lcd.getLastPos(), 26, "m", INVERS )
   
   lcd.drawText( 4, 48, "Alt max:", MIDSIZE )
   lcd.drawNumber( 64, 48, max, MIDSIZE+LEFT )
   lcd.drawText( lcd.getLastPos(), 48, "m", 0 )
   
   lcd.drawText( 120, 4, "Work:", MIDSIZE )
   timer1.draw( 174, 4, MIDSIZE )

   lcd.drawText( 120, 26, "Engine:", MIDSIZE+INVERS )
   timer2.draw( 174, 26, MIDSIZE+INVERS )

   lcd.drawText( 120, 48, "Flight:", MIDSIZE )
   lcd.drawTimer( 174, 48, time3, MIDSIZE )
end


local function drawFault()
   lcd.drawRectangle( 4, 4, 204, 56 )
   lcd.drawText( 40, 25, "INVALID FLIGHT", DBLSIZE+BLINK )
end


local function run()
   background()

   if state < 6 then
      drawDashboard()
   else
      drawFault()
   end
end

return {background=background, run=run}

Si le feedback est positif, je le mettrai sur RCsettings, et puis je vais réfléchir à un truc qui pourrait servir dans les tasks F3K. Ca sera nettement plus comique affraid
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
maume gilles
pilote d'or
pilote d'or
avatar

Nombre de messages : 637
Localisation : 13
Date d'inscription : 16/12/2007

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Jeu 16 Oct 2014 - 20:27

Michel,

J'ai encore testé le script v2 aujourd'hui. Aucun pb en faisant attention . Arrêt du moteur quand j'entends 1 sec .
J'essaye de teste la v3 demain sinon ce WE .

Pour ton futur script f3k cela m’intéresse aussi . Que comptes tu faire?

Gilles
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Jeu 16 Oct 2014 - 20:35

Essayer d'émuler un bon chronomètreur lol!

Je n'ai pas encore d'idée précise (à part pour la sélection des tâches), mais jusque ici, j'avais envisagé les scripts de télémétrie uniquement sous l'angle de la... télémétrie (sic!).  Mais c'est clair qu'on peut les utiliser pour faire de la gestion de chronométrage.  C'est ce que j'aurais retenu de ce petit projet F5J cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
BenjaminB
pilote d'or
pilote d'or
avatar

Nombre de messages : 2209
Age : 45
Localisation : Barcelona
Date d'inscription : 31/08/2009

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Jeu 16 Oct 2014 - 21:05


pour le F3K, il y a des trucs interessants a faire pour l'entrainement.
lancer une tache specifique (et donc le chrono de 10 ou 7 min), puis memoriser les vols.
le probleme est de trouver l'astuce pour declencher et arreter le chrono a peut pret au bon moment.
pour ceux qui ont in inter monostable pour le preset, c'est deja ca de gagné.
mais il reste a valider correctement la fin d'un vol (surtout dans le cas d'un ratrapé/lancé)

pour la compet et l'entrainement: on est vite limité vu qu'il n'y a que 2 chronos.
c'est toujours sympa d'avoir le temps ecoulé depuis le debut de la manche, et celui qu'il reste
pareil pour le vol en cours (temps ecoulé) et combien il reste pour la cible...

se sont des details, mais lors d'un poker, par exemple, on a pas toujours la valeur exacte du temps restant pour faire au mieux pour le dernier pari. (vu qu'en theorie on n'a pas le droit de dire au juge je prends le temps qu'il reste! Very Happy)

ce sont des pistes...

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Jeu 16 Oct 2014 - 22:13

L'idée générale (mais je dois encore affiner), c'est d'utiliser un des timers pour le temps de travail et l'autre pour chaque vol. C'est sûr que ça sera de l'à peu près avec le switch de launch.
En mémorisant chaque temps de vol, et avec un peu d'arithmétique, on peut en effet apporter une aide à la décision (et éviter les âneries dans le feu de l'action). C'est en tout cas le but recherché. Mais bon, il faut que je mette tout ça à plat. Ce script-ci, il ne va pas s'écrire en une demi-heure de temps, c'est sûr.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
maume gilles
pilote d'or
pilote d'or
avatar

Nombre de messages : 637
Localisation : 13
Date d'inscription : 16/12/2007

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Jeu 16 Oct 2014 - 22:39

Michel

L’objectif est de pouvoir s'entrainer seul mais surtout de faire des joutes a 2, 3 ... Dans ce dernier cas un résultat est nécessaire pour définir rapidement celui qui a brillé .

Tu parles d'arithmétique . Cela serait intéressante pour le script f5jv3 de calculer la pénalité d'altitude , les points du chrono de vol et de les additionner pour avoir un résultat . Il ne resterait plus qu'a ajouter manuellement sur le carnet les points de la cible . Le tout sans avoir a sortir de calculatrice! D'un autre coté c'est pas des calculs très difficile a réaliser de tête .

Gilles

PS / pour le f3k et pour l’épreuve du poker s'est très chaud et cela n'est surement pas réalisable seul (un aide a ce niveau là est indispensable) .
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Ven 17 Oct 2014 - 9:03

Pour le F5J et la pénalité d'altitude, en lisant le règlement, je me suis dit que c'était le truc évident à faire.
Mais vous ne l'avez demandé ni l'un, ni l'autre, je me suis dit, que n'étant pas familier de ces épreuves, j'avais peut-être loupé un truc.

Le chrono de vol, c'est déjà plus limite.  Tout dépend si le pilote actionne son switch d'arrêt au moment du posé ou non.

Mais on peut ajouter les infos de score en fin de vol, c'est sûr.

----

Le F3K...   D'abord, comme je suis plus concerné, je vais faire le script pour moi d'abord.  Mais les suggestions sont toujours les bienvenues, bien sûr.

Le poker, il est clair que ça demande réflexion.
Comme ça, sans trop chercher, je vois deux approches possibles (avec des inconvénients dans les deux cas, mais il faut peser les avantages apportés contre les contraintes requises) :

1/ On encode le temps annoncé au préalable.  Evidemment, ça prend un peu de temps.  Méthode d'encodage : un switch passe le manche de gaz et le script en encodage --> on met la valeur avec le stick.  Ca peut être rapide, mais pas facile d'une main.  Et pas question de faire un quick turn-around.

2/ On vole et après chaque posé on valide par la suite si le vol précédent était valide ou non.  Aucune perte de temps (on peut le faire après avoir relancé), mais impossible d'avoir l'annonce du temps à l'approche de l'expiration du temps annoncé.

La solution, c'est peut-être une troisième voie, avec un modèle hybride des deux autres : on part sur une strat prédéterminée et on peut décider de passer en mode 2 à tout moment.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
maume gilles
pilote d'or
pilote d'or
avatar

Nombre de messages : 637
Localisation : 13
Date d'inscription : 16/12/2007

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Ven 17 Oct 2014 - 15:38

Michel,

Je viens d'essayer le f5jv3, il y a eu un bug que je ne peux expliquer au départ? Ensuite cela a fonctionné parfaitement .
Je referais des essais lorsque les conditions météo seront a nouveau propice ? Je te tiendrais au courant .
Nous organisons une rencontre f5j le 25 et  ou 26/10 . Je présenterai ton script aux pilotes intéressés . Il devrait y avoir quelques Taranis Very Happy  

Pour le script f3k cela me parait trop compliqué si tu veux tout gérer .
Je ne fais plus de compet, pour l'instant on fait dernier posé 3mn max. Pour ça pas besoin de script en fait .
Pour détecter le lancé il faut un accéléromètre et pour le posé un capteur de recul de voiture lol! Et même avec ça il faut aussi un écouteur ( mono ) dans l'oreille droite pour le temps de travail et un autre dans l'oreille gauche pour le temps de vol king
Pour le 5X2 ET le poker ( qui se transforme en 5x2 si le pilote lance haut ) s'est déjà un boulot a temps plein pour l'aide .

Il faut surtout un inter très sensible a positionner sous la radio a l'endroit qui va bien . J'ai testé celui la http://www.conrad.fr/ce/fr/product/709883/Interrupteur-individuel-a-effleurement mais il demande trop de pression pour être actionné Mad

Gilles
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Ven 17 Oct 2014 - 16:05

Tu peux décrire ton "bug de départ" plus en détails, stp ?

---

F3K

Le problème est surtout qu'il y a autant de programmations de modes "de lancer" qu'il n'y a de pilotes Smile
Ce que je vais pondre pourrait n'être utile qu'à moi, mais on verra.

La détection du lancé, pour moi, c'est assez facile.  Je lâche le switch temporaire dès que le planeur quitte mes doigts.
Sinon, il y a ce que je fais déjà dans mon script d'annonce d'altitude : si l'altitude est inférieure à 10m et que la vitesse ascensionnelle est supérieure à 5m/s, c'est qu'on vient de lancer. Mais ça demande la présence du vario.

C'est pour l'arrêt qu'il faudrait l'accéléromètre :-)

Les annonces des deux temps, j'y ai pensé.  On peut par exemple générer tous les sons nécessaires avec une autre voix.

Je m'attends à un job de longue haleine sur ce coup-là.
Je vais faire ça tâche par tâche, sans me mettre de pression.  Ce qui ne marche pas, tant pis, je garde le strict minimum.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
maume gilles
pilote d'or
pilote d'or
avatar

Nombre de messages : 637
Localisation : 13
Date d'inscription : 16/12/2007

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Ven 17 Oct 2014 - 16:42

Michel_65 a écrit:
Tu peux décrire ton "bug de départ" plus en détails, stp ?


Des que j'ai plus d'info je te tiens au courant.

Gilles
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Michel on4mj
Pilote pro
Pilote pro


Nombre de messages : 221
Localisation : Belgique
Date d'inscription : 08/10/2014

MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   Jeu 30 Oct 2014 - 12:09

Voici une version adaptée du script que j'ai écrit pour le Winterpost 2014-2015 (tâche 1).

Il prend une fenêtre de travail de 10 min.  Et prend en compte les 5 meilleurs vols avec un max de 2 min.  Ca vous dira probablement quelque chose  lol!

Mode d'emploi:
Le switch F permet de démarrer le temps de travail, puis de faire une remise à zéro à la fin (ou d'interrompre le processus avant la fin).

Le switch H (temporaire) signale le début d'un vol (quand on le relâche) et la fin du vol (quand on le reprend).  Cette solution a ses limites, je l'admets.

Si vous avez interverti vos switches, il faut intervertir aussi dans le code 'sh' et 'sf'.

Enfin, si vous avez votre propre config de timer, ça va f..tre le b.rd.l.
Bref, faut pas faire  affraid


Code:

--[[
 Task G : 5X2 (10 min window)

 NB: this is a telemetry script
 
 Mike, ON4MJ
--]]



--
-- Timer class
--   (this is generic, and will have to be modified in 2.0.13+ where the setTimer() bug is fixed)
-- Precondition: timerId is either 0 or 1
--
local function createTimer( timerId, startValue )
 local id = timerId
 local timer = model.getTimer( id )

 local function setTimerWA() -- work-around for the difference in parameters of setTimer() compared to the return of getTimer()
 local t = {
 mode=timer.mode, start=timer.start, value=timer.value, countdownBeep=timer.countdownBeep,
 minuteBeep = timer.minuteBeep and 1 or 0,
 persistent = timer.persistent and 1 or 0
 }
 model.setTimer( id, t )
 end


 local function getVal()
 timer.value = model.getTimer( id ).value
 return timer.value
 end

 local function start()
 timer.mode = 1
 setTimerWA()
 end

 local function stop()
 timer = model.getTimer( id )
 timer.mode = 0
 setTimerWA()
 return timer.value
 end

 local function reset()
 timer.value = timer.start
 setTimerWA()
 end

 local function draw( x, y, att )
 local val = getVal()
 lcd.drawTimer( x, y, val, att )
 return val
 end



 if startValue then
 timer.start = startValue
 reset()
 end

 return {
 start = start,
 stop = stop,
 reset = reset,
 draw = draw,
 getVal = getVal
 }
end

---------------------------------------------------

function createTimeKeeper( size, limit )
 local tab = {}
 local LIMIT = limit


 local function initialize( size )
 for i=1,size do
 tab[ i ] = 0
 end
 end

 local function addTime( t )
 local i = #tab - 1
 while i > 0 and t > tab[ i ] do
 tab[ i + 1 ] = tab[ i ]
 i = i - 1
 end
 tab[ i + 1 ] = t
 end


 local function display()
 for i=1,#tab-1 do
 print( tab[ i ] )
 end
 end


 local function getVal( i )
 -- Precondition : 1 <= i <= (#tab - 1)
 return tab[ i ]
 end


 local function getTotal()
 local tot = 0
 for i=1,#tab-1 do
 tot = tot + math.min( tab[ i ], LIMIT )
 end
 return tot
 end



 local function reset()
 initialize( #tab )
 end



 -- "constructor"
 initialize( size + 1 )

 return {
 addTime=addTime,
 display=display,
 getVal=getVal,
 getTotal=getTotal,
 reset=reset
 }
end




local function createTaskG()
 -- Customize your own switches here
 local TMP_SWITCH = getFieldInfo( 'sh' ).id
 local RST_SWITCH = getFieldInfo( 'sf' ).id

 local SOUND_PATH = '/SOUNDS/EN/'

 local MAX_FLIGHT_TIME = 120

 local times -- best times
 local state -- 1=reset; 2=start; 3=flying; 4=landed, 5=end

 local timer1 -- working time
 local timer2 -- current flight time (descending from MAX_FLIGHT_TIME)



 local function earlyReset()
 if getValue( RST_SWITCH ) < 0 then
 timer1.stop()
 timer2.stop()

 timer1.reset()
 timer2.reset()

 state = 1

 return true
 end
 return false
 end

 local function endOfWindow()
 if timer1.getVal() <= 0 then
 timer2.stop()
 timer1.stop()

 times.addTime( MAX_FLIGHT_TIME - timer2.getVal() )
 playFile( SOUND_PATH .. 'taskend.wav' )

 state = 5

 return true
 end
 return false
 end


 -- State functions

 local function resetState()
 -- Wait for the start of the working window
 if getValue( RST_SWITCH ) > 0 then
 times.reset()
 timer1.start()
 playFile( SOUND_PATH .. 'taskg.wav' )
 state = 2
 end
 end

 local function startedState()
 if not endOfWindow() and not earlyReset() then
 -- Wait for the pilot to grab its temp switch
 if getValue( TMP_SWITCH ) > 0 then
 state = 4
 end
 end
 end

 local function flyingState()
 if not endOfWindow() and not earlyReset() then
 -- Wait for the pilot to catch/land (he/she's supposed to pull the temp switch at that moment)
 if getValue( TMP_SWITCH ) > 0 then
 timer2.stop()
 times.addTime( MAX_FLIGHT_TIME - timer2.getVal() )
 state = 4
 end
 end
 end

 local function landedState()
 if not endOfWindow() and not earlyReset() then
 -- Wait for the pilot to launch the plane
 if getValue( TMP_SWITCH ) < 0 then
 timer2.reset()
 timer2.start()
 state = 3
 end
 end
 end

 local function endSate()
 -- Wait for reset
 earlyReset()
 end

 
 local functions = { resetState, startedState, flyingState, landedState, endSate }



 -- public interface
 local function init()
 times = createTimeKeeper( 5, MAX_FLIGHT_TIME )
 state = 1 -- 1=reset; 2=start; 3=flying; 4=landed, 5=end

 timer1 = createTimer( 0, 600 ) -- working time
 timer2 = createTimer( 1, MAX_FLIGHT_TIME ) -- current flight time (descending from MAX_FLIGHT_TIME)
 end


 local function background()
 functions[ state ]()
 end

 
 local function display()
 background()


 timer1.draw( 24, 4, XXLSIZE )

 lcd.drawLine( 0, 47, 159, 47, SOLID, 2 )
 lcd.drawPoint( 0, 47 )

 lcd.drawText( 20, 53, "Current flight: ", 0 )
 lcd.drawTimer( lcd.getLastPos(), 50, MAX_FLIGHT_TIME - timer2.getVal(), MIDSIZE )

 lcd.drawLine( 159, 0, 159, 63, SOLID, 2 )
 lcd.drawPoint( 159, 0 )

 local y = 2
 for i=0,4 do
 lcd.drawTimer( 180, y + 10 * i, times.getVal( i+1 ), 0 )
 end
 lcd.drawFilledRectangle( 160, 53, 52, 11, 0 )
 lcd.drawTimer( 180, 55, times.getTotal(), INVERS )
 end



 return { init=init, background=background, display=display }
end

local task = createTaskG()
return { init=task.init, background=task.background, run=task.display }

S'il y a un intérêt suffisant, je peux donner des explications sur le code.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: *** FR-SKY TARANIS *** Mega thread   

Revenir en haut Aller en bas
 
*** FR-SKY TARANIS *** Mega thread
Revenir en haut 
Page 6 sur 14Aller à la page : Précédent  1 ... 5, 6, 7 ... 10 ... 14  Suivant
 Sujets similaires
-
» *** FR-SKY TARANIS *** Mega thread
» [NEW] Chargeur Turnigy MEGA 400W 20.0A
» mega probleme SPL et ROM URGENT !!!!
» Mega Gargant !!
» Mega size

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
www.F3News.fr  :: Les news du F3x ! :: Du blabla, forum commun à tous !-
Sauter vers: