Le forum français des radios FrSKY

Annonces vocal pour Dropix pixhawk amp

Voir le sujet précédent Voir le sujet suivant Aller en bas

Annonces vocal pour Dropix pixhawk amp

Message par djsyl le Ven 16 Jan 2015 - 2:22

Code:
-- MODE VOCAL POUR DROPIX --
-- CHEMIN /SCRIPT/MIXES/
-- BETA VERSION 0.01 --
-- SB 16/01/2015
-- Annonces Mode de vol, armement moteur, distance, hauteur

local valuemode
local memmode
local gps
local memgps
local armed
local memarmed
local altitude
local memaltitude
local distance
local memdistance


local function init_func()
                valuemode = 0
                memmode = 0
      gps = 0
      memgps = 0
      armed = 0
      memarmed = 0


      altitude = 0
      memaltitude = 0
      distance = 0
      memdistance = 0


end

local function run_func()

             valuemode = getValue(208) --  CARBURAN (mode de vol)
      gps =      getValue(209) --  T1 XX.Y XX = nombre, Y type de fixe
      armed =    getValue(210) --  T2
      altitude =  getValue(213) --  Altitude GPS
      distance =  getValue(212) --  DISTANCE


-- GESTION de l altitude

      if (altitude - 10 > memaltitude ) or (altitude + 10 < memaltitude ) then
                  playFile("/SOUNDS/fr/SYSTEM/0152.wav")
        playNumber(altitude,0,0)
        playFile("/SOUNDS/fr/SYSTEM/0130.wav")
      memaltitude = altitude      
      end





-- GESTION de la distance

      if (distance - 10 > memdistance ) or (distance + 10 < memdistance ) then
                   playFile("/SOUNDS/fr/SYSTEM/0158.wav")
        playNumber(distance,0,0)
        playFile("/SOUNDS/fr/SYSTEM/0130.wav")
      memdistance = distance      
      end





-- GESTION ARMEMENT MOTEURS

      if not (armed == memarmed) then

         if (armed == 0)  then 
         playFile("/SOUNDS/fr/engoff.wav")
         end
         if (armed == 1)  then 
         playFile("/SOUNDS/fr/engon.wav")
         end

      memarmed = armed      
      end

-- GESTION nombre de GPS et du type de fix

      if not (gps == memgps) then

      playNumber(gps,0,PREC1)
      playFile("/SOUNDS/fr/gps.wav")
      memgps = gps      
      end


-- GESTION DES MODES DE VOL

      if not (valuemode == memmode) then
             
         if (valuemode == 0)  then 
         playFile("/SOUNDS/fr/stable.wav")
         end

         if (valuemode == 1)  then 
         playFile("/SOUNDS/fr/acro.wav")
         end

         if (valuemode == 2)  then 
         playFile("/SOUNDS/fr/althold.wav")
         end

         if (valuemode == 3)  then 
         playFile("/SOUNDS/fr/auto.wav")
         end

         if (valuemode == 4)  then 
         playFile("/SOUNDS/fr/guider.wav")
         end

         if (valuemode == 5)  then 
         playFile("/SOUNDS/fr/flaner.wav")
         end

         if (valuemode == 6)  then 
         playFile("/SOUNDS/fr/rth.wav")
         end

         if (valuemode == 7)  then 
         playFile("/SOUNDS/fr/cercle.wav")
         end

         if (valuemode == 8)  then 
         playFile("/SOUNDS/fr/SYSTEM/0008.wav")
         end

         if (valuemode == 9)  then 
         playFile("/SOUNDS/fr/landing.wav")
         end

         if (valuemode == 10)  then 
         playFile("/SOUNDS/fr/SYSTEM/0010.wav")
         end

         if (valuemode == 11)  then 
         playFile("/SOUNDS/fr/drift.wav")
         end


         if (valuemode == 12)  then 
         playFile("/SOUNDS/fr/sport.wav")
         end

         if (valuemode == 13)  then 
         playFile("/SOUNDS/fr/SYSTEM/0013.wav") -- 13 ??
         end

         if (valuemode == 14)  then 
         playFile("/SOUNDS/fr/SYSTEM/0014.wav") -- FLIP
         end

         if (valuemode == 15)  then 
         playFile("/SOUNDS/fr/SYSTEM/0015.wav") -- AUTOTUNE
         end

         if (valuemode == 16)  then 
         playFile("/SOUNDS/fr/SYSTEM/0016.wav") -- POSHOLD
         end


         if (valuemode == 17)  then 
         playFile("/SOUNDS/fr/SYSTEM/0017.wav") -- 17 ??
         end


         if (valuemode == 18)  then 
         playFile("/SOUNDS/fr/SYSTEM/0018.wav")  -- 18 ??
         end




      memmode = valuemode

      end


                return memmode
