Un nouveau Baron !!

Toutes les cabines de simulateur réalisées par les membres d'Aircockpit classées par genre

Re: Un nouveau Baron !!

Messagede trajector » Lun 8 Nov 2021 21:32

Bonjour

Cela fait un moment que je ne suis pas intervenu, mais d’autres tâches m’incombaient.
Pour mon Baron, voici la conception de ma dernière pièce : le sélecteur d’altitude et de VS.

Image

Certains puristes me diront que ce n’est pas sa forme originelle, mais plutôt celle-ci :

Image

L’intégration d’un LCD de 2 x 16 et d’un encodeur m’ont obligé à faire cette entorse.

Comme interface j’ai utilisé la carte USB-LCD.
Le câblage du LCD s’est avéré assez délicat. Il eut fallu fabriquer un CI double face et je n’en avais pas les moyens.

J’ai utilisé des platines d’expérimentation de ce style :

Image

Platine Euro DIN 41612 chez Conrad. Jai accolé 2 sections afin d’en faire un simili double face que j’ai ensuite câblé.

Voici un aperçu :

Image

l’envers du décor:

Image

Pour configurer l’écran, je vous propose de suivre ce tutoriel (il est en français)
https://docspike.com/download/tutorial-lcd_pdf

Pour un bon fonctionnement, il est impératif de rentrer manuellement le chemin de votre IOclcd.lcd ,comme indiqué ci-dessous, dans le fichier ini correspondant au logiciel IOCLlcd.exe

[ Fichero de configuracion ]
[ Configuration File ]
CONFIG_FILE=I:\Simulation\FreeCAD\VS_Altitude\Logiciel_LCD\IOclcd.lcd



Et voici le code sioc pour son fonctionnement :

Code: Tout sélectionner
// *****************************************************************************
// * Config_SIOC ver 5.1   -     By Manuel Velez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : essai_VS.txt
// * Date : 09/10/2021



Var 0010, name VS
{
  V1002 = &VS   
  V1004 = &VS   
}

Var 0011, name VS_01, Link FSUIPC_INOUT, Offset $07F2, Length 2
{
  &VS = &VS_01   
  IF &VS_01 > 55636
  {
    &VS = &VS_01 - 65536
  }
}

Var 0012, name Altitude
{
  V1001 = &Altitude   
  V1003 = &Altitude   
}

Var 0013, name Altitude_01, Link FSUIPC_INOUT, Offset $07D4, Length 4
{
  L0 = &Altitude_01 / 19975.37
  &Altitude = L0   
}

Var 0014, name sw_vs_alt, Link IOCARD_SW, Input 15, Type P
{
  IF &sw_vs_alt = 0
  {
    &ecran_LCD = 0   
  }
  ELSE
  {
    &ecran_LCD = 1   
  }
}

Var 0015, name Encoder_VS_Alt, Link IOCARD_ENCODER, Input 45, Aceleration 6, Type 2
{
  IF &sw_vs_alt = 0
  {
    L0 = &Encoder_VS_Alt * 100
    &VS_01 = LIMIT -5000 ,5000 ,L0
  }
  ELSE
  {
    L0 = &Encoder_VS_Alt * 100
    &Altitude = LIMIT 0 ,99999 ,L0
  }
}

Var 1000, name ecran_LCD

Var 1001, static

Var 1002, static

Var 1003, static

Var 1004, static


Remarque importante, les variables 1001 à 1004 sont en mode static, c’est impératif car elles correspondent à la configuration de l’écran dans le IOclcd.lcd. Le numéro de variable doit rester immuable, surtout si vous utilisez Config_sioc.exe pour concaténer plusieurs fichiers.

le poussoir de l'encodeur sert à passer de l'altitude à la VS. une petite précision, vous avez sans doute remarqué sur l'écran
le signe ">>", il sert à indiquer soit "altitude" ou "VS" est actif à l'affichage et sera incrémenté par l'encodeur.

Et pour finir, ci-joint les différents fichiers nécessaires à la conception de l’appareil :

Logiciel_LCD.rar
(433.31 Kio) Téléchargé 138 fois


