Ecran de télémesure avec FLVSS

Modérateur : Anim'Elec

Répondre
Avatar du membre
thetux
Chauffeur sympa
Chauffeur sympa
Messages : 491
Enregistré le : 24 juil. 2012, 21:25
Pays : B
Localisation : Andenne
A remercié : 7 fois
A été remercié : 41 fois

Ecran de télémesure avec FLVSS

Message par thetux »

Salut,

comme demandé dans un Précédent sujet, voici comment j'ai procédé pour mesurer la LiPo dans un écran de télémesure perso.

Le capteur FLVSS permet de mesurer chaque cellule individuellement. Pour ce faire, il faut ajouter des champs calculés. Donc on commence par faire la découverte des capteurs, et ensuite dans le companion, on ajoute 5 champs calculés. 1 par cellule (je suis en 3S), 1 pour le maximum et 1 pour le minimum.
Capture du 2016-07-23 11-37-43.png
Une fois cela fait, on peut lire les valeurs assez simplement dans un script:

Code : Tout sélectionner

lcd.drawChannel(65, 0, "C1", SMLSIZE)
Je place mon script dans SCRIPTS/TELEMETRY pour obtenir ce résultat:
Capture du 2016-07-23 11-39-24.png
Le script complet:

Code : Tout sélectionner

local function drawVerticalGauge(x, y, size, width, value, max)
  val = value
  if val<0 then
    val=0
  end
  if val>max then
    val=max
  end
  sz_filled = val*(size/max)
  sz_unfilled = size-sz_filled
  lcd.drawRectangle(x, y-size, width, sz_unfilled)
  lcd.drawFilledRectangle(x, y-sz_filled, width, sz_filled)
end

local function drawReverseGauge(x, y, size, width, value, max)
  val = value
  if val<0 then
    val=0
  end
  if val>max then
    val=max
  end
  sz_filled = val*(size/max)
  sz_unfilled = size-sz_filled
  lcd.drawRectangle(x-size, y-width, sz_unfilled, width)
  lcd.drawFilledRectangle(x-sz_filled, y-width, sz_filled, width)
end

local function drawServo(x, y, size, width, value, max)
  val = value
  if val<((-1)*max) then
    val=(-1)*max
  end
  if val>max then
    val=max
  end
  lcd.drawRectangle(x, y, size*2, width)
  if val>0 then
    sz_filled = val*(size/max)
    lcd.drawFilledRectangle(x+size-sz_filled, y, sz_filled, width)
  else
    if val<0 then
      sz_filled = (-1)*val*(size/max)
      lcd.drawFilledRectangle(x+size, y, sz_filled, width)
    else
      lcd.drawLine(x+size, y, x+size, y+width-1, SOLID, FORCE)
    end
  end
end

local function drawDate(x, y)
  local datenow = getDateTime()
  lcd.drawText(x,y,datenow.hour..":"..datenow.min..":"..datenow.sec,0)
  -- lcd.drawText(x,y+6,datenow.day.."/"..datenow.mon.."/"..datenow.year,0)
end

local function SecondsToClock(seconds)
  local seconds = tonumber(seconds)

  if seconds <= 0 then
    return "00:00:00";
  else
    hours = string.format("%02.f", math.floor(seconds/3600));
    mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)));
    secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60));
    return hours..":"..mins..":"..secs
  end
end

local function bgrnd_func()
  lcd.clear()

end

local function run(event)
  bgrnd_func()
  lcd.drawPixmap(65, 0, "/SCRIPTS/BMP/8420.bmp")

  -- Front outputs
  -- lcd.drawText(2, 1, "SA", SMLSIZE)
  -- lcd.drawGauge(15, 1, 20, 6, 100+(getValue('ch3')/10), 200)
  -- lcd.drawText(2, 8, "SB", SMLSIZE)
  -- lcd.drawGauge(15, 8, 20, 6, 100+(getValue('ch5')/10), 200)
  -- lcd.drawText(2, 15, "S1", SMLSIZE)
  -- lcd.drawGauge(15, 15, 20, 6, 100+(getValue('ch6')/10), 200)

  -- Front lift
  -- lcd.drawText(2, 38, "SF", SMLSIZE)
  -- lcd.drawText(5, 45, "+", SMLSIZE)
  -- lcd.drawText(2, 52, "LS", SMLSIZE)
  -- drawVerticalGauge(15, 63, 40, 6, 100+(getValue('ch7')/10), 200)

  -- Rear outputs
  lcd.drawText(200, 1, "SC", SMLSIZE)
  lcd.drawGauge(176, 1, 20, 6, 100+(getValue('ch6')/10), 200)
  lcd.drawText(200, 8, "SD", SMLSIZE)
  lcd.drawGauge(176, 8, 20, 6, 100+(getValue('ch7')/10), 200)
  lcd.drawText(200, 15, "Vit", SMLSIZE)
  drawServo(176, 15, 10, 6, getValue('ch8')/10, 100)
  -- lcd.drawText(141, 1, "S2", SMLSIZE)
  -- lcd.drawGauge(154, 1, 20, 6, 100+(getValue('ch')/10), 200)
  -- lcd.drawText(141, 8, "YDr", SMLSIZE)
  -- lcd.drawGauge(154, 8, 20, 6, 100+(getValue('ch')/10), 200)
  -- lcd.drawText(141, 15, "SH", SMLSIZE)
  -- lcd.drawGauge(154, 15, 20, 6, 100+(getValue('ch16')/10), 200)

  -- Rear lift
  lcd.drawText(200, 38, "SE", SMLSIZE)
  lcd.drawText(202, 45, "+", SMLSIZE)
  lcd.drawText(200, 52, "RS", SMLSIZE)
  drawVerticalGauge(191, 63, 40, 6, 100+(getValue('ch1')/10), 200)

  -- Power
  lcd.drawChannel(65, 0, "C1", SMLSIZE)
  lcd.drawChannel(65, 8, "C2", SMLSIZE)
  lcd.drawChannel(65, 16, "C3", SMLSIZE)
  lcd.drawChannel(65, 43, "Cels", DBLSIZE)
  lcd.drawChannel(65, 58, "BtRx", SMLSIZE)
  lcd.drawChannel(50, 58, "tx-voltage", SMLSIZE)

  -- Speed
  drawServo(76, 44, 28, 6, getValue('ch2')/10, 100)
  drawServo(76, 51, 28, 6, getValue('ch3')/10, 100)
  lcd.drawText(90, 58, "SG + YGa", SMLSIZE)
  drawVerticalGauge(134, 63, 20, 6, 100+(getValue('sg')/10), 200)

  -- Various
  -- drawDate(32, 1)
  lcd.drawText(141, 42,"To", SMLSIZE)
  lcd.drawText(141, 49,"Av", SMLSIZE)
  lcd.drawText(141, 56,"Ar", SMLSIZE)
  lcd.drawText(152, 42,SecondsToClock(getValue('timer1')), SMLSIZE)
  lcd.drawText(152, 49,SecondsToClock(getValue('timer2')), SMLSIZE)
  lcd.drawText(152, 56,SecondsToClock(getValue('timer3')), SMLSIZE)

  -- linking lines
  -- (for servos)
  -- lcd.drawLine(24, 21, 24, 31, SOLID, FORCE)
  -- lcd.drawLine(24, 31, 58, 31, SOLID, FORCE)
  -- lcd.drawLine(24, 34, 58, 34, SOLID, FORCE)
  -- lcd.drawLine(164, 22, 164, 28, SOLID, FORCE)
  -- lcd.drawLine(164, 28, 140, 28, SOLID, FORCE)
  lcd.drawLine(188, 22, 188, 31, SOLID, FORCE)
  lcd.drawLine(188, 31, 140, 31, SOLID, FORCE)
  lcd.drawLine(188, 34, 140, 34, SOLID, FORCE)
  -- (for power)
  lcd.drawLine(72, 8, 78, 8, SOLID, FORCE)
  lcd.drawLine(78, 8, 78, 14, SOLID, FORCE)
  lcd.drawLine(65, 51, 74, 51, SOLID, FORCE)
  lcd.drawLine(74, 51, 74, 40, SOLID, FORCE)
end

return { background=bgrnd_func, run=run }
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
Kris_77
Chauffeur confirmé
Chauffeur confirmé
Messages : 747
Enregistré le : 02 janv. 2014, 10:38
Numéro de département : 77
Pays : F
Localisation : Bussy (77)
A remercié : 41 fois
A été remercié : 34 fois

Re: Ecran de télémesure avec FLVSS

Message par Kris_77 »

Euh comment dire....... Bah voilà quoi lol merci, je n'aurai pas besoin de me creuser le cerveau Ah ah
Par contre, tu peux expliquer à quoi servent toutes les indications à l'écran ?
Comme SD, SC, Vit, etc... Merci.
Kris.
--------
Mon dernier-> https://youtu.be/mROz1lhhvBU
Tuto kit pistenking-> https://youtu.be/uW1G1GM_nUc
Avatar du membre
thetux
Chauffeur sympa
Chauffeur sympa
Messages : 491
Enregistré le : 24 juil. 2012, 21:25
Pays : B
Localisation : Andenne
A remercié : 7 fois
A été remercié : 41 fois

Re: Ecran de télémesure avec FLVSS

Message par thetux »

C'est la commande qui agit sur la sortie. SC et SD sont des interrupteurs. Vit c'est la vitesse. J'ai une benne avec des roues motrices, du coup ça commande les roues motrices de la benne. SG + YGa ça signifie que c'est le manche de gauche qui commande la vitesse, mais que l'inter SG défini la vitesse max.
Avatar du membre
Kris_77
Chauffeur confirmé
Chauffeur confirmé
Messages : 747
Enregistré le : 02 janv. 2014, 10:38
Numéro de département : 77
Pays : F
Localisation : Bussy (77)
A remercié : 41 fois
A été remercié : 34 fois

Re: Ecran de télémesure avec FLVSS

Message par Kris_77 »

