Jump to content

Recommended Posts

Posted (edited)

Sorry for the noob question, but I think searching the forums is what got me into trouble lol.

 

So I'm planning on building a "fancy" button box/UFC for the hornet. Prior experience is only very simple button boxes with Bodnar boards, picked up a leonardo and read up on switch registers and scared myself back into the bodnar board.

 

This time around its DCS-Bios and Arduino, I've got switches working but picked up a small I2C OLED for proof of concept before I dive deep. Initially used an Adafruit sketch to make sure it worked and it was wired correctly, that worked great. Then tried some DCS Bios code and here I am.

 

Initially tried this the I found for the A10 CMSP

/*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  "Wire.h"    
#include  "OLedI2C.h"  
OLedI2C LCD;

/* paste code snippets from the reference documentation here */
void onCmsp1Change(char* newValue) {
   LCD.sendString(newValue, 0, 0);
}
DcsBios::StringBuffer<19> cmsp1Buffer(0x1000, onCmsp1Change);

void onCmsp2Change(char* newValue) {
   LCD.sendString(newValue, 0, 1); 
}
DcsBios::StringBuffer<19> cmsp2Buffer(0x1014, onCmsp2Change);


void setup() {
 DcsBios::setup();
   Wire.begin();
 LCD.init();  
}

void loop() {
 DcsBios::loop();
}

 

Then it displayed odd font every time a countermeasure was released. Figured maybe it was screwy due to 2 lines on such a small screen.

 

So I tried this for the F18 Comm channel thinking one digit should work fine...

/*
 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  "Wire.h"    
#include  "OLedI2C.h"  
OLedI2C LCD;

/* paste code snippets from the reference documentation here */


void onUfcComm1DisplayChange(char* newValue) {
  LCD.sendString(newValue, 0, 0);
}
DcsBios::StringBuffer<2> ufcComm1DisplayBuffer(0x541c, onUfcComm1DisplayChange);

void setup() {
 DcsBios::setup();
   Wire.begin();
 LCD.init();  
}

void loop() {
 DcsBios::loop();
}

 

and the same weird font as I roll the knob. any ideas? Loving the Arduino and DCS Bios world so far but I seem to be pretty dense.

 

I feel using the Adafruit GFX and SSD1306 librarys is the better way to get this done, but theres not many examples with DCS-BIOS to help me along troubleshooting.

IMG_0996.thumb.jpg.0c97af87a5f022700e3ec771361d1007.jpg

IMG_0997.thumb.jpg.24fe8fbec08b3d34d422252d285736b4.jpg

Edited by sarge
New Library
Posted

Update!

 

After shamelessly reverse engineering other code on the internet, this sketch is working and displaying comm channel 1

#define DCSBIOS_DEFAULT_SERIAL

#include <DcsBios.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>


#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // 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);

void setup() {

 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
 display.clearDisplay();
 
 DcsBios::setup();
}
 // put your setup code here, to run once:

void loop() {
 DcsBios::loop();
 // put your main code here, to run repeatedly:

 DcsBios::Switch2Pos ufc0("UFC_0", 8);
}

void onUfcComm1DisplayChange(char* newValue) {
   /* your code here */
 display.clearDisplay();
 display.setTextSize(5);
 display.setTextColor(WHITE);
 display.setCursor(35,0);
 display.print(newValue);
 display.display();
}
DcsBios::StringBuffer<2> ufcComm1DisplayBuffer(0x541c, onUfcComm1DisplayChange);

 

 

Single alphanumeric looks fine, but 2 digits ends up odd. Any ideas? Thats an "m" and the other shoud be "12"

IMG_1002.thumb.jpg.914e1b33615188cb95b3f8aacba5ebf6.jpg

IMG_1003.thumb.jpg.08f8c1abfb56d6ffa2aca25e3d09a3eb.jpg

Posted

Have you tried altering the font size or printing 12 on font size 5 normally (so without DCS inputting, just a display.print('12')) to see if that changes things?

[sIGPIC][/sIGPIC]

 

Groundpounder extraordinaire

 

 

SPECS: i7-4790K, MSI Z97 Gaming 7, 16 GB RAM, MSI GTX 980ti, Thrustmaster WARTHOG HOTAS, Saitek Pro Combat Rudder pedals, TrackIR 5

 

Posted (edited)

Avoid to set textsize and color within the DCS code, put it under the setup() function.

Try to set first "display.setTextSize(1);" and than change size stepwise until you have the desired output.

Like this:

 void setup()
{
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  DcsBios::setup();
}