C'est tout pour aujourd'hui.

Jean-Gilles
trajector
 
Messages: 120
Inscription: 19/04/09

Re: Un nouveau Baron !!

Messagede pierre01 » Lun 31 Jan 2022 11:37

Bonjour Jean-Gilles,

Je reviens vers toi au sujets des aérateurs que tu a modélisés !
J'avais téléchargé tes fichiers .stl et je viens de les imprimer, c'est top rigolus

Je ne vais pas les utiliser en tant qu'aérateur (j'en ai 4 vrais) mais plutôt comme plafonnier en mettant des leds dans les 4 secteurs.
Ceci dit, j'aurais quelques détails à régler :
- Limiter la rotation et l'inclinaison.
- fixer un petit circuit imprimé à l'arrière.

J'ai quelques idées si tu veux bien m'envoyer les fichiers FreeCad ?

Une question : As-tu prévu quelque chose pour diminuer le jeu entre la boule et le support ?
Et bravo pour tes réalisations.
A+
Pierre.
Avatar de l’utilisateur
pierre01
 
Messages: 1718
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Un nouveau Baron !!

Messagede trajector » Mar 1 Fév 2022 17:52

Bonjour Pierre

ci-joint les fichiers de la ventilation:
Ventilation.rar
(1.16 Mio) Téléchargé 98 fois


Je n'ai rien prévu pour diminuer le jeu, à essayer, percer le flan et y introduire une
pastille de feutre.

A+

Jean-Gilles
trajector
 
Messages: 120
Inscription: 19/04/09

Re: Un nouveau Baron !!

Messagede pierre01 » Mar 1 Fév 2022 19:17

Merci Jean-Gilles.
A+
Pierre.
Avatar de l’utilisateur
pierre01
 
Messages: 1718
Inscription: 19/04/09
Localisation: Vers Vesoul (Haute Saône)

Re: Un nouveau Baron !!

Messagede trajector » Mar 29 Nov 2022 17:02

Bonjour,

Il me restait quelques éléments à terminer :

Dans le panneau Radio, le module ADF, celui-ci comme modèle.

Image

Sa réalisation :

Image

Une vue de l’assemblage :

Image

Voici les fichiers, PCB, STL, et sérigraphie :
ADF.rar
(415.22 Kio) Téléchargé 22 fois

Je ne commenterai pas ce module, il suffit de se référer au montage du COM_NAV, c’est la même chose.

Et le code SIOC

Code: Tout sélectionner
// *****************************************************************************
// * Config_SIOC ver 5.1   -     By Manuel Velez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : ADF_Stanby_00.txt
// * Date : 02/11/2022



Var 0000, Value 0
{
  &ADF_Stb_Dec = 5         //  variable ADF Standby,   décimale
  &ADF_Stb_Ent = 385         //  variable ADF Standby,  Entier
  &ADF_Stb_Ent_R = DIV &ADF_Stb_Ent ,10
  CALL &XADF_Stb_Ent_R     // vers subroutine  ("C" calc, "R" rotate)
  CALL &CaADF_Stb_Freq     // vers subroutine  ("C" calc, "R" rotate)
}

Var 0001, name X_ADF_Act_Ent, Link FSUIPC_INOUT, Offset $034C, Length 2
{
  L0 = FROMBCD &X_ADF_Act_Ent
  &ADF_Act_Ent = L0   
  &ADF_Act_Ent_R = DIV &ADF_Act_Ent ,10
  CALL &XADF_Act_Ent_R
  CALL &CaADF_Act_Freq
}

Var 0002, name X_ADF_Act_Dec, Link FSUIPC_INOUT, Offset $0356, Length 2
{
  &ADF_Act_Dec = &X_ADF_Act_Dec   
  CALL &XADF_Act_Ent_R
  CALL &CaADF_Act_Freq
}

Var 0003, name ADF_Act_Ent     //  FSUIPC ADF actif , Entier: 3 digits

Var 0004, name ADF_Act_Dec     // FSUIPC ADF actif , décimal: 1 digits

Var 0005, name ADF_Act_Freq     //  total (needed for display): 4 digits

