The OLED display we use is well supported and works for all Feathers, all you need is a little library support and you will be drawing in no time!
Install Arduino Libraries
Using the OLED FeatherWing with Arduino sketches requires that two libraries be installed: Adafruit_SSD1306, which handles the low-level communication with the hardware, and Adafruit_GFX, which builds atop this to add graphics functions like lines, circles and text.
Open up the library manager:
Search for the Adafruit SSD1306 library and install it
Search for the Adafruit GFX library and install it
If using an earlier version of the Arduino IDE (prior to 1.8.10), also locate and install Adafruit_BusIO (newer versions will install this dependency automatically).
We also have a great tutorial on Arduino library installation here:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> // OLED FeatherWing buttons map to different pins depending on board. // The I2C (Wire) bus may also be different. #if defined(ESP8266) #define BUTTON_A 0 #define BUTTON_B 16 #define BUTTON_C 2 #define WIRE Wire #elif defined(ARDUINO_ADAFRUIT_FEATHER_ESP32C6) #define BUTTON_A 7 #define BUTTON_B 6 #define BUTTON_C 5 #define WIRE Wire #elif defined(ESP32) #define BUTTON_A 15 #define BUTTON_B 32 #define BUTTON_C 14 #define WIRE Wire #elif defined(ARDUINO_STM32_FEATHER) #define BUTTON_A PA15 #define BUTTON_B PC7 #define BUTTON_C PC5 #define WIRE Wire #elif defined(TEENSYDUINO) #define BUTTON_A 4 #define BUTTON_B 3 #define BUTTON_C 8 #define WIRE Wire #elif defined(ARDUINO_FEATHER52832) #define BUTTON_A 31 #define BUTTON_B 30 #define BUTTON_C 27 #define WIRE Wire #elif defined(ARDUINO_ADAFRUIT_FEATHER_RP2040) #define BUTTON_A 9 #define BUTTON_B 8 #define BUTTON_C 7 #define WIRE Wire #else // 32u4, M0, M4, nrf52840 and 328p #define BUTTON_A 9 #define BUTTON_B 6 #define BUTTON_C 5 #define WIRE Wire #endif Adafruit_SSD1306 display = Adafruit_SSD1306(128, 32, &WIRE); void setup() { Serial.begin(9600); Serial.println("OLED FeatherWing test"); // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Address 0x3C for 128x32 Serial.println("OLED begun"); // Show image buffer on the display hardware. // Since the buffer is intialized with an Adafruit splashscreen // internally, this will display the splashscreen. display.display(); delay(1000); // Clear the buffer. display.clearDisplay(); display.display(); Serial.println("IO test"); pinMode(BUTTON_A, INPUT_PULLUP); pinMode(BUTTON_B, INPUT_PULLUP); pinMode(BUTTON_C, INPUT_PULLUP); // text display tests display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0,0); display.print("Connecting to SSID\n'adafruit':"); display.print("connected!"); display.println("IP: 10.0.1.23"); display.println("Sending val #0"); display.setCursor(0,0); display.display(); // actually display all of the above } void loop() { if(!digitalRead(BUTTON_A)) display.print("A"); if(!digitalRead(BUTTON_B)) display.print("B"); if(!digitalRead(BUTTON_C)) display.print("C"); delay(10); yield(); display.display(); }
You should see the OLED display a splash screen then spit out some text (it’s a make-believe WiFi connection status screen…this doesn’t actually do anything, just showing how typical project might look). If you press the A B or C buttons it will also print those out.
Do more!
You can use any of the Adafruit GFX library commands to draw onto your OLED, that means that you get all sorts of shapes, fonts, lines, etc available. Check out GFX for all the underlying graphics support functions and how they work
Remember you need to call display() after drawing to refresh the screen!
Text editor powered by tinymce.