Configuracion Radios

 Mobiflight es un maravilloso software que permite que un arduino mega se conecte con el Flight Simulator para interactuar con el.


Se pueden conectar salidas como displays led de 7 segmentos, pantallas lcd de 2x16 o 4x20, leds y steppers. Como entradas admite interruptores y encoders.


Para mas detalles de lo que se puede conectar hay un excelente forum de la comunidad de Mobiflight.


Lo que voy a explicar aqui no pretende ser un manual de uso, solo algunas configuraciones que utilice en este proyecto.


Existe una limitacion al usar displays LCD en MF que solo se permite el uso de 7 variables para mostrar. Yo queria simplificar el diseño del panel de Radios limitandolo a:


1 display 4x20

1 switch para seleccion de la radio a configurar

1 switch para el cambio de frecuencia activa <=> standby

1 encoder para cambiar la parte entera y la decimal de la frecuencia standby


Decidi hacer esto para economizar entradas digitales del arduino puesto que otro objetivo era utilizar uno solo maximizando los controles del avion a usar con el.


Configuracion:

A) Crear las 8 configuraciones para las frecuencias de las radios



cada frecuencia esta configurada asi (teniendo en cuenta elegir el offset correcto del FSUIPC de cada frecuencia)


En la pestaña display NO seleccionamos nada. Guardamos cada frecuencia.

B) Defini 4 variables que lo unico que van a mostrar es un * que marca la radio que se va a configurar con el encoder y el switch de cambio de frecuencia


cada variable quedo definida asi:


Tener en cuenta usar un offset libre para cada variable de salida (0x66C0, 0x66C1, etc.)

En la solapa "Compare" va:


C) Defino la salida donde se va a mostrar todas las frecuencias de las radior y el indicador


Que queda definida asi:


En la solapa display se elige el arduino y el display de salida.

Hasta aca definimos 12 variables de salida a representar en el LCD de 4x20 lo cual no es posible con las limitaciones de MF. El truco consiste en modificar el archivo resultante ( el .mcc) de la siguiente forma.


Buscamos la definicion del LCD

<config guid="7185dfdd-5b80-4c80-8261-4c9f16854fe5">
      <active>true</active>
      <description>salCom</description>
      <settings msdata:InstanceType="MobiFlight.OutputConfigItem, MFConnector, Version=9.0.0.0, Culture=neutral, PublicKeyToken=null" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <source type="FSUIPC" offset="0x0000" offsetType="Integer" size="1" mask="0x00FF" bcdMode="False" />
        <comparison active="False" value="" operand="" ifValue="" elseValue="" />
        <display type="LcdDisplay" serial="MobiFlight Mega/ SN-7bd-692" trigger="normal" address="Lcd1">
          <line>c1 ###.## !!!.!! O</line>
          <line>c2 ???.?? @@@.@@ P</line>
          <line>N1 AAA.AA BBB.BB Q</line>
          <line>N2 FFF.FF GGG.GG R</line>
        </display>
        <preconditions>
          <precondition type="config" active="false" ref="622435ac-f8c9-4c9b-bdd5-b5bf24281acb" operand="=" value="0" logic="and" />
        </preconditions>
        <transformation active="False" expression="$" substrStart="0" substrEnd="7" />
        <configrefs>
          <configref active="True" ref="a746ed68-e432-485e-a64e-e6f3a81f470a" placeholder="O" />
          <configref active="True" ref="e5f85700-b1b0-4a54-a1b0-a250b70c0e52" placeholder="P" />
          <configref active="True" ref="0fc7b32a-5189-402a-98f1-ab5903fb8337" placeholder="Q" />
          <configref active="True" ref="885c850d-f46b-4935-87db-6d77c19cd9e6" placeholder="R" />
          <configref active="True" ref="ad29dd11-6b1f-4cec-9365-7e5a42c8db89" placeholder="G" />
          <configref active="True" ref="11560d7c-cefc-44c4-9208-05137acb89e4" placeholder="F" />
          <configref active="True" ref="2444e85b-f3be-484f-8d4c-57889fffc1a2" placeholder="B" />
          <configref active="True" ref="7e93f051-9224-45a0-b833-80997dbf3302" placeholder="A" />
          <configref active="True" ref="09aba2fc-1164-4f8a-af35-f45c7a280f95" placeholder="@" />
          <configref active="True" ref="d0102c95-41fe-4deb-855a-b9c43e819a62" placeholder="?" />
          <configref active="True" ref="4f3289e4-3b67-419b-8bf4-31d86c6e0e70" placeholder="!" />
          <configref active="True" ref="ef31011c-c4d6-44cf-a9a5-559d3b705b9a" placeholder="#" />
        </configrefs>
      </settings>
    </config>

Esta es la parte que nos interesa:

          <line>c1 ###.## !!!.!! O</line>
          <line>c2 ???.?? @@@.@@ P</line>
          <line>N1 AAA.AA BBB.BB Q</line>
          <line>N2 FFF.FF GGG.GG R</line>

(La modificamos para que muestre lo que queremos en nuestro proyecto)

          <line>c1 ###.## !!!.!! O</line>
          <line>c2 ???.?? @@@.@@ P</line>
          <line>N1 AAA.AA BBB.BB Q</line>
          <line>N2 FFF.FF GGG.GG R</line>