Var 0006, name ADF_Stb_Ent     // FSUIPC ADF standby, Entier: 3 digits

Var 0007, name ADF_Stb_Dec     // FSUIPC ADF standby, décimal: 1 digit

Var 0008, name ADF_Stb_Freq     // total (needed for display): 4 digits

Var 0009, name CaADF_Act_Freq, Link SUBRUTINE
{
  L0 = &ADF_Act_Ent * 10     // entier * 10
  &ADF_Act_Freq = L0 + &ADF_Act_Dec     // + decimal
  CALL &Out_ADF_Act
}

Var 0010, name CaADF_Stb_Freq, Link SUBRUTINE
{
  L0 = &ADF_Stb_Ent * 10     // entier * 10
  &ADF_Stb_Freq = L0 + &ADF_Stb_Dec     // + decimal
  CALL &Out_ADF_Stb
}

Var 0011, name Out_ADF_Act, Link SUBRUTINE
{
  &D_ADF_Act = &ADF_Act_Freq         //      liaison vers  carte display
}

Var 0012, name Out_ADF_Stb, Link SUBRUTINE
{
  &D_ADF_Stb = &ADF_Stb_Freq         //      liaison vers  carte display
}

Var 0013, name ADF_Act_Ent_R     //      Entier  2 digits controllé par enco

Var 0014, name ADF_Act_Dec_R     //       Décimal  2 digits controllé par en

Var 0015, name ADF_Stb_Ent_R     //      Entier  2 digits controllé par enco

Var 0016, name ADF_Stb_Dec_R     //       Décimal  2 digits controllé par en

Var 0017, name XADF_Act_Ent_R, Link SUBRUTINE
{
  L0 = MOD &ADF_Act_Ent ,10
  L0 = L0 * 10
  &ADF_Act_Dec_R = L0 + &ADF_Act_Dec
}

Var 0018, name CaADF_Act_Ent, Link SUBRUTINE
{
  L0 = DIV &ADF_Act_Dec_R ,10
  L1 = &ADF_Act_Ent_R * 10
  &ADF_Act_Ent = L0 + L1
}

Var 0019, name XADF_Stb_Ent_R, Link SUBRUTINE
{
  L0 = MOD &ADF_Stb_Ent ,10
  L0 = L0 * 10
  &ADF_Stb_Dec_R = L0 + &ADF_Stb_Dec
}

Var 0020, name CaADF_Stb_Ent, Link SUBRUTINE
{
  L0 = DIV &ADF_Stb_Dec_R ,10
  L1 = &ADF_Stb_Ent_R * 10
  &ADF_Stb_Ent = L0 + L1
}

Var 0021, name RO_ADF_Stb, Link IOCARD_ENCODER, Input 4, Aceleration 4, Type 2
{
  IF &sw_ADF = 0     // reglage des entiers
  {
 
  L0 = &RO_ADF_Stb * -1     //         changer de sens
  &ADF_Stb_Ent_R = ROTATE 20 ,99 ,L0
 
}

Else
{
  L0 = &RO_ADF_Stb * 5
  &ADF_Stb_Dec_R = ROTATE 0 ,99 ,L0
  &ADF_Stb_Dec = MOD &ADF_Stb_Dec_R ,10
  }
  CALL &CaADF_Stb_Ent
  CALL &CaADF_Stb_Freq
}

Var 0024, name sw_ADF, Link IOCARD_SW, Input 8, Type P     // swich encodeur

Var 0025, name calc_ent_ADF

Var 0026, name calc_dec_ADF

Var 0027, name FreqSwap, Link IOCARD_SW, Input 2, Type P
{
  L0 = &ADF_Act_Ent_R   
  L1 = &ADF_Act_Dec_R   
  L2 = &ADF_Act_Ent   
  &Save = &ADF_Act_Dec   
  &X_ADF_Act_Dec = &ADF_Stb_Dec         // décimal digit to fsuipc
  &X_ADF_Act_Ent = TOBCD &ADF_Stb_Ent     // Entier 3 digits en bcd vers fsuipc
  &ADF_Stb_Ent_R = L0   
  &ADF_Stb_Dec_R = L1   
  &ADF_Stb_Ent = L2   
  &ADF_Stb_Dec = &Save   
  CALL &CaADF_Stb_Ent
  CALL &CaADF_Stb_Freq
}

