DCS -BIOS tuto pour affichage sur oled

Fabrication de cockpit et divers ( palonnier , panels ..) c est ICI
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

DCS -BIOS tuto pour affichage sur oled

#1

Message par bugz »

Bonjour,
je suis toujours à la découverte des fonctionnalités des cartes arduino avec DCS BIOS. Je l'utilise pour toutes les leds de mon cockpit. Tout à marché car il suffisait de faire du copier coller et de changer le pin. Maintenant j'aimerais réussir à afficher des données sur un écran oled . Pour commencer j'ai choisi un affichage de L'UFC du Hornet, celui de la valeur de la fréquence. je fais mes tests avec un oled 128x32 I2C SSD 1306. J'ai testé l'exemple de la librairie et cela fonctionne très bien. Là où ça se complique c'est au niveau du code pour DCS.
Dans le control reference je récupère le code de l'affichage mais cela semble plus complexe qu'avec les leds. Un simple copier coller ne suffit plus. Du coup je cherche un tuto ou un exemple simple pour pouvoir afficher des données sur ce genre d'écran.
Est ce que ce genre de code demande beaucoup de connaissance?
J'ai trouvé des codes avec des écrans différents mais je ne comprends pas grand chose. Y a-t-il un type d'écran plus simple à coder pour obtenir le même résultat?

Merci.
Avatar de l’utilisateur

Hombre
Apprenti-Mécano
Apprenti-Mécano
Messages : 311
Inscription : 26 juin 2014

Re: DCS -BIOS tuto pour affichage sur oled

#2

Message par Hombre »

Bonjour
Si je comprends, tu veux ajouter un 2 écran mais pour y mettre juste le ufc qui est si je ne me trompe pas, la carte?
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#3

Message par bugz »

je voudrai dans un premier temps faire afficher les données de cet écran (dans le jeu) sur un écran oled piloté par une arduino micro. Mais je ne comprends pas trop où mettre le code du reference-control et quoi mettre au milieu. J'essaie de m'inspirer d'exemple du net mais sans succès pour l'instant.
Image
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#4

Message par bugz »

avec ma MICRO j'ai ce message: Erreur de compilation pour la carte Arduino/Genuino Micro , alors qu'avec ma UNO et ma MEGA
la compilation se passe bien. La MICRO n'est pas compatible avec DCS BIOS?

Apparemment la NANO serait compatible mais pas la MICRO. Quelqu'un peu confirmer?

mon code pour afficher un texte fonctionne, mais quand j'inclue la librairie DCS BIOS j'ai une remontée d'erreur de compilation....
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#5

Message par bugz »

Même en reprenant des petits codes qui fonctionnent sur le net j'ai des remontées d'erreurs au moment de la vérification.j'ai ce warning la plupart du temps #define PRR0 PRR à propos de la librairie dcs bios...
Avatar de l’utilisateur

Hombre
Apprenti-Mécano
Apprenti-Mécano
Messages : 311
Inscription : 26 juin 2014

Re: DCS -BIOS tuto pour affichage sur oled

#6

Message par Hombre »

Si la micro ne fonctionne pas pourquoi tu t'acharnes dessus?
Reste sur les autres.

Cdt
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#7

Message par bugz »

Oui.....j'ai voulais éliminer toutes possibilités. C'est bien la carte micro qui ne va pas. J'ai commandé une UNO pour faire mes tests.
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#8

Message par bugz »

bonjour!
Nouvelle Uno reçu ce matin, donc poursuite des essais.
j'ai réussi à faire apparaître la fréquence sur mon écran Oled. Je suis super content :banana: . Nickel. Maintenant je cherche comment afficher plusieurs données différentes à des coordonnées différentes sur l'écran car dans l'écran que je veux modéliser il y a 3 "données différentes". J'ai essayé avec 2 et elles ne s'affiche pas en même temps. C'est l'une puis l'autre et ainsi de suite. Voilà le code que je teste. Si quelqu'un peut me mettre sur une piste.

Code : Tout sélectionner

#define DCSBIOS_DEFAULT_SERIAL #include "DcsBios.h" #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include "DcsBios.h" #define OLED_RESET -1 Adafruit_SSD1306 display(OLED_RESET); /* paste code snippets from the reference documentation here */ #define SCREEN_WIDTH 128 // Largeur d'affichage OLED, en pixels #define SCREEN_HEIGHT 32 // Hauteur d'affichage OLED, en pixels /* paste code snippets from the reference documentation here */ void onUfcScratchpadString2DisplayChange(char* newValue) { /* your code here */ display.println(newValue); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.display(); display.clearDisplay(); } DcsBios::StringBuffer<2> ufcScratchpadString2DisplayBuffer(0x7450, onUfcScratchpadString2DisplayChange); void onUfcScratchpadNumberDisplayChange(char* newValue) { /* your code here */ display.println(newValue); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(80, 0); display.display(); display.clearDisplay(); } DcsBios::StringBuffer<8> ufcScratchpadNumberDisplayBuffer(0x7446, onUfcScratchpadNumberDisplayChange); void setup() { DcsBios::setup(); // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Clear the buffer display.clearDisplay(); display.display(); delay(1000); } void loop() { DcsBios::loop(); } [code]
Avatar de l’utilisateur

Vmf214
Nouvelle Recrue
Nouvelle Recrue
Messages : 87
Inscription : 12 décembre 2017

Re: DCS -BIOS tuto pour affichage sur oled

#9

Message par Vmf214 »

Bonjour,

sauf erreur de ma part ce code devrait marcher pour afficher les deux valeurs.

Code : Tout sélectionner

#define DCSBIOS_DEFAULT_SERIAL #include "DcsBios.h" #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include "DcsBios.h" #define OLED_RESET -1 Adafruit_SSD1306 display(OLED_RESET); /* paste code snippets from the reference documentation here */ #define SCREEN_WIDTH 128 // Largeur d'affichage OLED, en pixels #define SCREEN_HEIGHT 32 // Hauteur d'affichage OLED, en pixels /* paste code snippets from the reference documentation here */ char *ufc1; char *ufc2; void onUfcScratchpadString2DisplayChange(char* newValue) { /* your code here */ ufc1 = newValue; UfcScratchpadNumberDisplay(); } DcsBios::StringBuffer<2> ufcScratchpadString2DisplayBuffer(0x7450, onUfcScratchpadString2DisplayChange); void onUfcScratchpadNumberDisplayChange(char* newValue) { /* your code here */ ufc2 = newValue; UfcScratchpadNumberDisplay(); } DcsBios::StringBuffer<8> ufcScratchpadNumberDisplayBuffer(0x7446, onUfcScratchpadNumberDisplayChange); void UfcScratchpadNumberDisplay(){ display.println(ufc1); display.println(ufc2); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(80, 0); display.display(); display.clearDisplay(); } void setup() { DcsBios::setup(); // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Clear the buffer display.clearDisplay(); display.display(); delay(1000); } void loop() { DcsBios::loop(); } [code] Haut Réponse rapide
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#10

Message par bugz »

Je vais tester. Merci beaucoup !
Avatar de l’utilisateur

Vmf214
Nouvelle Recrue
Nouvelle Recrue
Messages : 87
Inscription : 12 décembre 2017

Re: DCS -BIOS tuto pour affichage sur oled

#11

Message par Vmf214 »

hum peut être qu'il vaut mieux changer ce bloc

char *ufc1;
char *ufc2;

en

char *ufc1="";
char *ufc2="";

Sinon il y a un risque de null pointer
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#12

Message par bugz »

Le caractère que tu utilises après " = " est bien le guillemet de la touche 3 du clavier? Et 2 fois?
Avatar de l’utilisateur

Vmf214
Nouvelle Recrue
Nouvelle Recrue
Messages : 87
Inscription : 12 décembre 2017

Re: DCS -BIOS tuto pour affichage sur oled

#13

Message par Vmf214 »

oui et oui
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#14

Message par bugz »

Bonjour à tous!
Code testé ce matin. Ca a marché avec le 1er code. Du coup je l'ai complété pour avoir les 3 données sur la mêm ligne. Voilà le code final pour cet écran pour ceux que ça peut aider:
Merci encore pour l'aide précieuse apportée.

Code : Tout sélectionner

#define DCSBIOS_DEFAULT_SERIAL #include "DcsBios.h" #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include "DcsBios.h" #define OLED_RESET -1 Adafruit_SSD1306 display(OLED_RESET); /* paste code snippets from the reference documentation here */ #define SCREEN_WIDTH 128 // Largeur d'affichage OLED, en pixels #define SCREEN_HEIGHT 32 // Hauteur d'affichage OLED, en pixels /* paste code snippets from the reference documentation here */ char *ufc1; char *ufc2; char *ufc3; void onUfcScratchpadString1DisplayChange(char* newValue) { /* your code here */ ufc1 = newValue; UfcScratchpadNumberDisplay(); } DcsBios::StringBuffer<2> ufcScratchpadString1DisplayBuffer(0x744e, onUfcScratchpadString1DisplayChange); void onUfcScratchpadString2DisplayChange(char* newValue) { /* your code here */ ufc2 = newValue; UfcScratchpadNumberDisplay(); } DcsBios::StringBuffer<2> ufcScratchpadString2DisplayBuffer(0x7450, onUfcScratchpadString2DisplayChange); void onUfcScratchpadNumberDisplayChange(char* newValue) { /* your code here */ ufc3 = newValue; UfcScratchpadNumberDisplay(); } DcsBios::StringBuffer<8> ufcScratchpadNumberDisplayBuffer(0x7446, onUfcScratchpadNumberDisplayChange); void UfcScratchpadNumberDisplay(){ display.setCursor(0, 0); display.println(ufc1); display.setCursor(20, 0); display.println(ufc2); display.setCursor(30, 0); display.println(ufc3); display.setTextSize(1); display.setTextColor(WHITE); display.display(); display.clearDisplay(); } void setup() { DcsBios::setup(); // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Clear the buffer display.clearDisplay(); display.display(); delay(1000); } void loop() { DcsBios::loop(); }
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#15

Message par bugz »

Motivé par ces premiers résultats, je poursuis dans l'amélioration du code. J'ai constaté que lors de la saisie d'une coordonnées le symbole " ° " pour les degrés est détecté par le reference control comme un "@" et transmis en tant que tel à l'écran Oled. Faut il modifier quelque chose dans DCS BIOS, ou est-ce un soucis de librairie?
Avatar de l’utilisateur

Vmf214
Nouvelle Recrue
Nouvelle Recrue
Messages : 87
Inscription : 12 décembre 2017

Re: DCS -BIOS tuto pour affichage sur oled

#16

Message par Vmf214 »

Tu peux faire un test en rajoutant un affichage dans la fonction UfcScratchpadNumberDisplay

Code : Tout sélectionner

char test*="12°01"; display.println(test);
si tu as un @ affiché alors essaye avec un unsigned char :

Code : Tout sélectionner

unsigned char test*="12°01"; display.println(test);
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#17

Message par bugz »

J'ai ce message d'erreur:

expected initializer before '*=' token
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#18

Message par bugz »

voici une photo pour illustrer le problème:
Image
Avatar de l’utilisateur

Vmf214
Nouvelle Recrue
Nouvelle Recrue
Messages : 87
Inscription : 12 décembre 2017

Re: DCS -BIOS tuto pour affichage sur oled

#19

Message par Vmf214 »

ah oui dans ce cas là c'est dcsbios, ou plutot celui qui a fait le module du 2000, qui a décidé de transmetre un @ pour le premier séparateur.


String mavar= String(ufc_avec_arobase);
mavar= mavar.replace("@", "°");
display.println(mavar);
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#20

Message par bugz »

je n'arrive pas à trouver le bon emplacement pour le code. Tout se place au même endroit où faut il le répartir?
Avatar de l’utilisateur

Vmf214
Nouvelle Recrue
Nouvelle Recrue
Messages : 87
Inscription : 12 décembre 2017

Re: DCS -BIOS tuto pour affichage sur oled

#21

Message par Vmf214 »

Si c'est ufc3 la variable avec @ :

Code : Tout sélectionner

DcsBios::StringBuffer<8> ufcScratchpadNumberDisplayBuffer(0x7446, onUfcScratchpadNumberDisplayChange); String mavar= String(ufc3); mavar= mavar.replace("@", "°"); void UfcScratchpadNumberDisplay(){ display.setCursor(0, 0); display.println(ufc1); display.setCursor(20, 0); display.println(ufc2); display.setCursor(30, 0); display.println(mavar); display.setTextSize(1); display.setTextColor(WHITE); display.display(); display.clearDisplay(); }
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#22

Message par bugz »

Ai je loupé quelque chose?
Image
Avatar de l’utilisateur

Vmf214
Nouvelle Recrue
Nouvelle Recrue
Messages : 87
Inscription : 12 décembre 2017

Re: DCS -BIOS tuto pour affichage sur oled

#23

Message par Vmf214 »

je me suis planté dans mes copier-coller

Le formatage se fait dans la fonction qui affiche en un toutes les valeurs.

Code : Tout sélectionner

void UfcScratchpadNumberDisplay(){ String mavar= String(ufc3); mavar= mavar.replace("@", "°"); display.setCursor(0, 0); display.println(ufc1); display.setCursor(20, 0); display.println(ufc2); display.setCursor(30, 0); display.println(mavar); display.setTextSize(1); display.setTextColor(WHITE); display.display(); display.clearDisplay(); }
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Avatar de l’utilisateur

Topic author
bugz
Nouvelle Recrue
Nouvelle Recrue
Messages : 139
Inscription : 20 août 2008

Re: DCS -BIOS tuto pour affichage sur oled

#24

Message par bugz »

pour cette ligne : mavar = mavar.replace("@", "°");

il me répond : no match for 'operator=' (operand types are 'String' and 'void')
Avatar de l’utilisateur

Mega01
Nouvelle Recrue
Nouvelle Recrue
Messages : 152
Inscription : 06 mars 2003

Re: DCS -BIOS tuto pour affichage sur oled

#25

Message par Mega01 »

Ce n’est pas l’espace de trop entre mavar et = ?
Répondre

Revenir à « Cockpit & mod perso »