Lo que esta en rojo son las variables a mostrar 

La salida por pantalla de esta definicion quedaria asi:

c1   113.40 107.30 *
c2   103.40 117.30 
N1  109.40 107.30 
N1  113.40 107.30 

El * marca que radio va a ser configurada con el switch y el encoder.

Una vez definido lo que queremos mostrar es momento de ajustar el archivo fuente:

La salida de la frecuencia activa de la Radio 1 (c1frec) esta definida asi:

<config guid="ef31011c-c4d6-44cf-a9a5-559d3b705b9a">
      <active>true</active>
      <description>c1frec</description>
      <settings msdata:InstanceType="MobiFlight.OutputConfigItem, MFConnector, Version=9.0.0.0, Culture=neutral, PublicKeyToken=null" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <source type="FSUIPC" offset="0x034E" offsetType="Integer" size="2" mask="0xFFFF" bcdMode="True" />
        <comparison active="False" value="" operand="" ifValue="" elseValue="" />
        <display type="" serial="-" trigger="normal" pin="" pinBrightness="255" />
        <preconditions />
        <transformation active="True" expression="$+10000" substrStart="0" substrEnd="7" />
        <configrefs>
          <configref active="False" ref="11560d7c-cefc-44c4-9208-05137acb89e4" placeholder="B" />
          <configref active="False" ref="2444e85b-f3be-484f-8d4c-57889fffc1a2" placeholder="A" />
          <configref active="False" ref="7e93f051-9224-45a0-b833-80997dbf3302" placeholder="@" />
          <configref active="False" ref="09aba2fc-1164-4f8a-af35-f45c7a280f95" placeholder="?" />
          <configref active="False" ref="d0102c95-41fe-4deb-855a-b9c43e819a62" placeholder="!" />
          <configref active="False" ref="4f3289e4-3b67-419b-8bf4-31d86c6e0e70" placeholder="#" />
        </configrefs>
      </settings>
    </config>

Lo que nos interesa es el valor que esta en rojo


ef31011c-c4d6-44cf-a9a5-559d3b705b9a


En la definicion del LCD para mostrarla en la pantalla se define asi:

 <configref active="True" ref="ef31011c-c4d6-44cf-a9a5-559d3b705b9a" placeholder="#" />

El signo # en el renglon define en que parte de la pantalla va a estar:


           <line>c1 ###.## !!!.!! O</line>
          <line>c2 ???.?? @@@.@@ P</line>
          <line>N1 AAA.AA BBB.BB Q</line>
          <line>N2 FFF.FF GGG.GG R</line>

Pongamos otro ejemplo:

La salida de la frecuencia stand by del NAV 1 (n1stby) esta definida asi:

<config guid="2444e85b-f3be-484f-8d4c-57889fffc1a2">
      <active>true</active>
      <description>n1stby</description>
      <settings msdata:InstanceType="MobiFlight.OutputConfigItem, MFConnector, Version=9.0.0.0, Culture=neutral, PublicKeyToken=null" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <source type="FSUIPC" offset="0x311E" offsetType="Integer" size="2" mask="0xFFFF" bcdMode="True" />
        <comparison active="False" value="" operand="" ifValue="" elseValue="" />
        <display type="" serial="-" trigger="normal" pin="" pinBrightness="255" />
        <preconditions />
        <transformation active="True" expression="$+10000" substrStart="0" substrEnd="7" />
        <configrefs>
          <configref active="False" ref="11560d7c-cefc-44c4-9208-05137acb89e4" placeholder="B" />
          <configref active="False" ref="7e93f051-9224-45a0-b833-80997dbf3302" placeholder="A" />
          <configref active="False" ref="09aba2fc-1164-4f8a-af35-f45c7a280f95" placeholder="@" />
          <configref active="False" ref="d0102c95-41fe-4deb-855a-b9c43e819a62" placeholder="?" />
          <configref active="False" ref="4f3289e4-3b67-419b-8bf4-31d86c6e0e70" placeholder="!" />
          <configref active="False" ref="ef31011c-c4d6-44cf-a9a5-559d3b705b9a" placeholder="#" />
        </configrefs>
      </settings>
    </config>

En el LCD

         <line>c1 ###.## !!!.!! O</line>
          <line>c2 ???.?? @@@.@@ P</line>
          <line>N1 AAA.AA BBB.BB Q</line>
          <line>N2 FFF.FF GGG.GG R</line>

<configref active="True" ref="2444e85b-f3be-484f-8d4c-57889fffc1a2" placeholder="B" />

Y asi podemos agregar variables a mostrar en el LCD


De esta forma podemos manejar mas variables a mostrar que las permitidas por MF. Cabe destacar que al cargar el archivo en MF este desconoce las modificaciones "por afuera" realizadas, esto permite seguir trabajando normalmente agregando mas definiciones.

Usando esta tecnica y las solapas "precondicion" y "compare" de cada variable se podria extender el uso de un LCD para mostrar muchos parametros diferentes.

En otra entrada voy a mostrar como defini el switch de cambio de radio.

SIEMPRE previo a estas modificaciones hacer una copia del archivo original !!!!






Comentarios

Entradas populares de este blog

Recomendaciones con Mobiflight

El inicio

Volando !!!!!