Var 0028, name D_ADF_Act, Link IOCARD_DISPLAY, Digit 54, Numbers 4

Var 0029, name D_ADF_Stb, Link IOCARD_DISPLAY, Digit 49, Numbers 4

Var 0030, name Save


Ce code diffère énormément de celui de COM_NAV, car il n’existe pas d’offset de standby pour l’ADF.
A noter qu’il n’y a qu’un seul encodeur pour les entiers et les décimales, le poussoir de l’encodeur permet le passage de l'un à l'autre
Le bouton nommé ADF sur la représentation permet la bascule Actif à Stanby.

Passons à la DME :

côté face:
Image

côté pile:
Image

L’inter à glissière sert à passer d’un VOR1 à VOR2
On remarque qu’il n’y pas de PCB.
La position ON/OFF est matérialisé par l'inter d'un potentiomètre.

Image

Le code SIOC:
Code: Tout sélectionner
// *****************************************************************************
// * Config_SIOC ver 5.1   -     By Manuel Velez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : Essai_DME.txt
// * Date : 07/11/2022



Var 0000, Value 0

//  **************************************************************
//  *********************  DISPLAY *****************************
//  **************************************************************

Var 0011, name swap_DME, Link IOCARD_SW, Input 48,      // swicht passage DME1_DME2

Var 0012, name speed_DME_d, Link IOCARD_DISPLAY, Digit 14, Numbers 3     // sortie display speed

Var 0013, name dist_DME_d, Link IOCARD_DISPLAY, Digit 20, Numbers 3     // sortie display distance

Var 0014, name time_DME_d, Link IOCARD_DISPLAY, Digit 26, Numbers 2     // sortie display time

// ****************************************************************
//  **************************  DME1 ****************************
//  ***************************************************************

Var 0016, name DME1_dist, Link FSUIPC_IN, Offset $0300, Length 2     // distance DME1 en nm*10
{
  CALL &DME1_DME2
}
Var 0019, name calc_spd_DME1     // affiche la vitesse DME1 en kt
{
  CALL &DME1_DME2
}

Var 0020, name DME1_speed, Link FSUIPC_IN, Offset $0302, Length 2     // vitesse DME 1 en kts*10
{
  L0 = &DME1_speed / 10
  &calc_spd_DME1 = L0   
}

Var 0024, name calc_time_DME1
{
  CALL &DME1_DME2
}

Var 0025, name DME1_time, Link FSUIPC_IN, Offset $0304, Length 2     // time to station DME1 en sec*10

  {
     L0 = &DME1_time / 600    // time to station en minutes
 
       &calc_time_DME1  = TRUNC L0   
  }

// ****************************************************************
//  **************************  DME2 ****************************
//  ***************************************************************

Var 0030, name DME2_dist, Link FSUIPC_IN, Offset $0306, Length 2     // distance DME2*10
{
  CALL &DME1_DME2
}

Var 0031, name calc_spd_DME2     // affiche la vitesse DME2 en kt
{
  CALL &DME1_DME2
}

Var 0032, name DME2_speed, Link FSUIPC_IN, Offset $0308, Length 2     // vitesse DME2 en kts*10
{
  L0 = &DME2_speed / 10
  &calc_spd_DME2 = L0   
}

Var 0033, name calc_time_DME2
{
  CALL &DME1_DME2
}

Var 0034, name DME2_time, Link FSUIPC_IN, Offset $030A, Length 2     // affiche time to station DME2 en sec*10

  {
     L0 = &DME2_time / 600    // time to station en minutes
     
       &calc_time_DME2  = TRUNC L0   
  }
