Giter Site home page Giter Site logo

sparkfun / sparkfun_qwiic_oled_arduino_library Goto Github PK

View Code? Open in Web Editor NEW
6.0 7.0 7.0 1.78 MB

Arduino Library for SparkFun's OLED Qwiic (I²C) boards

Home Page: https://docs.sparkfun.com/SparkFun_Qwiic_OLED_Arduino_Library/introduction/

License: Other

C++ 58.65% C 38.62% HTML 2.73%
qwiic graphics oled arduino sparkfun-tutorial

sparkfun_qwiic_oled_arduino_library's Introduction

SparkFun Qwiic OLED Arduino Library

SparkFun Qwiic OLED Arduino Library

follow on Twitter

SparkFun Micro OLED Breakout (Qwiic)
[LCD-14532]
SparkFun Qwiic OLED Display (0.91 in, 128x32)
[LCD-24606]
smôl OLED Display (0.91 in, 128x32)
[SPX-18996]
SparkFun Transparent Graphical OLED Breakout (Qwiic)
[LCD-15173]
SparkFun Qwiic OLED - (1.3in., 128x64)
[LCD-23453]

The SparkFun Qwiic OLED Arduino Library is a single graphics module that supports all SparkFun OLED boards based on the SSD1306 from Solomon Systech. Prior to this library, three different libraries were used to support our four different OLED boards.

The SparkFun Qwiic OLED Library delivers a common implementation for all our Qwiic OLED products, delivering a unified, fast, and efficient solution that implements a familiar and easy to understand user experience.

Key Features

  • Implements common graphics capabilities: pixel, line, rectangle, filled rectangle, circle, filled circle, bitmap, text and raster operators (i.e. XOR).
  • Smart data transfer to the device – only sends dirty regions of the graphics buffer to the OLED device, not the entire buffer.
  • High performance – 2x faster than our previous OLED library, often much higher.
  • Efficient memory usage. No dynamic memory utilized. Static resources are loaded once, and only on explicit declaration.
  • Implements a familiar interface, making migration from older libraries straight forward

Documentation

A full library use overview, API reference guide and key example walk through are available on this repositories github page - sparkfun.github.io/SparkFun_Qwiic_OLED_Arduino_Library

How much faster?

The SparkFun Qwiic OLED Library is between 40% and 450% faster. The original Micro OLED library had a max output of ~75 frames per second. This library automatically only updates what changed we can reach more than 300 frames per second. What does that look like?

OLED.Lib.Truck.New.vs.Old.mp4

Above, the OLED on the right is running the original Micro OLED library at 75fps. On the left the display is more than 348 frames per second. In real life it's quite smooth; the camera is not able to keep up. This is at 400kHz I2C.

OLED.Lib.Clock.New.vs.Old.mp4

Above, the OLED on the right is running the original Micro OLED library at 75fps. On the left the display is more than 107 frames per second because the clock takes up a lot of the display, but not all of it. This is at 400kHz I2C.

Supported Products

  • LCD-22495 - SparkFun Micro OLED Breakout (Qwiic)
  • LCD-14532 - SparkFun Micro OLED Breakout (Qwiic)
  • LCD-13003 - SparkFun Micro OLED Breakout
  • LCD-24606 - SparkFun Qwiic OLED Display (0.91 in, 128x32)
  • LCD-17153 - SparkFun Qwiic OLED Display (0.91 in, 128x32)
  • SPX-18996 - smôl OLED Display (0.91 in, 128x32)
  • LCD-15173 - SparkFun Transparent Graphical OLED Breakout (Qwiic)
  • LCD-23453 - SparkFun Qwiic OLED (1.3 in., 128x64)

Supported Microcontrollers - Arduino Environment

sparkfun_qwiic_oled_arduino_library's People

Contributors

bboyho avatar edspark avatar gigapod avatar leeleahy2 avatar mikelowe983 avatar njh avatar nseidle avatar paulzc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

sparkfun_qwiic_oled_arduino_library's Issues

Communications fault in library with multiple I2C devices on the same bus

Hi,

I'm noticing an issue in this library (but I don't know where) when I have both the ATECC508A and SparkFun Qwiic OLED Display (128x32) hooked up on the same I2C bus. I have these connected in series using the Qwiic connectors.

Artemis RedBoard -> ATECC508A -> OLED Display (128x32).