Ah oui donc ça n'a rien à voir avec le flvss alors ?
Ce qui est concerné par le code ci-dessus c'est les valeurs représentées par 0,00v c'est bien ca ?
Ce que je doit surtout retenir pour le flvss c'est la partie power dans le script c'est bien ça ?
Kris.
--------
Mon dernier-> https://youtu.be/mROz1lhhvBU
Tuto kit pistenking-> https://youtu.be/uW1G1GM_nUc
Avatar du membre
thetux
Chauffeur sympa
Chauffeur sympa
Messages : 491
Enregistré le : 24 juil. 2012, 21:25
Pays : B
Localisation : Andenne
A remercié : 7 fois
A été remercié : 41 fois

Re: Ecran de télémesure avec FLVSS

Message par thetux »

Exact.
Avatar du membre
Kris_77
Chauffeur confirmé
Chauffeur confirmé
Messages : 747
Enregistré le : 02 janv. 2014, 10:38
Numéro de département : 77
Pays : F
Localisation : Bussy (77)
A remercié : 41 fois
A été remercié : 34 fois

Re: Ecran de télémesure avec FLVSS

Message par Kris_77 »

OK, super. J'essaie ça très vite. Merci à toi d'avoir pris le temps pour ça.
Par contre, quand tu dis "je place mon script dans : SCRIPTS/TELEMETRY
Y a pas le nom du modèle à intégrer dans le chemin d'accès ? Car je crois que c'est un script par modèle non ? Ou c'est un script lu automatiquement quelque soit le modèle sélectionné dans la radio ?
Car si un modèle sélectionné n'a pas de flvss, ça risque pas de buguer ?
Moi et l'informatique ça fait deux alors je préfère demander lol
Kris.
--------
Mon dernier-> https://youtu.be/mROz1lhhvBU
Tuto kit pistenking-> https://youtu.be/uW1G1GM_nUc
Avatar du membre
thetux
Chauffeur sympa
Chauffeur sympa
Messages : 491
Enregistré le : 24 juil. 2012, 21:25
Pays : B
Localisation : Andenne
A remercié : 7 fois
A été remercié : 41 fois

Re: Ecran de télémesure avec FLVSS

Message par thetux »

C'était à priori valable en 2.0 pour le nom du modèle. En 2.1, on place ses scripts dans SCRIPTS/TELEMTRY et ensuite, dans l'un des 4 écrans de télémétrie, on choisit type=script et le script à exécuter
Capture du 2016-07-23 18-24-04.png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
Kris_77
Chauffeur confirmé
Chauffeur confirmé
Messages : 747
Enregistré le : 02 janv. 2014, 10:38
Numéro de département : 77
Pays : F
Localisation : Bussy (77)
A remercié : 41 fois
A été remercié : 34 fois

Ecran de télémesure avec FLVSS

Message par Kris_77 »

D'accord, et donc celui la tu l'as appelé mt765.lua ?


__________
Kris.
Kris.
--------
Mon dernier-> https://youtu.be/mROz1lhhvBU
Tuto kit pistenking-> https://youtu.be/uW1G1GM_nUc
Avatar du membre
thetux
Chauffeur sympa
Chauffeur sympa
Messages : 491
Enregistré le : 24 juil. 2012, 21:25
Pays : B
Localisation : Andenne
A remercié : 7 fois
A été remercié : 41 fois

Re: Ecran de télémesure avec FLVSS

Message par thetux »

oui. Evitez le mélange majuscule/minuscule si vous travaillez sous Windows. Windows n'est pas sensible à la casse, mais il y a beaucoup de chances que la taranis oui.
Avatar du membre
Kris_77
Chauffeur confirmé
Chauffeur confirmé
Messages : 747
Enregistré le : 02 janv. 2014, 10:38
Numéro de département : 77
Pays : F
Localisation : Bussy (77)
A remercié : 41 fois
A été remercié : 34 fois

Re: Ecran de télémesure avec FLVSS

Message par Kris_77 »

D'accord, merci bien pour ton aide.


__________
Kris.
Kris.
--------
Mon dernier-> https://youtu.be/mROz1lhhvBU
Tuto kit pistenking-> https://youtu.be/uW1G1GM_nUc
Avatar du membre
Kris_77
Chauffeur confirmé
Chauffeur confirmé
Messages : 747
Enregistré le : 02 janv. 2014, 10:38
Numéro de département : 77
Pays : F
Localisation : Bussy (77)
A remercié : 41 fois
A été remercié : 34 fois

Re: Ecran de télémesure avec FLVSS

Message par Kris_77 »

Salut à tous.
Voici donc un exemple de ce que cela peut donner:
Image

Le lua est un langage différent du html mais avec de l'entraînement et un bon bouquin je pense que l'on peut faire des trucs sympa.
Merci à thetux pour son aide.
Kris.
--------
Mon dernier-> https://youtu.be/mROz1lhhvBU
Tuto kit pistenking-> https://youtu.be/uW1G1GM_nUc
Répondre

Retourner vers « FR sky, TAranis et autres radio de la marque »