Var 035, name DME1_DME2, Link SUBRUTINE
{
  IF &swap_DME = 0
  {
     &dist_DME_d =  &DME1_dist
    &speed_DME_d = &calc_spd_DME1
    &time_DME_d = &calc_time_DME1
  }
  ELSE
  {
    L0 = &DME2_dist / 10
   L1 = TRUNC L0
     &dist_DME_d =  L1
    &speed_DME_d = &calc_spd_DME2
    &time_DME_d = &calc_time_DME2
  }
}


Et les fichiers joints:
DME.rar
(54.64 Kio) Téléchargé 21 fois


suite sur le prochain message.
trajector
 
Messages: 120
Inscription: 19/04/09

Re: Un nouveau Baron !!

Messagede trajector » Mar 29 Nov 2022 17:39

Re bonjour,

Et pour finir cette séquence, l’Autopilot celui-ci est placé sur le pédestal :

Image

Image

Image

les fichiers joints :
Radiopilot.rar
(125.37 Kio) Téléchargé 22 fois


et le code SIOC :

Code: Tout sélectionner
// *****************************************************************************
// * Config_SIOC ver 5.1   -     By Manuel Velez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : Essai_autopilot.txt
// * Date : 17/11/2022



Var 0001, name autopilot, Link FSUIPC_INOUT, Offset $07BC, Length 4     //  Autopilot Master

Var 0002, name autopilot_HDG, Link FSUIPC_INOUT, Offset $07C8, Length 4  //  Autopilot HDG

Var 0003, name autopilot_NAV1, Link FSUIPC_INOUT, Offset $07C4, Length 4  //  Autopilot NAV1

Var 0004, name autopilot_APPR, Link FSUIPC_INOUT, Offset $07FC, Length 4  //  Autopilot Approche

Var 0005, name autopilot_ALT, Link FSUIPC_INOUT, Offset $07D0 Length 4     // Autopilot altitude

Var 0006, name autopilot_BC, Link FSUIPC_INOUT, Offset $0804, Length 4     //  Autopilot BC

Var 0007, name autopilot_Yaw, Link FSUIPC_INOUT, Offset $0808, Length 4     //  Autopilot Yaw Damp

Var 0008, name autopilot_FD, Link FSUIPC_INOUT, Offset $2EE0, Length 4     //  Autopilot FD

Var 0009, name vertical_speed, Link FSUIPC_INOUT, Offset $07F2, Length 4     //  vertical speed

Var 0010, name altitude_value, Link FSUIPC_INOUT, Offset $07D4, Length 4     //  altitude value


Vous pouvez remarquer que pour l'instant je n'ai pas associé les leds et les boutons aux différents offsets, mais cela ne pose pas une très grande difficulté.

Je crois avoir fini avec la construction des différents modules et gauges afférents au Baron 58 , il me reste encore une longue épreuve c'est de globaliser le code SIOC, ce sera pour un prochain post.

A bientôt

Jean-Gilles
trajector
 
Messages: 120
Inscription: 19/04/09

Re: Un nouveau Baron !!

Messagede trajector » Mer 25 Jan 2023 19:32

Je vois que vous êtes toujours nombreux à visiter mon post, ce qui m’incite à vous communiquer la suite.

Maintenant que toutes les jauges sont construites, les interrupteurs, les poussoirs, les encodeurs, … sont en place et que tous les branchements sont effectués, nous allons passer à la programmation.

Pour cela, j’utilise SIOC
Vous le trouverez ici :
https://www.opencockpits.com/index.php/en/download/category/sioc


Pourquoi SIOC, tout simplement, j’ai commencé avec les cartes OpenCockpits et l’évolution de mon simulateur s’est étoffée de nombreuses cartes.
Je n’aborderai par le détail, ce qu’est le langage SIOC, bien d’autres l’ont fait avant moi et voilà quelques référents (les pros de la programmation) :

Claude Kieffer avec son site Simucockpit :
https://simucockpit.fr/

Pierre Rault, son site à disparu, mais il a été récupéré, vous le trouverez ici :
viewtopic.php?f=77&t=6992&p=94079#p94079

Les excellents tutos de Mameloose :
viewforum.php?f=184

How to sioc ? de Nico W. Kaan
J’en ai fait la traduction :
viewtopic.php?f=135&t=6690