Seems most read operations on the ATECC508A are okay. I can also issue the SHA command (opcode 0x47, p1=0x00, p2=0x0000) which comes back fine (status code 0x00). But when I try to finalize the SHA over string abc (opcode 0x47, p1=0x02, p2=0x0003), I get an error (fault code 0x03, "Command properly received but length, opcode, or param illegal. Command must be modified before resending."). I notice also if I swap the two devices, I get different fault codes.

Leaving the OLED display connected, but not calling .begin(), I'm seeing the SHA End command on the ATECC508A device works perfectly fine.

Thinking it might have been the pull-ups, I severed the traces on the OLED, and even tried lowering the bus speed, but to no avail. Ultimately, I swapped out the library for https://github.com/adafruit/Adafruit_SSD1306 and I'm now finding the issue to be resolved under that library instead.

Anyways, leaving this issue here as the latest test showing a working scenario seems to indicate there's an issue in the library itself at this point. But I'm already pretty deep into ATECC508A, I can't get into debugging this one at this time.

Thanks.

Bitmaps of certain heights don't draw correctly at non-zero y values

When using bitmaps of certain sizes, the oled.bitmap function will not draw the bitmap correctly.

See the below example bitmap:

/*
    SQ_Symbol [8, 9]

                     
             12345678
            .--------.
        0x01|********|
        0x02|*      *|
        0x04|*      *|
        0x08|*      *|
        0x10|*      *|
        0x20|*      *|
        0x40|*      *|
        0x80|*      *|
        0x01|********|   
            '--------'
*/

const int SQ_Symbol_Height = 9;
const int SQ_Symbol_Width = 8;
const uint8_t SQ_Symbol[] = {0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01};

Calling oled.bitmap with a 0 for the y0 argument draws the bitmap as expected:

    oled.bitmap(0, 0, (uint8_t *)SQ_Symbol, SQ_Symbol_Width, SQ_Symbol_Height);

output:

********
*      *   
*      *
*      *
*      *
*      *
*      *
*      *
********

However, if I pass a non-zero value for y0, the bitmap does not draw correctly:

    oled.bitmap(0, 1, (uint8_t *)SQ_Symbol, SQ_Symbol_Width, SQ_Symbol_Height);

output:

********
*      *   
*      *
*      *
*      *
*      *
*      *
*      *

The bottom row is not drawn. This also occurs for bitmaps that have heights of 10, 11, 12, etc.

beginTransmission(): Unfinished Repeated Start transaction! Expected requestFrom, not beginTransmission! Clearing...

I am not able to display correct information on the SFE Micro OLED (SSD1306) using an ESP32 WROOM with PlatformIO and the Arduino FW.
Only garbled pixels are shown and the ESP32 logs the following warning:

Capture

[  6624][E][Wire.cpp:416] beginTransmission(): Unfinished Repeated Start transaction! Expected requestFrom, not beginTransmission! Clearing...

The issue might not come from your side of the library, it seems to be a conflict in Wire. However, I would like to confirm that this happens on your test devices too. I can confirm that it is not a hardware issue, as I observed the same behavior on different Micro OLEDs and on different ESP32s. I even have an ESP32 with firmware that was flashed about 3 years ago that runs the display just fine. I tried reverting to the versions of your library and Wire at that time but without success. Any example fails with the same issue.

Can you confirm this?

Update name of library in library.properties?

Hi folks,

I noticed the name of this library in library.properties is currently SparkFun Qwiic OLED Graphics Library. Should it instead be SparkFun_Qwiic_OLED_Arduino_Library? By the looks of it, you've done away with the older library. My Arduino IDE was getting a bit confused as with multiple libraries.

Cheers,
Adam

SSD1306 sleep mode

Hi folks,

The SSD1306 used in the SparkFun Qwiic OLED Display has an available sleep mode (see page 14 of datasheet below) that can be accessed by issuing an 0xAE command. I've been reviewing the library and from what I can tell, the "dev-like" commands are currently not publically accessible. Any chance we can enable sleep functionality, or at least the ability to issue custom commands?

Datasheet:
https://datasheet.lcsc.com/szlcsc/1809291515_Shenzhen-Allvision-Tech-QG-2832TLBFG02_C91220.pdf

Cheers,
Adam

Top right bitmap causes column 0 corruption on 1.3" (128x64)

Another weird one...

If I add text top left (0,0) and then add a bitmap top right (getWidth - bitmap.width, 0), the bitmap causes column 0 to be corrupted, but only on the 1.3" (128x64) OLED. On the Micro (64x48), it's fine.

image

image

#include <SparkFun_Qwiic_OLED.h> //http://librarymanager/All#SparkFun_Qwiic_OLED

//QwiicMicroOLED myOLED;
Qwiic1in3OLED myOLED;

#include "res/qw_bmp_truck.h"

void setup()
{
    Wire.begin();

    myOLED.begin();

    myOLED.text(0, 0, "0"); // "0" top left
    
    myOLED.bitmap(myOLED.getWidth() - QW_BMP_TRUCK.width, 0, QW_BMP_TRUCK); // Icon top right

    myOLED.display();
}

void loop()
{
}

Font not initialized when accessing an instance via a pointer?

This is a fun one...!

#include <SparkFun_Qwiic_OLED.h> //http://librarymanager/All#SparkFun_Qwiic_OLED

QwiicMicroOLED *myOLED;

void setup()
{
    delay(1000);
    
    Serial.begin(115200);
    Serial.println("Running OLED example");

    Wire.begin();

    myOLED = new QwiicMicroOLED;

    if (myOLED->begin() == false)
    {
        Serial.println("Device begin failed. Freezing...");
        while (true)
            ;
    }
    Serial.println("Begin success");
}

void loop()
{
}

causes ESP32 to explode at this line.

My TemplateFu is not strong enough to understand why... But I think it has something to do with the QwFont or QwGrBufferDevice m_currentFont not being initialized properly? I think ->height is possibly returning nullptr?

Minor corrections

Hi folks,

Just a couple of odds and ends.

  1. There's a URL typo in README.md on line 22 that points to the incorrect product (should be https://www.sparkfun.com/products/14532)

  2. I've noticed the myOLED.text() keyword isn't properly highlighting itself in the Arduino IDE. I checked keywords.txt and it looks fine. Not a big issue, but strange!

Cheers,
Adam

Missing declaration errors (for `TwoWire` class) when compiling example sketches

Hi! I've an Arduino MKR 1010 board. Working on a simple temperature sensor & display project.

I've ordered "SparkFun Qwiic OLED Display (0.91 in, 128x32) LCD-17153" display from SparkFun. https://www.sparkfun.com/products/17153 Installed "SparkFun Qwiiic OLED Graphics Library" (library from this repo I think).

Opened the first example "Example-01_Hello". When I click on compile I'm getting the error messages below. Basically it says:

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:64:15: error: 'TwoWire' has not been declared... bool init(TwoWire& wirePort);

Can you please tell what I am doing wrong? Thanks!

Arduino: 1.8.19 (Windows 10), Board: "Arduino MKR WiFi 1010"

In file included from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.2.0/CMSIS/Device/ATMEL/samd21/include/samd21.h:69:0,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.2.0/CMSIS/Device/ATMEL/samd.h:105,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\cores\arduino/WVariant.h:22,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\variants\mkrwifi1010/variant.h:24,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\libraries\Wire/Wire.h:24,

                 from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:56,

                 from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:48:

C:\Users\vug\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.2.0/CMSIS/Device/ATMEL/samd21/include/samd21g18a.h:226:0: warning: "LITTLE_ENDIAN" redefined

 #define LITTLE_ENDIAN          1

 

In file included from c:\users\vug\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\types.h:67:0,

                 from c:\users\vug\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\stdio.h:61,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\cores\arduino/api/Print.h:22,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\cores\arduino/api/Stream.h:25,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\cores\arduino/api/HardwareI2C.h:22,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\libraries\Wire/Wire.h:23,

                 from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:56,

                 from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:48:

c:\users\vug\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\machine\endian.h:17:0: note: this is the location of the previous definition

 #define LITTLE_ENDIAN _LITTLE_ENDIAN

 

In file included from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.2.0/CMSIS/Device/ATMEL/samd21/include/samd21.h:69:0,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.2.0/CMSIS/Device/ATMEL/samd.h:105,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\cores\arduino/WVariant.h:22,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\variants\mkrwifi1010/variant.h:24,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\libraries\Wire/Wire.h:24,

                 from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:56,

                 from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_grssd1306.h:53,

                 from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_grssd1306.cpp:51:

C:\Users\vug\AppData\Local\Arduino15\packages\arduino\tools\CMSIS-Atmel\1.2.0/CMSIS/Device/ATMEL/samd21/include/samd21g18a.h:226:0: warning: "LITTLE_ENDIAN" redefined

 #define LITTLE_ENDIAN          1

 