end

return { init=init_func, run=run_func, output= {"MODE"} }
avatar
djsyl

Messages : 1322
Date d'inscription : 11/12/2014
Age : 58
Localisation : Yerres (91330)

http://club-aquilon.fr

Revenir en haut Aller en bas

Re: Annonces vocal pour Dropix pixhawk amp

Message par Belov le Ven 16 Jan 2015 - 15:25

big up !
avatar
Belov

Messages : 415
Date d'inscription : 01/01/2014
Age : 48
Localisation : Rennes

Revenir en haut Aller en bas

Re: Annonces vocal pour Dropix pixhawk amp

Message par djsyl le Sam 17 Jan 2015 - 21:40

Mise a jour du code

encore du travail mais ça commence a prendre forme !

Bonne lecture


Code:
-- MODE VOCAL POUR DROPIX --
-- CHEMIN /SCRIPT/MIXES/
-- BETA VERSION 0.02 --
-- SB 17/JANVIER/2015
-- Annonces Mode de vol, armement moteur, distance, hauteur, tension
-- Recuperation des affichages par action sur bouton SA


local valuemode
local memmode
local gps
local memgps
local armed
local memarmed
local altitude
local memaltitude
local distance
local memdistance
local tension
local memtension

local boucle


local function init_func()
                valuemode = 0
                memmode = 0
      gps = 0
      memgps = 0
      armed = 0
      memarmed = 0


      altitude = 0
      memaltitude = 0
      distance = 0
      memdistance = 0

      boucle = 0


end

local function run_func()

boucle = boucle + 1   -- pour ralentir les annonces GPS qui parlent trop

-- #################################   AFFICHAGE SUR ACTION BOUTON SA ################################################
if (getValue(92) > 0 ) then

lcd.lock()
lcd.clear()

-- ################# DESSIN CADRILLAGE ###################

  lcd.drawLine(37, -1, 37, 64, SOLID, GREY_DEFAULT)    -- Vertical 1
  lcd.drawLine(100, -1, 100, 64, SOLID, GREY_DEFAULT)  -- Vertical 2
  lcd.drawLine(162, -1, 162, 64, SOLID, GREY_DEFAULT)  -- Vertical 3

  lcd.drawLine(36, 21, 162, 21, SOLID, GREY_DEFAULT)   -- Horizointal 1
  lcd.drawLine(36, 42, 162, 42, SOLID, GREY_DEFAULT)   -- Horizontal 2


-- ################ Phantom Battery Display ############### A FINIR DE TRAVAILLER

-- Max Batt lt Taranis = 12,2V entspricht 12,6v Phantom => Spannung wird 0,4v zu niedrig angezeigt
-- Min Batt lt Taranis = 10,8V entspricht 11,2v Phantom => Spannung wird 0,4v zu niedrig angezeigt

  
  local myCurrent = getValue("216")                     -- zuz¸glich 0,4v zum Ausgleich          
--  local myCurrent = 12.4                                    -- f¸r Taranis Simulations Mode
                                
   local myMaxV = 25.2                                       -- Maximale Spannung des Akkus
   local myMinV = 21.5                                        -- Minimale Spannung des Akkus
   local myRangeV = myMaxV - myMinV                           -- Nutzspannung berechnen
   local myAvailV = myCurrent - myMinV                        -- Restliche Nutzspannung berechnen
   local myPercent = math.floor(myAvailV / myRangeV * 100)    -- Restliche Nutzspannung in Prozent
  
   if myAvailV < 0 then myAvailV = 0 end                      -- Fehlerhafte Werte abfangen
   if myPercent < 0 then myPercent = 0 end                    -- Fehlerhafte Werte abfangen
   if myPercent > 100 then myPercent = 100 end                -- Fehlerhafte Werte abfangen
  
   local myPxHeight = math.floor(myPercent * 0.37)            -- Benˆtigte Zeilenhˆhe ermitteln
   local myPxY = 11 + 37 - myPxHeight

   lcd.drawPixmap(3, 1, "/SCRIPTS/BMP/battery.bmp")           -- Leere Batterie anzeigen

    if myPercent > 0 then
       lcd.drawFilledRectangle(8, myPxY, 21, myPxHeight, FILL_WHITE )
   end


   local i = 36
   while (i > 0) do
       lcd.drawLine(7, 11 + i, 27, 11 +i, SOLID, GREY_DEFAULT)
       i= i-2
   end

   if (myCurrent > myMaxV) or (myCurrent < myMinV) then
         lcd.drawNumber(4,55, myCurrent * 100  ,PREC2 + LEFT + BLINK)
   else
        lcd.drawNumber(4,55, myCurrent * 100  ,PREC2 + LEFT)
   end
   lcd.drawText(lcd.getLastPos(), 55, "v", 0)