Vous aurez aussi besoin de la liste des Offsets :
https://fsuipc.simflight.com/beta/FSUIP ... Status.pdf

Il va sans dire, que vous avez besoin d’une version enregistrée de Fsuipc de Pete & John Dowson :
http://www.fsuipc.com/



SIOC est un langage de programmation puissant, permettant d'incorporer dans un cockpit des fonctions logiques complexes, des temporisations, des formules mathématiques, etc...

Alors qu’un système classique ferait en permanence, et un grand nombre de fois par seconde le tour de tous les interrupteurs, encodeurs, potentiomètres etc.… qui sont connectés pour voir si l'un d'entre eux n'a pas changé d'état depuis la dernière visite, SIOC, lui, est par défaut au repos, et n'agit que si un "évènement" nouveau se produit, par exemple un interrupteur qu'on vient de fermer. De ce fait, SIOC est plus rapide et moins gourmand en ressources.

Le Diagramme de fonctionnement est le suivant

Image

Par conséquent, s'il n'existe pas de changements dans les variables, il n'existe pas d'événement ni de transmission d'information.
Pour qu'il y ait un événement, il doit exister un changement dans la variable associée.
Cette notion est primordiale, il est très important de bien l’intégrer lors de l’écriture de votre programme.
Toutes fonctions doivent être liées directement à l’événement pour être prises en compte, d’où l’utilisation de nombreux « CALL » avec les « subroutines. »
J’ai souvent galéré pour avoir oublié cette procédure.
Toutes ces notions sont explicitées dans le forum, mais aujourd’hui elles sont éparpillées.
Je les ai regroupées pour vous faciliter la tâche

Des exemples.

Var 0010, name swap_DME, Link IOCARD_SW, Input 48, // swicht passage DME1_DME2
{
IF &swap_DME = 0
{
&DME_select = 1
}
ELSE
{
&DME_select = 2
}
}

Var 0011, name DME_select, Link FSUIPC_IN, offset $0378, length 2 // passage

Ca marche

Var 0010, name swap_DME, Link IOCARD_SW, Input 48, // swicht passage DME1_DME2

Var 0011, name DME_select, Link FSUIPC_IN, offset $0378, length 2 // passage
{
IF &swap_DME = 0
{
&DME_select = 1
}
ELSE
{
&DME_select = 2
}
}

Il ne fonctionne pas
La partie “IF et ELSE” n’est pas directement liée à l’évènement de la Var 11


Maintenant passons à l’écriture proprement dite :
On peut utiliser le « Config_SIOC »

C’est très bien, et même indispensable quand on débute pour mieux comprendre la syntaxe.

Image

Reportez-vous aux différents tutos de Mameloose.

Mais lorsque les lignes de code s’allongent, il devient difficile de s’y retrouver. Je suis passé à l’écriture en « Notepad++ ». J’ai suivi les conseils de Pierre Rault. Allez sur son site, dans la rubrique « Programmer en SIOC », puis « faciliter la programmation avec Notepad++ ».
Suivez ses conseils pour avoir une écriture colorée de votre programme et avoir un surlignement des variables pour un meilleur suivi de la programmation.

Voici une image, représentant cette écriture avec Notepad++.

Image

C'est tout pour aujourd'hui, bientôt je vous communiquerai une grande partie du code de mon Baron 58.

Jean-Gilles
trajector
 
Messages: 120
Inscription: 19/04/09

Re: Un nouveau Baron !!

Messagede fab » Jeu 26 Jan 2023 18:08

Beau boulot Jean Gilles !

Lorsque qu'il y a trop de lignes n'hésite pas à utiliser le multi script !

Tu trouveras un tuto ici : https://m.youtube.com/watch?v=N6tIshDwyB4

Note aussi que tu as des cartes IO françaises que tu trouveras ici : https://efde.fr/index.php?id_product=11&id_product_attribute=0&rewrite=carte-io32&controller=product&id_lang=1

Fabien
Avatar de l’utilisateur
fab
 
Messages: 4295
Inscription: 26/12/12
Localisation: Roubaix

Précédente

Retourner vers Les cockpits des membres du forum





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité