Jump to content

fusion

Members
  • Posts

    21
  • Joined

  • Last visited

Everything posted by fusion

  1. Of course!!! Glad I can assist in the code along with middlefart!
  2. I'm guessing this is a request to update Martin's RWR and EHSI? Try using DCS-BIOS to see if that helps. Always good to have open source stuff and non proprietary. Very helpful to all of us on here. Good idea though.
  3. I used to make FFI, DED and PFL displays using deduino. Since F-16 has come out for DCS. I've trashed BMS. It's nice playing an old game but, what is the point in playing BMS since DCS F-16 is becoming more advanced than BMS? Simply said, it is easier interfacing with DCS than BMS. I threw away the code.
  4. Can you send me the link to the display you are running so I can have an idea what we are working with? Also the pinout from the display to arduino you have.
  5. Well I guess if we bug Eagle Dynamics to help with this, they may be able to do something about it....we can be a flea on their ankles.
  6. We just need to figure out the inverted text.
  7. Seems that the Newhaven Displays and the display's you all are using are a little different. The code I posted had no issues with missing text. There was no reason to change the code for new haven displays but I can see it is needed for other than new haven displays. I have resorted to buying from American companies so I can get parts faster.
  8. Nice setup. Where did you get the ICP panel?
  9. Okay everyone thanks to @Middlefart for his main code, my wife for her expertise, helping me with this code for everyone looking for the F-16 Total Fuel gauge. All you need to do is add your code for your motors for the FWD/AFT pointers and your backlighting for your gauge. Easy and done! Hope this helps everyone!! This does work great on my seeeduino XIAO controller (DEFAULT_SERIAL only). Mega, nano, etc will work with IRQ_SERIAL. /* F-16 Total Fuel Gauge Thanks to: Middlefart (Original code), Fusion and Fusion's Wife (software engineer) Code is for the 128x32 oled i2c display. All you have to do is add your motor pins and guage backlight pins if desired. Hope this helps others! DCS-BIOS has made things far easier for DCS than software made to drive simulator components in FalconBMS. Glad to be apart of the DCS world. Matt "Fusion" G. */ //#define DCSBIOS_DEFAULT_SERIAL #define DCSBIOS_DEFAULT_SERIAL #include "DcsBios.h" #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include "characters.h" #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 32 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); int AB; float Value1; float Value2; float Value3; float Total; unsigned long time = 0; unsigned int i = 0; //Comment for barometric pressure #define ALTIMETER int updateInterval = 100; //the number of milliseconds between updates struct scrollDigit { int digit; //The digit that is displayed int y; // The vertical position of the digit }; struct disp { Adafruit_SSD1306 display; int width; int numberOfDigits; scrollDigit digits[5]; }; //disp oled = {Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET), 24, 5, {{0,0},{0,0},{0,0},{0,0},{0,0}}}; disp oled = {Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET), 16, 5, {{0,0},{0,0},{0,0},{0,0},{0,0}}}; void setup() { if(!oled.display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32 for(;;); // Don't proceed, loop forever } DcsBios::setup(); } void UpdateDisplay() { oled.display.clearDisplay(); for (int i = 0; i < oled.numberOfDigits; i++) { printScrollingDigit(oled.digits[i].digit, oled.width, oled.digits[i].y, i + 1, &oled); } //Clear the area below the the numbers if we are using the small font if (oled.width == 16) { oled.display.fillRect(0, 30, 127, 7, BLACK); } oled.display.display(); } int YPos() { return ((oled.width + 9) * -1); } void printScrollingDigit(int digit, int width, int y, int pos, disp *oled) { int x = (width * pos) - width + pos + 30; y +=5; switch (digit) { case -1: oled->display.drawBitmap(x, y, c16_0, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_1, 16, 24, 1); break; case 1: oled->display.drawBitmap(x, y, c16_1, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_2, 16, 24, 1); break; case 2: oled->display.drawBitmap(x, y, c16_2, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_3, 16, 24, 1); break; case 3: oled->display.drawBitmap(x, y, c16_3, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_4, 16, 24, 1); break; case 4: oled->display.drawBitmap(x, y, c16_4, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_5, 16, 24, 1); break; case 5: oled->display.drawBitmap(x, y, c16_5, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_6, 16, 24, 1); break; case 6: oled->display.drawBitmap(x, y, c16_6, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_7, 16, 24, 1); break; case 7: oled->display.drawBitmap(x, y, c16_7, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_8, 16, 24, 1); break; case 8: oled->display.drawBitmap(x, y, c16_8, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_9, 16, 24, 1); break; case 9: oled->display.drawBitmap(x, y, c16_9, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_0, 16, 24, 1); break; default: if (pos < 3) { oled->display.drawBitmap(x, y, c16_0, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_1, 16, 24, 1); } else { oled->display.drawBitmap(x, y, c16_0, 16, 24, 1); oled->display.drawBitmap(x, y+25, c16_0, 16, 24, 1); } break; } } void onFueltotalizer10kChange(unsigned int newValue) { unsigned int mappedValue = newValue / 6553; unsigned int y = map(newValue, mappedValue * 6553, mappedValue * 6553 + 6553, 0, YPos()); if (mappedValue == 0) { mappedValue = -1; } #ifdef TEST Serial.println(mappedValue); #endif oled.digits[0].digit = mappedValue; oled.digits[0].y = y; } void onFueltotalizer1kChange(unsigned int newValue) { unsigned int mappedValue = newValue / 6553; unsigned int y = map(newValue, mappedValue * 6553, mappedValue * 6553 + 6553, 0, YPos()); oled.digits[1].digit = mappedValue; oled.digits[1].y = y; } void onFueltotalizer100Change(unsigned int newValue) { unsigned int mappedValue = newValue / 6553; unsigned int y = map(newValue, mappedValue * 6553, mappedValue * 6553 + 6553, 0, YPos()); oled.digits[2].digit = mappedValue; oled.digits[2].y = y; oled.digits[3].digit = 0; oled.digits[3].y = y; oled.digits[4].digit = 0; oled.digits[4].y = y; } DcsBios::IntegerBuffer fueltotalizer10kBuffer(0x44e4, 0xffff, 0, onFueltotalizer10kChange); DcsBios::IntegerBuffer fueltotalizer1kBuffer(0x44e6, 0xffff, 0, onFueltotalizer1kChange); DcsBios::IntegerBuffer fueltotalizer100Buffer(0x44e8, 0xffff, 0, onFueltotalizer100Change); void loop() { DcsBios::loop(); time = millis(); if (time % updateInterval == 0) { UpdateDisplay(); } }
  10. Funny thing is I found it...lol. I will post the F-16 Fuel Total Gauge for the display in another thread. Thanks!
  11. Can you modify this just for the oled display so I can test it and tailor it for f-16 fuel total gauge? where is the characters.h file?
  12. After doing a lot of researching and my wife's (software engineer) and whoever provided the dedf16 font....they get the credit too!
  13. Can you provide me with the make and part number/model number of your display and also what your pinout from the display to your arduino is?
  14. Same issue here. Apparently there is an update to the DCS-BIOS fork for an update to show the MARK page as well. One of the guys on discord is working through getting the DED perfected. It looks like he has all the symbols in the right place and full screen. So unfortunately we have to be a little more patient. https://github.com/DCSFlightpanels/dcs-bios
  15. Hi wiggles, Any luck on the font and sizes?
  16. Is there any possibility you can help with the F-16 RPM gauge? I've tried everything. Using the X27.168 stepper motor. Direct connect to arduino doesn't seem to have issues. It's just the issue of trying to find out what values is being provided so we can make adjustments from there.
  17. Congrats!!!! I'm sure it has been fun...lol.
  18. Hey everyone! Hope all is well with your new years. I am in a bit of an issue. I am trying to drive 6, 14 segment displays for the 6 digit frequency on the UHF panel and then 2 digits for the pre set channels. Can anyone help with this? I have added links to the 14 segment displays. Just need a starting point. I know how to wire up a single display but need code to wire up 6 and 2 displays to work with the frequency and channel. Part from mouser https://www.mouser.com/ProductDetail/604-PSC39-21GWA datasheet: https://www.mouser.com/datasheet/2/216/PSC39-21GWA-57047.pdf Thanks in advance and much appreciated! FUSION
  19. Thanks for your response @uri_ba! Good to hear from you after all these years. Wife had a son 2 years ago and now another is due in July. Been really busy and haven't messed with pit in 3 years. I did enable 16 bit however I just noticed that I am using the u8g library/font instead of a u8g2 library and font. I don't know how to create/convert fonts. I also noticed that all pages except the MARK page display. When you hit the MARK button on the ICP, the display goes blank. I even tried the original position of the DED lines to 0, 10; 0, 20; 0,30; 0.40; 0,50. still doesn't work. I guess it is a bug or something...lol.
  20. So my wife and I were working on the code. Used the font from above and placed it directly in the ino file since no one has told us how to install or use the font files. Also if you adjust the x,y in the u8g2.drawstr portion in the void loop () then you can center it. I also got the lines to use the full height of the display as well. Hope this helps a bit. By the way, the font does work a little. The issue is the symbol ° is spaced. Next issue with the font is that there is no highlight (or inverted text) of the characters in the List page for example.......anyway enough chatter, here is the code to suffice for now. Wish we could get @uri_ba to help with the font. He did a wonderful job on the deduino. //DED ON SEEEDUINO XIAO WITH ACTUAL NEWHAVEN DISPLAY 3.12" 256X64 #define DCSBIOS_DEFAULT_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=*/ 6, /* dc=*/ 7 /*TIE HIGH RESET, NOT NEEDED IN SEPARATE PIN*/); 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<25> dedLine1Buffer(0x4500, onDedLine1Change); void onDedLine2Change(char* newValue) { line2 = newValue; } DcsBios::StringBuffer<25> dedLine2Buffer(0x451a, onDedLine2Change); void onDedLine3Change(char* newValue) { line3 = newValue; } DcsBios::StringBuffer<25> dedLine3Buffer(0x4534, onDedLine3Change); void onDedLine4Change(char* newValue) { line4 = newValue; } DcsBios::StringBuffer<25> dedLine4Buffer(0x454e, onDedLine4Change); void onDedLine5Change(char* newValue) { line5 = newValue; } DcsBios::StringBuffer<25> dedLine5Buffer(0x4568, 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();
×
×
  • Create New...