-- ################### MODE DISPLAY DROPIX ########################

-- lcd.drawPixmap(46, 3, "/SCRIPTS/BMP/fm.bmp")

-- custom_mode

local Mode = getValue(208)
if Mode == 0  then  lcd.drawText(46, 5, "STABLE", MIDSIZE) end
if Mode == 1  then  lcd.drawText(46, 5, "ACRO", MIDSIZE) end
if Mode == 2  then  lcd.drawText(46, 5, "ALT-H", MIDSIZE) end
if Mode == 3  then  lcd.drawText(46, 5, "AUTO", MIDSIZE) end
if Mode == 4  then  lcd.drawText(46, 5, "GUIDE", MIDSIZE) end
if Mode == 5  then  lcd.drawText(46, 5, "LOITER", MIDSIZE) end
if Mode == 6  then  lcd.drawText(46, 5, "RTL", BLINK+MIDSIZE) end
if Mode == 7  then  lcd.drawText(46, 5, "CERCLE", MIDSIZE) end
if Mode == 8  then  lcd.drawText(46, 5, "M-08", MIDSIZE) end -- ???
if Mode == 9  then  lcd.drawText(46, 5, "LANDING", MIDSIZE) end
if Mode == 10 then  lcd.drawText(46, 5, "OF_LOITER", MIDSIZE) end -- ???
if Mode == 11 then  lcd.drawText(46, 5, "DRIF", MIDSIZE) end
if Mode == 12 then  lcd.drawText(46, 5, "SPORT", MIDSIZE) end -- ???
if Mode == 13 then  lcd.drawText(46, 5, "M_13", MIDSIZE) end
if Mode == 14 then  lcd.drawText(46, 5, "FLIP", MIDSIZE) end
if Mode == 15 then  lcd.drawText(46, 5, "AUTOTUNE", MIDSIZE) end
if Mode == 16 then  lcd.drawText(46, 5, "POSHOLD", MIDSIZE) end
if Mode == 17 then  lcd.drawText(46, 5, "M_17", MIDSIZE) end  
if Mode == 18 then  lcd.drawText(46, 5, "M-18", MIDSIZE) end -- ???
                                                              

-- ####################### CHRONO  ##########################

--  lcd.drawPixmap(46, 46, "/SCRIPTS/BMP/timer.bmp")
  lcd.drawTimer(50, 46, getValue(196) , DBLSIZE)                  -- Timer 1 value [seconds]

  

-- ############## Distance ########################################
   lcd.drawPixmap(110, 0, "/SCRIPTS/BMP/dist.bmp")
   lcd.drawNumber(130, 4, getValue(212), LEFT+MIDSIZE)                -- 212 Distance
   lcd.drawText(lcd.getLastPos(), 4, "m", MIDSIZE)


-- ############## GPS ALTITUDE ########################################
         lcd.drawPixmap(110, 46, "/SCRIPTS/BMP/hgt.bmp")
    lcd.drawNumber(130,49,getValue(213), MIDSIZE  + LEFT )-- gps-altitude
    lcd.drawText(lcd.getLastPos(), 53, "m" , 0)



-- ################# GPS Quality ##################################
   local myNumSat =  getValue(209)                                   -- Temp1=209 ist Anzahl Sats
   local myQualSat =  getValue(210)                                  -- Temp2=210 ist Qualit‰t des Satfix
  