In file included from c:\users\vug\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\sys\types.h:67:0,

                 from c:\users\vug\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\stdio.h:61,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\cores\arduino/api/Print.h:22,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\cores\arduino/api/Stream.h:25,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\cores\arduino/api/HardwareI2C.h:22,

                 from C:\Users\vug\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.8.13\libraries\Wire/Wire.h:23,

                 from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:56,

                 from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_grssd1306.h:53,

                 from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_grssd1306.cpp:51:

c:\users\vug\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\machine\endian.h:17:0: note: this is the location of the previous definition

 #define LITTLE_ENDIAN _LITTLE_ENDIAN

 

In file included from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_grssd1306.h:53:0,

                 from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_grssd1306.cpp:51:

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:64:15: error: 'TwoWire' has not been declared

     bool init(TwoWire& wirePort);

               ^~~~~~~

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:75:5: error: 'TwoWire' does not name a type; did you mean 'TwoWire_h'?

     TwoWire* m_i2cPort;

     ^~~~~~~

     TwoWire_h

In file included from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:48:0:

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:64:15: error: 'TwoWire' has not been declared

     bool init(TwoWire& wirePort);

               ^~~~~~~

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:75:5: error: 'TwoWire' does not name a type; did you mean 'TwoWire_h'?

     TwoWire* m_i2cPort;

     ^~~~~~~

     TwoWire_h

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp: In constructor 'QwI2C::QwI2C()':

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:76:5: error: 'm_i2cPort' was not declared in this scope

     m_i2cPort = nullptr;

     ^~~~~~~~~

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp: At global scope:

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:84:6: error: prototype for 'bool QwI2C::init(arduino::TwoWire&)' does not match any in class 'QwI2C'

 bool QwI2C::init(TwoWire& wirePort)

      ^~~~~

In file included from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:48:0:

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:64:10: error: candidates are: bool QwI2C::init(int&)

     bool init(TwoWire& wirePort);

          ^~~~

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:63:10: error:                 bool QwI2C::init()

     bool init(void);

          ^~~~

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp: In member function 'bool QwI2C::init()':

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:98:10: error: 'm_i2cPort' was not declared in this scope

     if (!m_i2cPort)

          ^~~~~~~~~

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:99:25: error: no matching function for call to 'QwI2C::init(arduino::TwoWire&)'

         return init(Wire); // no wire, send in Wire

                         ^

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:95:6: note: candidate: bool QwI2C::init()

 bool QwI2C::init(void)

      ^~~~~

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:95:6: note:   candidate expects 0 arguments, 1 provided

In file included from C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:48:0:

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:64:10: note: candidate: bool QwI2C::init(int&)

     bool init(TwoWire& wirePort);

          ^~~~

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.h:64:10: note:   no known conversion for argument 1 from 'arduino::TwoWire' to 'int&'

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp: In member function 'bool QwI2C::ping(uint8_t)':

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:110:5: error: 'm_i2cPort' was not declared in this scope

     m_i2cPort->beginTransmission(i2c_address);

     ^~~~~~~~~

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp: In member function 'bool QwI2C::writeRegisterByte(uint8_t, uint8_t, uint8_t)':

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:121:5: error: 'm_i2cPort' was not declared in this scope

     m_i2cPort->beginTransmission(i2c_address);

     ^~~~~~~~~

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp: In member function 'int QwI2C::writeRegisterRegion(uint8_t, uint8_t, uint8_t*, uint16_t)':

C:\Users\vug\Documents\Arduino\libraries\SparkFun_Qwiic_OLED_Graphics_Library\src\qwiic_i2c.cpp:139:9: error: 'm_i2cPort' was not declared in this scope

         m_i2cPort->beginTransmission(i2c_address);

         ^~~~~~~~~

exit status 1

Error compiling for board Arduino MKR WiFi 1010.



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

OLED power cycling issue

Hi folks,

Looking forward to using this new library.

Currently kicking the tires with the MicroMod Data Logging Carrier Board, Artemis Processor and the Qwiic OLED. I'm running into difficulties getting the OLED working after powering down (via AP2112 LDO) and entering deep sleep on the Artemis.

The OLED successfully reinitializes when powered back up, but doesn't respond to any subsquent commands to display new data. I've used generous delays in case it needed additional time. Any thoughts on power cycling best practices?

Cheers,
Adam

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.