Page 1 sur 2
DCS -BIOS tuto pour affichage sur oled
Publié : mar. mars 03, 2020 3:58 pm
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.
Re: DCS -BIOS tuto pour affichage sur oled
Publié : mar. mars 03, 2020 11:21 pm
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?
Re: DCS -BIOS tuto pour affichage sur oled
Publié : ven. mars 06, 2020 5:11 pm
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.
Re: DCS -BIOS tuto pour affichage sur oled
Publié : ven. mars 06, 2020 6:08 pm
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....
Re: DCS -BIOS tuto pour affichage sur oled
Publié : sam. mars 07, 2020 9:02 am
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...
Re: DCS -BIOS tuto pour affichage sur oled
Publié : sam. mars 07, 2020 11:22 am
par Hombre
Si la micro ne fonctionne pas pourquoi tu t'acharnes dessus?
Reste sur les autres.
Cdt
Re: DCS -BIOS tuto pour affichage sur oled
Publié : sam. mars 07, 2020 3:13 pm
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.
Re: DCS -BIOS tuto pour affichage sur oled
Publié : lun. mars 09, 2020 5:10 pm
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
. 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
Publié : lun. mars 09, 2020 9:24 pm
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
Re: DCS -BIOS tuto pour affichage sur oled
Publié : mar. mars 10, 2020 7:28 am
par bugz
Je vais tester. Merci beaucoup !
Re: DCS -BIOS tuto pour affichage sur oled
Publié : mar. mars 10, 2020 8:58 am
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
Re: DCS -BIOS tuto pour affichage sur oled
Publié : mar. mars 10, 2020 12:23 pm
par bugz
Le 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
Publié : mar. mars 10, 2020 2:55 pm
par Vmf214
oui et oui
Re: DCS -BIOS tuto pour affichage sur oled
Publié : mer. mars 11, 2020 9:31 am
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();
}
Re: DCS -BIOS tuto pour affichage sur oled
Publié : jeu. mars 12, 2020 12:53 pm
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?
Re: DCS -BIOS tuto pour affichage sur oled
Publié : jeu. mars 12, 2020 4:56 pm
par Vmf214
Tu peux faire un test en rajoutant un affichage dans la fonction UfcScratchpadNumberDisplay
si tu as un @ affiché alors essaye avec un unsigned char :
Re: DCS -BIOS tuto pour affichage sur oled
Publié : jeu. mars 12, 2020 8:42 pm
par bugz
J'ai ce message d'erreur:
expected initializer before '*=' token
Re: DCS -BIOS tuto pour affichage sur oled
Publié : jeu. mars 12, 2020 9:04 pm
par bugz
voici une photo pour illustrer le problème:
Re: DCS -BIOS tuto pour affichage sur oled
Publié : ven. mars 13, 2020 8:11 am
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);
Re: DCS -BIOS tuto pour affichage sur oled
Publié : ven. mars 13, 2020 4:07 pm
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?
Re: DCS -BIOS tuto pour affichage sur oled
Publié : ven. mars 13, 2020 4:12 pm
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();
}
Re: DCS -BIOS tuto pour affichage sur oled
Publié : ven. mars 13, 2020 4:57 pm
par bugz
Ai je loupé quelque chose?
Re: DCS -BIOS tuto pour affichage sur oled
Publié : ven. mars 13, 2020 5:07 pm
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();
}
Re: DCS -BIOS tuto pour affichage sur oled
Publié : ven. mars 13, 2020 6:02 pm
par bugz
pour cette ligne : mavar = mavar.replace("@", "°");
il me répond : no match for 'operator=' (operand types are 'String' and 'void')
Re: DCS -BIOS tuto pour affichage sur oled
Publié : ven. mars 13, 2020 8:16 pm
par Mega01
Ce n’est pas l’espace de trop entre mavar et = ?