-- myNumSat =5                                                       -- f¸r Taranis Simulations Mode
-- myQualSat =3                                                      -- f¸r Taranis Simulations Mode
  
   if myQualSat == 0 then
        lcd.drawPixmap(46, 24, "/SCRIPTS/BMP/sat0.bmp")                -- kein Fix
   elseif myQualSat == 2 then
         lcd.drawPixmap(46, 24, "/SCRIPTS/BMP/sat1.bmp")                -- 2D Fix
   elseif myQualSat == 3 then
         lcd.drawPixmap(46, 24, "/SCRIPTS/BMP/sat2.bmp")                -- 3D Fix
   elseif myQualSat == 4 then
         lcd.drawPixmap(46, 24, "/SCRIPTS/BMP/sat3.bmp")                -- Differenzial GPS (DGPS)
    end   


         
    if myNumSat > 5 then
          lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_6.bmp")               -- 6 oder mehr Sats
    elseif myNumSat > 4 then
          lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_5.bmp")               -- 5 Sats
    elseif myNumSat > 3 then
          lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_4.bmp")               -- 4 Sats
    elseif myNumSat > 2 then
            lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_3.bmp")               -- 3 Sats
    elseif myNumSat > 1 then
          lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_2.bmp")               -- 2 Sats
    elseif myNumSat > 0 then
          lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_1.bmp")               -- 1 Sat
    else
       lcd.drawPixmap(66, 25, "/SCRIPTS/BMP/gps_0.bmp")                 -- kein Sat
    end
   lcd.drawNumber(73, 24, myNumSat,  SMLSIZE)                        -- Anzahl anzeigen



-- ################### Home Point ######################################
-- ### wenn Pilot Position bekannt HP setzen                 ###########
-- ### muss noch korrigiert werden da NAZA erst sp‰ter setzt ###########
  
   if getValue("pilot-longitude") == getValue("pilot-latitude") then
      lcd.drawPixmap(110, 24, "/SCRIPTS/BMP/home1.bmp")
      lcd.drawText(132, 26, "?", MIDSIZE + BLINK)
   elseif myNumSat > 5 then
      lcd.drawPixmap(110, 24, "/SCRIPTS/BMP/home.bmp")
      lcd.drawPixmap(130, 24, "/SCRIPTS/BMP/check.bmp")
   else
      lcd.drawPixmap(110, 24, "/SCRIPTS/BMP/home.bmp")
      lcd.drawText(132, 26, "X",  BLINK+ MIDSIZE)
   end

-- ####################### Logging display ############################

-- Enregistrement des log actif ( bizard le get 100 ??? )

-- ###  Logging auf logischem Schalter LS1 = source 100   #############

   if getValue(100) > 0 then                                        
      lcd.drawText(155,28,"O", SMLSIZE + BLINK) -- Clignotement sur la disquette
      lcd.drawPixmap(152, 30, "/SCRIPTS/BMP/save.bmp") -- Logo disquette
   end


-- ############### RSSI ##############################################

  if getValue(200) > 38 then
   percent = ((math.log(getValue(200)-28, 10)-1)/(math.log(72, 10)-1))*100
  else
   percent = 0
  end

  if percent > 90 then
      lcd.drawPixmap(164, 1, "/SCRIPTS/BMP/RSSI10.bmp")
  elseif percent > 80 then
      lcd.drawPixmap(164, 1, "/SCRIPTS/BMP/RSSI09.bmp")
  elseif percent > 70 then
      lcd.drawPixmap(164, 1, "/SCRIPTS/BMP/RSSI08.bmp")
  elseif percent > 60 then
      lcd.drawPixmap(164, 1, "/SCRIPTS/BMP/RSSI07.bmp")
  elseif percent > 50 then
      lcd.drawPixmap(164, 1, "/SCRIPTS/BMP/RSSI06.bmp")
   elseif percent > 40 then
      lcd.drawPixmap(164, 1, "/SCRIPTS/BMP/RSSI05.bmp")
  elseif percent > 30 then
      lcd.drawPixmap(164, 1, "/SCRIPTS/BMP/RSSI04.bmp")
  elseif percent > 20 then
      lcd.drawPixmap(164, 1, "/SCRIPTS/BMP/RSSI03.bmp")
  elseif percent > 10 then
      lcd.drawPixmap(164, 1, "/SCRIPTS/BMP/RSSI02.bmp")
  elseif percent > 0 then
      lcd.drawPixmap(164, 1, "/SCRIPTS/BMP/RSSI01.bmp")
  else
    lcd.drawPixmap(164, 1, "/SCRIPTS/BMP/RSSI00.bmp")
  end

  lcd.drawChannel(178, 55, 200, LEFT)
  lcd.drawText(lcd.getLastPos(), 56, "dB", SMLSIZE)
end