Than put as less as possible in your DCS code:

void onUfcComm1DisplayChange(char* newValue)
{
/* your code here */
 display.clearDisplay();
 display.setCursor(35,0);
 display.print(newValue);
 display.display();
}
DcsBios::StringBuffer<2> ufcComm1DisplayBuffer(0x541c, onUfcComm1DisplayChange);

Edited by Vinc_Vega

Regards, Vinc

real life: Royal Bavarian Airforce

online: VJS-GermanKnights.de

[sIGPIC][/sIGPIC]

  • 1 month later...
  • 4 months later...
Posted (edited)

I know this is pretty old but if someone runs into the same problem with the UFC Comm Display, it looks like the issue is with how DCSBios is outputting the 1x and 2x characters.

The 1 is being sent as with a "`" and the 2 is being sent as "~"

 

There's probably a very good reason for this and all I did to get around it is use Switch & Case to detect the characters and swap them out - that's in the cleanUpCom method of the code below, which is what I'm currently playing with to display both Com values on a single OLED.

(note I'm using the smaller 128x32 OLED display so if you're using a larger one you'll need to change the SCREEN_HEIGHT definition)

 

#define DCSBIOS_IRQ_SERIAL

#include <DcsBios.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.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);

void setup() {
 count = 0;
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
 display.clearDisplay();
 display.setTextSize(2);
 display.setTextColor(WHITE);
 display.setCursor(0,0);
 display.cp437(true);
 display.print("Start");
 display.display();

 DcsBios::setup();
}

void loop() {
 DcsBios::loop();
}

String comDisplay[2];

void updateComDisplay(int changed,char* newValue) {
 comDisplay[changed] = cleanUpCom(newValue);
 display.clearDisplay();
 display.setCursor(0,0);
 display.print(comDisplay[0]);
 display.setCursor(35,0);
 display.print(comDisplay[1]);
 display.display();
}  

char* cleanUpCom(char* newValue) {
 switch (newValue[0]) {
   case '`':
     newValue[0]='1';
     break;
   case '~':
     newValue[0]='2';
     break;
 }
 return newValue;  
}

//Comm 1
void onUfcComm1DisplayChange(char* newValue) {
 updateComDisplay(0, newValue);
}
DcsBios::StringBuffer<2> ufcComm1DisplayBuffer(0x7424, onUfcComm1DisplayChange);

//Comm 2
void onUfcComm2DisplayChange(char* newValue) {
 updateComDisplay(1, newValue);
}
DcsBios::StringBuffer<2> ufcComm2DisplayBuffer(0x7426, onUfcComm2DisplayChange);

Edited by Matchstick
  • 2 weeks later...
Posted

this also happens in the scratchpad displays. I solved it by casting the char to a string.

   /* your code here */
   String sNewValue(newValue);
   sNewValue.replace('~','2');
   sNewValue.replace('`','1');
   lcd.setCursor(0, 0);
   lcd.print(sNewValue);

  • 4 months later...
Posted (edited)

So I knew that I would be coming back to this post at some point! Having got the ADI and HSI working using Helios, the gauges ready plus a lot of the switch gear, the two items on my to do list are the MFDC's (not today...) and the OLED displays for the A10C altimeter and fuel gauge digital readouts

 

The OLED display is a 0.87'' one and I have it up and running using the example for Arduinos found here, substituting the A4 and A5 pins on the nano for the Uno SCL and SDA pins respectively. Even though it doesn't appear to be defined in the sketch the example works fine which I'm not sure I understand.

 

So using that as the basis, this is what I have come up with, but get an error that says it cannot be loaded

 

#define DCSBIOS_IRQ_SERIAL

#include "DcsBios.h"
#include  "Wire.h" 
#include "er_oled.h"
/*
 == Hardware connection for 4 PIN module==
   OLED   =>    Arduino
 *1. GND    ->    GND
 *2. VCC    ->    3.3V
 *3. SCL    ->    SCL
 *4. SDA    ->    SDA
*/

uint8_t oled_buf[WIDTH * HEIGHT / 8];

void setup() {
 Serial.begin(9600);
 Serial.print("OLED Example\n");
 Wire.begin();
 
 er_oled_begin();
 er_oled_clear(oled_buf);
 


}void onAlt10000ftCntChange(unsigned int newValue) {
        er_oled_string(0, 0, newValue, 16, 1, oled_buf);

DcsBios::IntegerBuffer alt10000ftCntBuffer(0x1080, 0xffff, 0, onAlt10000ftCntChange);

}void onAlt1000ftCntChange(unsigned int newValue) {
  er_oled_string(8, 0, newValue, 16, 1, oled_buf);

DcsBios::IntegerBuffer alt1000ftCntBuffer(0x1082, 0xffff, 0, onAlt1000ftCntChange);

  er_oled_display(oled_buf);  


}

void loop() {
 // put your main code here, to run repeatedly:

}

 

Not being well versed enough to be able to identify where the issue lies, I was hoping someone with a bit more savvy can spot where the sticking point is. As the three OLED devices are essentially the same once I have one working the other two should be easy to do

 

Thanks for any assistance

 

Cheers

 

Les

Edited by lesthegrngo
Posted

Thanks, I need to look at that. Will do so when I am a bit calmer, I've had enough for today!

 

Still, bit by bit I'm getting there, sometimes you have to take a step back from it to realise how far you've got, and today is one of those days!

 

Thanks again for all your help

 

Cheers

Posted (edited)

Hi Lesthegrngo

 

I to have been going through trying to get Oleds working on my UFC button box project for the F18C. It's been frustrating learning DCS BIOS and Arduino from scratch. Fun wierdly. Keep plugging away and you'll get there.

 

I decided to use the u8glib library over Adafruit. To me it seems it's got better features and lots of fonts to choose from. Although I did use the Adafuit for testing my multiplexer out.

 

 

I finally finished getting my box working over the last few days. Thought i'd post a few pics.

 

 

view?usp=sharing

 

 

view?usp=sharing

 

 

view?usp=sharing

 

 

Still messing around with the fonts for the scratchpad. Looks to me like DCS used a custom font as whenever I typed in GPS data the degree symbol came up as the @ symbol. Think i've sorted it now ...

1618902024_f18UFC1.thumb.jpg.a09521d04ac8374804530fbe05aa8a45.jpg

481747346_f18UFC2.thumb.jpg.f31b2d8e7bf14459b8a06682ab3c9846.jpg

1996908931_f18UFC3.thumb.jpg.9bb7e81d418fe0ed5209eddaf734a54a.jpg

Edited by dracosb
trying to get my posted picture visable
Posted

Thanks, though the pics didn't show yet - use 'edit, advanced' and look for the paperclip

 

I'd be interested in any sketches you have to see, I am great with the mechanical side, not so hot with the electronics (as my multitude of posts will attest to)

 

Cheers

 

Les

Posted

Thanks for the advice Lesthegrngo, my first time posting on here so I messed up a bit lol, although i've been a member for years :music_whistling:

 

 

My space is pretty limited so I can't make anything bigger than what the pics show.. I'm a complete novice at Arduino and Code but i'll help if I can.

Posted

That looks great, and those OLED displays are exactly what I'm trying to do - don't suppose you can share the sketch can you? Doesn't matter if it's over USB or RS485

 

Cheers

 

Les

Posted

Hi Les

 

 

Here's the UFC sketch I made. Not all my own work as I copied some bits from online examples etc to help me figure it out. I've commented as much as I can. I hope it helps.

 

 

 

Like I said earlier i'm a complete novice at this so there may well be better more efficient ways of doing the code, but I got it to work. So i'm really pleased with it.

UFC_Final.zip

  • 1 year later...
Posted
On 12/31/2019 at 2:45 AM, dracosb said:

Like I said earlier i'm a complete novice at this so there may well be better more efficient ways of doing the code, but I got it to work. So i'm really pleased with it.

Hi,
I saw your Arduino code here and am trying to get my OLED's from the F/A-18 UFC to work with it.
Actually I don't have much idea about Ardunio.

 

With the help of your sketch I got the scratchpad working.
I deleted everything except the lines for the scratchpad and ran the loops only 1 time.

Das funktioniert soweit:

https://www.facebook.com/1557214885/videos/10224354526881584/

 

What does not work is the control of the options displays.
If I take your code directly, this is what happens when I make an input on the UFC.
All displays are shown one after the other in the OLED display and that about 3 times in a row.

 

What should the code look like if I want to use one Arduino Nano per Options Display?

Can you help me with this? I would be super grateful for it.

Greetings
Ivor

 

Posted

Hi Rapti ..

 

You can use a single Nano for ALL the 6 main UFC screens, thats scratch pad and the 5 option displays. You will need a Multiplexer board which allows up to 8 screens from a single I2C connection. Thats the method I used for my UFC project. The code I posted above uses the multiplexer method. Far cheaper than a Nano for each screen AND frees up those USB ports.. have a look at the linked page. It explains the multiplexer very well.

 

https://diyfactory007.blogspot.com/2018/11/tca9548a-i2c-multiplexer-module-with.html

 

You can get the multiplexer for as little as £3.99 on Amazon, although it might be more expensive if you want next day delivery. Hope this helps ..

 

Glenn

 

  • Like 1
  • 6 months later...
  • 2 months later...
Posted (edited)

Hi, I am using some of the above code to output my f18 radar altimeter min height to an oled.  As the guage on the hornet scales (ie not a 1 to1)  I need to map the values.

I need some help with the maping,

0 to 34407 should show 0 to 400

34408 to 52559 should show 401 to 1000

above 52560 should show 1001 to 5000

This is my attempt at the mapping code

if (newValue < 34407) {
  minHeight = map(newValue, 0, 34407, 0 , 400);
}

if (newValue > 34408 && < 52259) {
  minHeight = map(newValue, 34408, 52259, 401 , 1000);
}

else minHeight = map(newValue,  52260, 65539, 1001, 5000);

but it no work....

Obviously I am not a coder and are just trying to reverse engineer all the examples I see.  So the above is just an attempt that works if I remove the second "i"f and adjust the mapping values.

Any help would be appreciated.

 

This the full code for reference

#define DCSBIOS_IRQ_SERIAL

#include <DcsBios.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.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);
unsigned int minHeight = 0; //Set Height
void setup() {

 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
 display.clearDisplay();
 
 DcsBios::setup();
}

void loop() {
 DcsBios::loop();

}
void onRadaltMinHeightPtrChange(unsigned int newValue) {

if (newValue < 34407) {
  minHeight = map(newValue, 0, 34407, 0 , 400);
}

if (newValue > 34408 && < 52259) {
  minHeight = map(newValue, 34408, 52259, 401 , 1000);
}

else minHeight = map(newValue,  52260,65539, 1001, 5000);

 display.clearDisplay();
 display.setTextSize(2);
display.setTextColor(WHITE);
 display.setCursor(20,0);
 display.print(minHeight);
 display.display();

}
DcsBios::IntegerBuffer radaltMinHeightPtrBuffer(0x7518, 0xffff, 0, onRadaltMinHeightPtrChange);

 

 

Edited by Sting57

Win11 64bit, AMD Ryzen 58003DX, GeForce 3070 8GB, 2TB SSD, 64GB DDR4 RAM at 3200MHz _ full 1:1 FA-18C Cockpit https://www.youtube.com/@TheHornetProject

  • 1 month later...
Posted (edited)

Well just for future Reference and incase someone else needs this, i have this working.  Full Code of an OLED Radar Alt in the Hornet


#define DCSBIOS_IRQ_SERIAL

#include <DcsBios.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>

/* Uncomment the initialize the I2C address , uncomment only one, If you get a totally blank screen try the other*/
#define i2c_Address 0x3c //initialize with the I2C addr 0x3C Typically eBay OLED's

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1   //   QT-PY / XIAO
Adafruit_SH1106G display = Adafruit_SH1106G(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);


unsigned int minHeightPointer = 0; //Set Height
unsigned int radarAlt = 0; //Radar Altitude
unsigned int offFlag = 0;

void setup() {

  display.begin(0x3C, true); // Address 0x3C default 
  display.clearDisplay();
 DcsBios::setup();
}

void loop() {
 DcsBios::loop();
}

void onRadaltOffFlagChange(unsigned int newValue) {
   offFlag=map(newValue, 0, 64355, 0 , 1);
}
DcsBios::IntegerBuffer radaltOffFlagBuffer(0x750c, 0xffff, 0, onRadaltOffFlagChange);



//Min Height Pointer
void onRadaltMinHeightPtrChange(unsigned int newValue) {

 if (newValue <=2034) {
  minHeightPointer = map(newValue, 0, 2034, 0, 1);
}

else if ((newValue >2034) && (newValue <=34407)) {
  minHeightPointer = map(newValue, 2035 , 34407, 0, 400);
}

else if ((newValue >34407) && (newValue <52559)) {
 minHeightPointer = map(newValue, 34408, 52559, 401, 1000);
}

else {
  minHeightPointer = map(newValue,52560, 64355, 1001, 5000);
}

  display.clearDisplay();
  display.clearDisplay();
    display.setTextSize(2);
 display.setTextColor(SH110X_WHITE);
 display.setCursor(10,5);
 display.print("RADAR ALT");
 display.setCursor(5,25);
 display.print("RAlt:");
 display.setCursor(5,50);
 display.print("Min:");
 
 display.setTextSize(1);
 display.setCursor(120,50);
 display.print(offFlag);
 
  display.setTextSize(2);
 display.setTextColor(SH110X_WHITE,SH110X_BLACK); // Draw white text on Black Background
 display.setCursor(70,25);
 display.print(radarAlt);
 display.setCursor(70,50);
 display.print(minHeightPointer);
 display.display();
 
}
DcsBios::IntegerBuffer radaltMinHeightPtrBuffer(0x7508, 0xffff, 0, onRadaltMinHeightPtrChange);

// Radar Altitude
void onRadaltAltPtrChange(unsigned int newValue) {

 if (newValue <=2034) {
  radarAlt = map(newValue, 0, 2034, 0, 1);
}

else if ((newValue >2034) && (newValue <=34407)) {
  radarAlt = map(newValue, 2035 , 34407, 0, 400);
}

else if ((newValue >34407) && (newValue <52559)) {
 radarAlt = map(newValue, 34408, 52559, 401, 1000);
}

else {
  radarAlt = map(newValue,52560, 64355, 1001, 5000);
}


  display.clearDisplay();
  display.clearDisplay();
    display.setTextSize(2);
 display.setTextColor(SH110X_WHITE);
 display.setCursor(10,5);
 display.print("RADAR ALT");
 display.setCursor(5,25);
 display.print("RAlt:");
 display.setCursor(5,50);
 display.print("Min:");
 
  display.setTextSize(1);
 display.setCursor(120,50);
 display.print(offFlag);
 
  display.setTextSize(2);
 display.setTextColor(SH110X_WHITE,SH110X_BLACK); // Draw white text on Black Background
 display.setCursor(70,25);
 display.print(radarAlt);
 display.setCursor(70,50);
 display.print(minHeightPointer);
 display.display();
}
DcsBios::IntegerBuffer radaltAltPtrBuffer(0x750a, 0xffff, 0, onRadaltAltPtrChange);

 

 

I was wondering if some one could help me with the OFF flag though.   What I am wanting is for the field to be blank (or a . would be fine)  then when the OFF flag is on it displays the text "OFF"

As it is in an int,  I can't display text (string value)

unsigned int offFlag = 0;

void onRadaltOffFlagChange(unsigned int newValue) {
   offFlag=map(newValue, 0, 64355, 0 , 1);
}
DcsBios::IntegerBuffer radaltOffFlagBuffer(0x750c, 0xffff, 0, onRadaltOffFlagChange);

 display.setTextSize(1);
 display.setCursor(120,50);
 display.print(offFlag);

Any ideas on how to read an int value to display a text value?

Here is a quick vid of the display working.  Notice the little 0 at the bottom right hand corner changes to a 1 when the value equals 64355

 

https://youtu.be/J5Ts5pgSdwA

 

 

 

Edited by Sting57
  • Like 1

Win11 64bit, AMD Ryzen 58003DX, GeForce 3070 8GB, 2TB SSD, 64GB DDR4 RAM at 3200MHz _ full 1:1 FA-18C Cockpit https://www.youtube.com/@TheHornetProject

Posted

Using Dracosb UFC OLED code, I added in the two comm channels to his multiplexer scheme, and have all displays running off one Uno using IC2.

View recent photos - Copy.png

Top display is Comm 2, then scratchpad, then the 5 option screens and the last one is Comm 1 - all hooked up via the multiplexer.

Going to make a circuit board to get rid of as much spaghetti as I can when I move it to the UFC.

Here is the code - if you are using dracosb's code for the switch matrix, you would have to cut and paste into this one - as I removed it since I am using a BBI-64 for everything else in the UFC.

UFC_Comm_Final.zip

  • 2 years later...
Posted

Using the above code from Dracosb and Rookfett, I've got it working using the Multiplexer board which was a game changer just using a single Arduino to run the whole thing!

I'm really struggling with getting the font to change though,  I have my font but just cannot get it to update to the screens...

 

Has anyone had any luck with this using the above code examples?

Posted
2 hours ago, Rolfez said:

I'm really struggling with getting the font to change though,  I have my font but just cannot get it to update to the screens...

You might need to temporarily replace the font file in the Adafruit GFX library files, compile the code, then change it back.
IIRC, it's the glcdfont.c file in the "Documents\Arduino\libraries\Adafruit_GFX_Library" folder.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...