wiggles5289 Posted February 9, 2021 Posted February 9, 2021 (edited) Contribute to the GitHub if you want to help develop an open source DED: https://github.com/wiggles5289/Orange-Viper-Simulations/blob/main/F16/DED.ino TLDR; Here's working code thanks to the help from @fusionand @JohnnyChicago //F-16 DED for DCS BIOS using 256x64 ER-OLED032-1G from BuyDisplay.com //Final code by JohnnyChicago,a whole lotta font cred to Fusion's wife, and Wiggles5289 on the DCS Forums //Updated for DCS 2.7 on 06SEP2022 #define DCSBIOS_IRQ_SERIAL #include "DcsBios.h" #include <Arduino.h> #include <U8g2lib.h> #include <U8glib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); char* line1; char* line2; char* line3; char* line4; char* line5; const u8g_fntpgm_uint8_t DEDfont16px[1148] U8G_FONT_SECTION("DEDfont16px") = "_\0\3\3\4\4\4\5\5\10\16\0\376\12\376\12\377\1\212\3\1\4_ \5\0\10\61!\14\224\32" "q$\207\212H,\222\0\42\10\66y\61DL\2#\22\227\31q\224$\222\213\222D$\221\134\224$" "\22\0$\20\326\371\260\204\62\212\210\252\225$\241\11E\0%\24\270\10q\206\22\231D\22\232Hu\31" "E\324$\302\11\0&\21\227\31qf\22\221D\66\223JL\22\221h\42'\6\62{\61\14(\15\264" "\372\260$\42\211H\67\221L\0)\15\264\372\60d\42\231H\27\221D\4*\20\310\10\61~\60\205h" "s\300\214\24:<\20+\12V\71\261\204\42\223P\4,\10C\373\60,\24\0-\6\26Y\61\14." "\6#\33\61\14/\16\246\11\61\325\204\62\241L(\23\12\1\60\16\226\32q(\42JS\245B\222P" "\0\61\11\225\31\361D\207\230>\62\14\226\31q(\42\222P\246\243\1\63\17\226\31q(\42\222P\64" "%\221$\24\0\64\20\227\31q\244*\42\211H\242$\71J%\0\65\15\226\31\61\16A\305\252P&" "!\1\66\15\226\31\261fj\25\21'\11\5\0\67\15\226\31\61\214\62\241L(\23\252\1\70\20\226\31" "q(\42REB\221\224H\22\12\0\71\15\226\31q(\42N\222\232\332\10\0:\10s\33\61\354 " "\3;\12\223\373\60\354 \13\5\0<\11\226\31\61e\272\352\0=\7\66I\61\314\6>\11\226\31\61" "\244\272\351\10\77\16\226\31q(\42\222LQ\16\23\212\0@\17\230\30q,B&\213\204\42!\331\1" "\7A\14\226\31\261d\24\21\323a\304$B\14\226\31\61*\42\246\213\210\351\2C\15\226\31q(\42" "FM$\11\5\0D\14\226\31\61H\22%\276HH\0E\14\226\31\61\16A\305\212P\321\0F\14" "\226\31\61\16A\305\212P#\0G\14\226\31q(\42F\225\22IRH\13\226\31\61D\234\16#N" "\2I\11\224\32\61(\42}!J\13\226\31\61\365H\42I(\0K\15\226\31\61D,ZH\22\235" "H\2L\11\226\31\61\204\372\321\0M\20\227\31\61d\264J%B\211P\42\64\66\1N\15\227\31\61" "d\264\222\205b\252\261\11O\13\226\31q(\42~\222P\0P\14\226\31\61*\42\246\213P#\0Q" "\14\266\371p(\42~\222\20\245\2R\14\226\31\61*\42\246\213&&\1S\14\226\31q(\42\252V" "\222\204\2T\11\226\31\61LB\375\4U\12\226\31\61D\374IB\1V\13\226\31\61D\374$\241\211" "\0W\21\227\31\61d\134\42\224\10%\242I\42\222H\0X\17\226\31\61D$\211$&\224E\224\230" "\4Y\14\226\31\61D\234$\64\241&\0Z\12\226\31\61\214j:\12\15[\11\304\352\60L\372'\2" "\134\27\230\30\61d\22ID%\42\71L\42*\21\221D&\221ID\0]\11\304\352\60H\372'\3" "^\11\66\231\261d\24\221\0_\7\30\350\60\16\1`\10\64\232\61F\62\1a\16\267\31\361\242\263\312" "\35\303\245\66\215\1b\14\226\31\61\204\302\212\210\247\13\0c\14v\31q(\42\242&\11\5\0d\12" "\226\31\61UN<I\12e\14v\31q(\42\322a(\245\0f\14\226\31\261(B\65\213P\33\0" "g\14\246\351pN<I\212\302\13\0h\13\226\31\61\204\302\212\210O\2i\13\246\31\261\204r\10Q" "O\6j\12\325\351\360\224i\372\315\2k\15\226\31\61\204J,\22\222D\211$l\11\226\31\61\210\372" "\311\0m\21w\31\61,\222\10%B\211P\42\224\10M\0n\11v\31\61*\42>\11o\11Cm" "qR$)\0p\14\246\351\60*\42\236.BE\0q\12\246\351pN<I\212\32r\13v\31\61" "D\24\233P#\0s\12v\31q\216R\252\360\2t\13\226\31q\204\62\213PW\2u\11v\31\61" "D|\222\24v\13v\31\61D<Ih\42\0w\21w\31\61d\224\10%B\211P\42\232$\22\0" "x\15v\31\61D$\11MF\21\221\4y\24\247\350pD\22\221D$\21ID\22\221\210*\24\321" "\0z\11v\31\61\214\62\35\15{\14\265\371\360D\62%E\65E\1|\7\302\353\60>\14}\15\265" "\372\60\204\62E%\65%\31\0~\12\70xqf\23\311l\2\0\0\0\4\377\377\0"; void onDedLine1Change(char* newValue) { line1 = newValue; } DcsBios::StringBuffer<29> dedLine1Buffer(0x450a, onDedLine1Change); void onDedLine2Change(char* newValue) { line2 = newValue; } DcsBios::StringBuffer<29> dedLine2Buffer(0x4528, onDedLine2Change); void onDedLine3Change(char* newValue) { line3 = newValue; } DcsBios::StringBuffer<29> dedLine3Buffer(0x4546, onDedLine3Change); void onDedLine4Change(char* newValue) { line4 = newValue; } DcsBios::StringBuffer<29> dedLine4Buffer(0x4564, onDedLine4Change); void onDedLine5Change(char* newValue) { line5 = newValue; } DcsBios::StringBuffer<29> dedLine5Buffer(0x4582, onDedLine5Change); void setup() { DcsBios::setup(); u8g2.begin(); u8g2.clearBuffer(); u8g2.setFont(DEDfont16px); } void loop() { u8g2.firstPage(); do { u8g2.drawStr(30, 12.8, line1); u8g2.drawStr(30, 25.6, line2); u8g2.drawStr(30, 38.4, line3); u8g2.drawStr(30, 51.2, line4); u8g2.drawStr(30, 64, line5); } while ( u8g2.nextPage() ); u8g2.updateDisplay(); DcsBios::loop(); } We still need someone to contribute a better working font that supports the inverted character colors using the U8G2 Library. We are so close to having a fully working DED! I have been struggling to get DCS BIOS and the u8g2 library to work. Any time I put a drawStr.() line in a void onDisplayChange or whatever it is, it doesn't draw anything but in a corner it looks like its showing the first line of the DED in one character spot with insane tearing from high FPS. Display works fine and is configured correctly when using the Hello World examples from the u8g2 library. A sample of my code is below: /* Tell DCS-BIOS to use a serial connection and use the default Arduino Serial library. This will work on the vast majority of Arduino-compatible boards, but you can get corrupted data if you have too many or too slow outputs (e.g. when you have multiple character displays), because the receive buffer can fill up if the sketch spends too much time updating them. If you can, use the IRQ Serial connection instead. */ #define DCSBIOS_DEFAULT_SERIAL #include "DcsBios.h" #include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1322_NHD_256X64_F_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Enable U8G2_16BIT in u8g2.h void onDedLine1Change(char* newValue) { u8g2.clearBuffer(); // clear the internal memory u8g2.setFont(u8g2_font_ncenB12_tr); // choose a suitable font u8g2.drawStr(2,12,newValue); // write something to the internal memory u8g2.sendBuffer(); // transfer internal memory to the display } DcsBios::StringBuffer<25> dedLine1Buffer(0x44fc, onDedLine1Change); void onDedLine2Change(char* newValue) { u8g2.clearBuffer(); // clear the internal memory u8g2.setFont(u8g2_font_ncenB12_tr); // choose a suitable font u8g2.drawStr(2,25,newValue); // write something to the internal memory u8g2.sendBuffer(); // transfer internal memory to the display } DcsBios::StringBuffer<25> dedLine2Buffer(0x4516, onDedLine2Change); void onDedLine3Change(char* newValue) { u8g2.clearBuffer(); // clear the internal memory u8g2.setFont(u8g2_font_ncenB12_tr); // choose a suitable font u8g2.drawStr(2,38,newValue); // write something to the internal memory u8g2.sendBuffer(); // transfer internal memory to the display } DcsBios::StringBuffer<25> dedLine3Buffer(0x4530, onDedLine3Change); void onDedLine4Change(char* newValue) { u8g2.clearBuffer(); // clear the internal memory u8g2.setFont(u8g2_font_ncenB12_tr); // choose a suitable font u8g2.drawStr(2,51,newValue); // write something to the internal memory u8g2.sendBuffer(); // transfer internal memory to the display } DcsBios::StringBuffer<25> dedLine4Buffer(0x454a, onDedLine4Change); void onDedLine5Change(char* newValue) { u8g2.clearBuffer(); // clear the internal memory u8g2.setFont(u8g2_font_ncenB12_tr); // choose a suitable font u8g2.drawStr(2,64,newValue); // write something to the internal memory u8g2.sendBuffer(); // transfer internal memory to the display } DcsBios::StringBuffer<25> dedLine5Buffer(0x4564, onDedLine5Change); void setup() { DcsBios::setup(); u8g2.begin(); } void loop() { DcsBios::loop(); } Edited September 8, 2022 by wiggles5289 1
Kurdishfighter Posted March 4, 2021 Posted March 4, 2021 (edited) hello I tried this code but It didn't work for me !I am using Arduino due. Anybody knows which pins should I use for due ? Thanks ! cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8) Edited August 20, 2021 by Kurdishfighter
JohnnyChicago Posted March 19, 2021 Posted March 19, 2021 (edited) #define DCSBIOS_DEFAULT_SERIAL #include "DcsBios.h" #include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 5, /* dc=*/ 3, /* reset=*/ 4); char* line1; char* line2; char* line3; char* line4; char* line5; void onDedLine1Change(char* newValue) { line1 = newValue; } DcsBios::StringBuffer<25> dedLine1Buffer(0x44fc, onDedLine1Change); void onDedLine2Change(char* newValue) { line2 = newValue; } DcsBios::StringBuffer<25> dedLine2Buffer(0x4516, onDedLine2Change); void onDedLine3Change(char* newValue) { line3 = newValue; } DcsBios::StringBuffer<25> dedLine3Buffer(0x4530, onDedLine3Change); void onDedLine4Change(char* newValue) { line4 = newValue; } DcsBios::StringBuffer<25> dedLine4Buffer(0x454a, onDedLine4Change); void onDedLine5Change(char* newValue) { line5 = (newValue); } DcsBios::StringBuffer<25> dedLine5Buffer(0x4564, onDedLine5Change); void setup() { DcsBios::setup(); u8g2.begin(); u8g2.clearBuffer(); u8g2.setFont(u8g2_font_t0_12_tf); } void loop() { u8g2.firstPage(); do { u8g2.drawStr(0, 10, line1); u8g2.drawStr(0, 20, line2); u8g2.drawStr(0, 30, line3); u8g2.drawStr(0, 40, line4); u8g2.drawStr(0, 50, line5); } while ( u8g2.nextPage() ); u8g2.updateDisplay(); DcsBios::loop(); } this sketch is slow and needs to be tweaked ... Edited March 19, 2021 by JohnnyChicago 1
wiggles5289 Posted April 15, 2021 Author Posted April 15, 2021 @JohnnyChicago It worked! I just modified that code to IRQ instead of Default serial and it worked smoothly. Just need to tweak the fonts and position of text to use the full display. //F-16 DED for DCS BIOS using 256x64 ER-OLED032-1G from BuyDisplay.com #define DCSBIOS_IRQ_SERIAL #include "DcsBios.h" #include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 5, /* dc=*/ 3, /* reset=*/ 4); char* line1; char* line2; char* line3; char* line4; char* line5; void onDedLine1Change(char* newValue) { line1 = newValue; } DcsBios::StringBuffer<25> dedLine1Buffer(0x44fc, onDedLine1Change); void onDedLine2Change(char* newValue) { line2 = newValue; } DcsBios::StringBuffer<25> dedLine2Buffer(0x4516, onDedLine2Change); void onDedLine3Change(char* newValue) { line3 = newValue; } DcsBios::StringBuffer<25> dedLine3Buffer(0x4530, onDedLine3Change); void onDedLine4Change(char* newValue) { line4 = newValue; } DcsBios::StringBuffer<25> dedLine4Buffer(0x454a, onDedLine4Change); void onDedLine5Change(char* newValue) { line5 = (newValue); } DcsBios::StringBuffer<25> dedLine5Buffer(0x4564, onDedLine5Change); void setup() { DcsBios::setup(); u8g2.begin(); u8g2.clearBuffer(); u8g2.setFont(u8g2_font_t0_12_tf); } void loop() { u8g2.firstPage(); do { u8g2.drawStr(0, 10, line1); u8g2.drawStr(0, 20, line2); u8g2.drawStr(0, 30, line3); u8g2.drawStr(0, 40, line4); u8g2.drawStr(0, 50, line5); } while ( u8g2.nextPage() ); u8g2.updateDisplay(); DcsBios::loop(); } 1
wiggles5289 Posted April 20, 2021 Author Posted April 20, 2021 Its more of a work in progress atm with Matchstick. I reached out to a few people on the DCS FP discord. I will update this thread as I figure stuff out. 1
JohnnyChicago Posted April 21, 2021 Posted April 21, 2021 (edited) Cool .. thanks I also read on Discord FP . Edited April 21, 2021 by JohnnyChicago
eaglewen Posted May 31, 2021 Posted May 31, 2021 (edited) Hi, I managed to get my DED working in a way as described above, tweaked a bit with the font and changed some minor things. It was working fine under DCS World 2.5 Beta. Then I updated my DCS to 2.7 and suddenly it isn't working anymore. The first thing I already noticed is the address change in DCS-BIOS, for instance first line was 0x44fc and now it seems to be 0x4500. However, if that was the only problem I would be out of the woods quickly. Even after changing this value nothing appears on my display...I reconnected the Arduino back to my old DCS system and it keeps working (with 0x44fc). I have the feeling DCS-BIOS isn't giving me the data back (the Webpage of DCS-Bios is reporting the values dough) or the data has another data-format which can't be used as written in the script. I don't have a clue to be honest. Any other persons having the same issue after updating? Thanks in advance Werner Edited May 31, 2021 by eaglewen
eaglewen Posted May 31, 2021 Posted May 31, 2021 Hi, I copied the code above and changed to my own font and hurray it works again....I needed to change to the new addresses though to make it work (check your DCS-BIOS for these new addresses). Just to let you know Werner
Chroustall Posted June 2, 2021 Posted June 2, 2021 Hey, do you have problem with the "a" instead of arrows? Im little bit strugling with font (bdf to u8g2 lib). Can anyone convert the font to u8g2? thanks
eaglewen Posted June 12, 2021 Posted June 12, 2021 Hi Chroustall, In attachment the font I use on my DED. The ° and the up/down arrows are fixed in this font. I'm using the DEDFont16px.c in my ino file. Seeya Werner DEDfont16px.c DEDFont16px.fon DEDFont16px.bdf
hy-fye1 Posted June 26, 2021 Posted June 26, 2021 Am 12.6.2021 um 20:32 schrieb eaglewen: Hi Chroustall, In attachment the font I use on my DED. The ° and the up/down arrows are fixed in this font. I'm using the DEDFont16px.c in my ino file. Seeya Werner DEDfont16px.c 3 kB · 10 Downloads DEDFont16px.fon 5 kB · 13 Downloads DEDFont16px.bdf 23 kB · 11 Downloads How do you change your code for using the DEDfont16px.c ?
Its_Mercury_NOR Posted June 27, 2021 Posted June 27, 2021 Im following this thread.. Can anyone link me all the hardware required for making the DED? You guys are doing one hell of a good job
f1pier Posted July 7, 2021 Posted July 7, 2021 (edited) who can help me to view the ded f16 on 2.4 inch ole ssd1309 Edited July 7, 2021 by f1pier
wiggles5289 Posted August 5, 2021 Author Posted August 5, 2021 On 6/27/2021 at 7:58 AM, Its_Maverick said: Im following this thread.. Can anyone link me all the hardware required for making the DED? You guys are doing one hell of a good job Check out Uri_Ba’s blog post on how to build the DED: https://pit.uriba.org/uriba/ded-box-real-gets/ For DCS BIOS you will need a 5V to 3V3 logic converter(hint: Adafruit) if you use the model screen I did. 1
Auntystatic Posted August 18, 2021 Posted August 18, 2021 On 4/15/2021 at 2:14 PM, wiggles5289 said: @JohnnyChicago It worked! I just modified that code to IRQ instead of Default serial and it worked smoothly. Just need to tweak the fonts and position of text to use the full display. //F-16 DED for DCS BIOS using 256x64 ER-OLED032-1G from BuyDisplay.com #define DCSBIOS_IRQ_SERIAL #include "DcsBios.h" #include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 5, /* dc=*/ 3, /* reset=*/ 4); char* line1; char* line2; char* line3; char* line4; char* line5; void onDedLine1Change(char* newValue) { line1 = newValue; } DcsBios::StringBuffer<25> dedLine1Buffer(0x44fc, onDedLine1Change); void onDedLine2Change(char* newValue) { line2 = newValue; } DcsBios::StringBuffer<25> dedLine2Buffer(0x4516, onDedLine2Change); void onDedLine3Change(char* newValue) { line3 = newValue; } DcsBios::StringBuffer<25> dedLine3Buffer(0x4530, onDedLine3Change); void onDedLine4Change(char* newValue) { line4 = newValue; } DcsBios::StringBuffer<25> dedLine4Buffer(0x454a, onDedLine4Change); void onDedLine5Change(char* newValue) { line5 = (newValue); } DcsBios::StringBuffer<25> dedLine5Buffer(0x4564, onDedLine5Change); void setup() { DcsBios::setup(); u8g2.begin(); u8g2.clearBuffer(); u8g2.setFont(u8g2_font_t0_12_tf); } void loop() { u8g2.firstPage(); do { u8g2.drawStr(0, 10, line1); u8g2.drawStr(0, 20, line2); u8g2.drawStr(0, 30, line3); u8g2.drawStr(0, 40, line4); u8g2.drawStr(0, 50, line5); } while ( u8g2.nextPage() ); u8g2.updateDisplay(); DcsBios::loop(); } I'm trying this on a mega2560 but just getting a blank screen, everything works with the test code from buydisplay web site, just wondering if anyone had any idea to why I get nothing on screen, dcs is running with f-16 sat hot start and dcsbios is reporting data coming in from the ded, I'm stumped
wiggles5289 Posted August 18, 2021 Author Posted August 18, 2021 9 hours ago, Auntystatic said: I'm trying this on a mega2560 but just getting a blank screen, everything works with the test code from buydisplay web site, just wondering if anyone had any idea to why I get nothing on screen, dcs is running with f-16 sat hot start and dcsbios is reporting data coming in from the ded, I'm stumped If its being silly, try changing lineX = "test Text 123" and see if that at least prints.
Auntystatic Posted August 19, 2021 Posted August 19, 2021 thank you for your help but that didn't work either, but I did spot in your code that the "newValue" in line 5 has brackets around it and none of the other lines do as seen below, so I added brackets to the other 4 lines and it is now working, thanks again void onDedLine4Change(char* newValue) { line4 = newValue; } DcsBios::StringBuffer<25> dedLine4Buffer(0x454a, onDedLine4Change); void onDedLine5Change(char* newValue) { line5 = (newValue);
Kurdishfighter Posted August 20, 2021 Posted August 20, 2021 20 hours ago, Auntystatic said: thank you for your help but that didn't work either, but I did spot in your code that the "newValue" in line 5 has brackets around it and none of the other lines do as seen below, so I added brackets to the other 4 lines and it is now working, thanks again void onDedLine4Change(char* newValue) { line4 = newValue; } DcsBios::StringBuffer<25> dedLine4Buffer(0x454a, onDedLine4Change); void onDedLine5Change(char* newValue) { line5 = (newValue); Hello I have Arduino due with SSD1322 screen and I just upload the code but It doesn't show anything ! Could you please help me about this ? How I am going to make it work ?
Auntystatic Posted August 20, 2021 Posted August 20, 2021 (edited) this is my working code, I've not used the due so you will have to find the mosi and sck pins from the due pinout chart, hope it helps you, all I need to do now is find an F-16 font that works //F-16 DED for DCS BIOS using 256x64 ER-OLED032-1G from BuyDisplay.com #define DCSBIOS_IRQ_SERIAL #include "DcsBios.h" #include <Arduino.h> #include <U8g2lib.h> #include <SPI.h> U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Enable U8G2_16BIT in u8g2.h //U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 5, /* dc=*/ 3, /* reset=*/ 4); char* line1; char* line2; char* line3; char* line4; char* line5; void onDedLine1Change(char* newValue) { line1 = (newValue); } DcsBios::StringBuffer<25> dedLine1Buffer(0x44fc, onDedLine1Change); void onDedLine2Change(char* newValue) { line2 = (newValue); } DcsBios::StringBuffer<25> dedLine2Buffer(0x4516, onDedLine2Change); void onDedLine3Change(char* newValue) { line3 = (newValue); } DcsBios::StringBuffer<25> dedLine3Buffer(0x4530, onDedLine3Change); void onDedLine4Change(char* newValue) { line4 = (newValue); } DcsBios::StringBuffer<25> dedLine4Buffer(0x454a, onDedLine4Change); void onDedLine5Change(char* newValue) { line5 = (newValue); } DcsBios::StringBuffer<25> dedLine5Buffer(0x4564, onDedLine5Change); void setup() { DcsBios::setup(); u8g2.begin(); u8g2.clearBuffer(); u8g2.setFont(u8g2_font_t0_12_tf); } void loop() { u8g2.firstPage(); do { u8g2.drawStr(0, 10, line1); u8g2.drawStr(0, 20, line2); u8g2.drawStr(0, 30, line3); u8g2.drawStr(0, 40, line4); u8g2.drawStr(0, 50, line5); } while ( u8g2.nextPage() ); u8g2.updateDisplay(); DcsBios::loop(); } Edited August 20, 2021 by Auntystatic 1 1
jparker36 Posted August 24, 2021 Posted August 24, 2021 On 8/20/2021 at 2:56 AM, Auntystatic said: this is my working code, I've not used the due so you will have to find the mosi and sck pins from the due pinout chart, hope it helps you, all I need to do now is find an F-16 font that works //F-16 DED for DCS BIOS using 256x64 ER-OLED032-1G from BuyDisplay.com #define DCSBIOS_IRQ_SERIAL #include "DcsBios.h" #include <Arduino.h> #include <U8g2lib.h> #include <SPI.h> U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Enable U8G2_16BIT in u8g2.h //U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 5, /* dc=*/ 3, /* reset=*/ 4); char* line1; char* line2; char* line3; char* line4; char* line5; void onDedLine1Change(char* newValue) { line1 = (newValue); } DcsBios::StringBuffer<25> dedLine1Buffer(0x44fc, onDedLine1Change); void onDedLine2Change(char* newValue) { line2 = (newValue); } DcsBios::StringBuffer<25> dedLine2Buffer(0x4516, onDedLine2Change); void onDedLine3Change(char* newValue) { line3 = (newValue); } DcsBios::StringBuffer<25> dedLine3Buffer(0x4530, onDedLine3Change); void onDedLine4Change(char* newValue) { line4 = (newValue); } DcsBios::StringBuffer<25> dedLine4Buffer(0x454a, onDedLine4Change); void onDedLine5Change(char* newValue) { line5 = (newValue); } DcsBios::StringBuffer<25> dedLine5Buffer(0x4564, onDedLine5Change); void setup() { DcsBios::setup(); u8g2.begin(); u8g2.clearBuffer(); u8g2.setFont(u8g2_font_t0_12_tf); } void loop() { u8g2.firstPage(); do { u8g2.drawStr(0, 10, line1); u8g2.drawStr(0, 20, line2); u8g2.drawStr(0, 30, line3); u8g2.drawStr(0, 40, line4); u8g2.drawStr(0, 50, line5); } while ( u8g2.nextPage() ); u8g2.updateDisplay(); DcsBios::loop(); } Thanks for sharing. Using an Uno and the .32" oled, what else did you need to physically wire it up. Shoudln't need the level converter mentioned earlier as the uno supplies 3.3v correct?
Auntystatic Posted August 25, 2021 Posted August 25, 2021 this link should be what you are looking for pinout diagram for uno to 3.2" ssd1322
jparker36 Posted August 25, 2021 Posted August 25, 2021 2 hours ago, Auntystatic said: this link should be what you are looking for pinout diagram for uno to 3.2" ssd1322 Exactly it. Thank you!
malarcky Posted November 17, 2021 Posted November 17, 2021 On 8/20/2021 at 9:56 AM, Auntystatic said: this is my working code, I've not used the due so you will have to find the mosi and sck pins from the due pinout chart, hope it helps you, all I need to do now is find an F-16 font that works //F-16 DED for DCS BIOS using 256x64 ER-OLED032-1G from BuyDisplay.com #define DCSBIOS_IRQ_SERIAL #include "DcsBios.h" #include <Arduino.h> #include <U8g2lib.h> #include <SPI.h> U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Enable U8G2_16BIT in u8g2.h //U8G2_SSD1322_NHD_256X64_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 5, /* dc=*/ 3, /* reset=*/ 4); char* line1; char* line2; char* line3; char* line4; char* line5; void onDedLine1Change(char* newValue) { line1 = (newValue); } DcsBios::StringBuffer<25> dedLine1Buffer(0x44fc, onDedLine1Change); void onDedLine2Change(char* newValue) { line2 = (newValue); } DcsBios::StringBuffer<25> dedLine2Buffer(0x4516, onDedLine2Change); void onDedLine3Change(char* newValue) { line3 = (newValue); } DcsBios::StringBuffer<25> dedLine3Buffer(0x4530, onDedLine3Change); void onDedLine4Change(char* newValue) { line4 = (newValue); } DcsBios::StringBuffer<25> dedLine4Buffer(0x454a, onDedLine4Change); void onDedLine5Change(char* newValue) { line5 = (newValue); } DcsBios::StringBuffer<25> dedLine5Buffer(0x4564, onDedLine5Change); void setup() { DcsBios::setup(); u8g2.begin(); u8g2.clearBuffer(); u8g2.setFont(u8g2_font_t0_12_tf); } void loop() { u8g2.firstPage(); do { u8g2.drawStr(0, 10, line1); u8g2.drawStr(0, 20, line2); u8g2.drawStr(0, 30, line3); u8g2.drawStr(0, 40, line4); u8g2.drawStr(0, 50, line5); } while ( u8g2.nextPage() ); u8g2.updateDisplay(); DcsBios::loop(); } Hi, I am using your code but I having some problems. I would appreciate help guys, I dont have the skill yet to program. I have the screen working and it seems dcsbios its sending information to my arduino UNO, but I only can see two numbers on the left. The hello world example works OK. The numbers change randomly but I cant identify what its my problem. Also, it is possible to use this font? https://fontstruct.com/fontstructions/show/1014500/falconded Thank you guys, hope someone can guide me in the right direction.
Recommended Posts