-- ########################################################################################
--                     PARTIE VOCAL
-- ########################################################################################
              valuemode = getValue(208) --  CARBURAN (mode de vol)
      gps =       getValue(209) --  T1 XX.Y XX = nombre, Y type de fixe
      armed =     getValue(210) --  T2
      altitude =  getValue(213) --  Altitude GPS
      distance =  getValue(212) --  DISTANCE
      tension =   getValue(216) --  tension (vfas)


-- GESTION de la tension

      
      if not (tension == memtension) then
                    
         playNumber(tension * 10,1,PREC1)
        
      memtension = tension      
      end




-- GESTION de l altitude

      if (altitude - 10 > memaltitude ) or (altitude + 10 < memaltitude ) then
                   playFile("/SOUNDS/fr/altitude.wav")
         playNumber(altitude,0,0)
         playFile("/SOUNDS/fr/SYSTEM/0130.wav")
      memaltitude = altitude      
      end





-- GESTION de la distance

      if (distance - 10 > memdistance ) or (distance + 10 < memdistance ) then
                     playFile("/SOUNDS/fr/distance.wav")
         playNumber(distance,0,0)
         playFile("/SOUNDS/fr/SYSTEM/0130.wav")
      memdistance = distance      
      end





-- GESTION ARMEMENT MOTEURS

      if not (armed == memarmed) then

         if (armed == 0)  then  
         playFile("/SOUNDS/fr/engoff.wav")
         end
         if (armed == 1)  then  
         playFile("/SOUNDS/fr/engon.wav")
         end

      memarmed = armed      
      end

-- GESTION nombre de GPS et du type de fix

if (boucle > 1000 ) then

      if not (gps == memgps) then

      playNumber(gps,0,PREC1)
      playFile("/SOUNDS/fr/sat.wav")
      memgps = gps      
      end
boucle = 0
end


-- GESTION DES MODES DE VOL

      if not (valuemode == memmode) then
              
         if (valuemode == 0)  then  
         playFile("/SOUNDS/fr/stable.wav")
         end

         if (valuemode == 1)  then  
         playFile("/SOUNDS/fr/acro.wav")
         end

         if (valuemode == 2)  then  
         playFile("/SOUNDS/fr/althold.wav")
         end

         if (valuemode == 3)  then  
         playFile("/SOUNDS/fr/auto.wav")
         end

         if (valuemode == 4)  then  
         playFile("/SOUNDS/fr/guider.wav")
         end

         if (valuemode == 5)  then  
         playFile("/SOUNDS/fr/flaner.wav")
         end

         if (valuemode == 6)  then  
         playFile("/SOUNDS/fr/rth.wav")
         end

         if (valuemode == 7)  then  
         playFile("/SOUNDS/fr/cercle.wav")
         end

         if (valuemode ==   then  
         playFile("/SOUNDS/fr/SYSTEM/0008.wav")
         end

         if (valuemode == 9)  then  
         playFile("/SOUNDS/fr/landing.wav")
         end

         if (valuemode == 10)  then  
         playFile("/SOUNDS/fr/SYSTEM/0010.wav")
         end

         if (valuemode == 11)  then  
         playFile("/SOUNDS/fr/drift.wav")
         end


         if (valuemode == 12)  then  
         playFile("/SOUNDS/fr/sport.wav")
         end

         if (valuemode == 13)  then  
         playFile("/SOUNDS/fr/SYSTEM/0013.wav") -- 13 ??
         end

         if (valuemode == 14)  then  
         playFile("/SOUNDS/fr/flip.wav") -- FLIP
         end

         if (valuemode == 15)  then  
         playFile("/SOUNDS/fr/autotune.wav") -- AUTOTUNE
         end

         if (valuemode == 16)  then  
         playFile("/SOUNDS/fr/poshold.wav") -- POSHOLD
         end


         if (valuemode == 17)  then  
         playFile("/SOUNDS/fr/SYSTEM/0017.wav") -- 17 ??
         end


         if (valuemode == 18)  then  
         playFile("/SOUNDS/fr/SYSTEM/0018.wav")  -- 18 ??
         end




      memmode = valuemode

      end


                return memmode
end

return { init=init_func, run=run_func, output= {"MODE"} }
Fichiers joints
apm-son-2.zip Vous n'avez pas la permission de télécharger les fichiers joints.(386 Ko) Téléchargé 34 fois
avatar
djsyl

Messages : 1322
Date d'inscription : 11/12/2014
Age : 58
Localisation : Yerres (91330)

http://club-aquilon.fr

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum