DCS -BIOS tuto pour affichage sur oled
DCS -BIOS tuto pour affichage sur oled
#1Bonjour,
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.
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.
Re: DCS -BIOS tuto pour affichage sur oled
#2Bonjour
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?
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?
Re: DCS -BIOS tuto pour affichage sur oled
#3je 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.
Re: DCS -BIOS tuto pour affichage sur oled
#4avec 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....
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....
Re: DCS -BIOS tuto pour affichage sur oled
#5Mê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...
Re: DCS -BIOS tuto pour affichage sur oled
#6Si la micro ne fonctionne pas pourquoi tu t'acharnes dessus?
Reste sur les autres.
Cdt
Reste sur les autres.
Cdt
Re: DCS -BIOS tuto pour affichage sur oled
#7Oui.....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.
Re: DCS -BIOS tuto pour affichage sur oled
#8bonjour!
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 . 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.
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 . 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]
Re: DCS -BIOS tuto pour affichage sur oled
#9Bonjour,
sauf erreur de ma part ce code devrait marcher pour afficher les deux valeurs.
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/
Site web http://wwii.lfdm.free.fr/
Re: DCS -BIOS tuto pour affichage sur oled
#11hum 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
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/
Site web http://wwii.lfdm.free.fr/
Re: DCS -BIOS tuto pour affichage sur oled
#12Le caractère que tu utilises après " = " est bien le guillemet de la touche 3 du clavier? Et 2 fois?
Re: DCS -BIOS tuto pour affichage sur oled
#13oui et oui
Serveur DCS : LFDM WWII_Baie_des_Veys
Site web http://wwii.lfdm.free.fr/
Site web http://wwii.lfdm.free.fr/
Re: DCS -BIOS tuto pour affichage sur oled
#14Bonjour à 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 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();
}
Re: DCS -BIOS tuto pour affichage sur oled
#15Motivé 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?
Re: DCS -BIOS tuto pour affichage sur oled
#16Tu peux faire un test en rajoutant un affichage dans la fonction UfcScratchpadNumberDisplay
si tu as un @ affiché alors essaye avec un unsigned char :
Code : Tout sélectionner
char test*="12°01";
display.println(test);
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/
Site web http://wwii.lfdm.free.fr/
Re: DCS -BIOS tuto pour affichage sur oled
#17J'ai ce message d'erreur:
expected initializer before '*=' token
expected initializer before '*=' token
Re: DCS -BIOS tuto pour affichage sur oled
#19ah 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);
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/
Site web http://wwii.lfdm.free.fr/
Re: DCS -BIOS tuto pour affichage sur oled
#20je n'arrive pas à trouver le bon emplacement pour le code. Tout se place au même endroit où faut il le répartir?
Re: DCS -BIOS tuto pour affichage sur oled
#21Si 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/
Site web http://wwii.lfdm.free.fr/
Re: DCS -BIOS tuto pour affichage sur oled
#23je me suis planté dans mes copier-coller
Le formatage se fait dans la fonction qui affiche en un toutes les valeurs.
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/
Site web http://wwii.lfdm.free.fr/
Re: DCS -BIOS tuto pour affichage sur oled
#24pour cette ligne : mavar = mavar.replace("@", "°");
il me répond : no match for 'operator=' (operand types are 'String' and 'void')
il me répond : no match for 'operator=' (operand types are 'String' and 'void')