Comments (5)
I was attempting to tackle this and it got ugly really fast.
- The I2C interfaces typically take a "data" and "command" prefix
- The SPI interface (apparently) uses the
dcPin
to differentiate - The constructors got out of hand very quickly trying to preserve the existing structure
These are my thoughts, but since it's not my project and not my API, I will leave it to your discretion:
Recommendations:
- Move the
data
andcommand
methods to theSsdOledCommunicationChannel
objects- the SPI implementation would add the
dcPin
andresetPin
devices - the I2C implementation would add the
command
anddata
prefixes
- the SPI implementation would add the
- Simplify the constructors, e.g.
SsdOled(SsdOledCommunicationChannel channel, int width, int height, int type)
- Put all of the "initialization sequences" into arrays and send at once, instead of the current one-at-a-time setup
protected SsdOled(...) { this.device = device; // init sequence this.device.command(getInitializationSequence()); } protected abstract byte[] getInitializationSequence();
SSD1306
might get a bit tricky because there are two variants: 64 and 32 height- there's also a lot of overlap with an
SSD1337
which is 128 x 128 (the command set looks to be almost identical, but still working on that)
- there's also a lot of overlap with an
from diozero.
Additional note: since I don't have any of the Colour 😀 OLED, I won't be able to test any changes against what's already there.
from diozero.
Yes, a tricky one. I recall someone contributed the barebones of the I2C code. I typically use SPI for OLED coms hence cannot personally confirm whether it works or not via I2C. The ones I have could be both SPI and I2C, let me check. Also, it could be related to the fact that it is 128x32 rather than the 128x64 one that I test with.
from diozero.
Oh, it definitely is - I'm referring to the CircuitPython drivers and some of the init/offsets are just slightly different.
If you can at least check that I didn't break anything, I think what I'm doing will work.
from diozero.
BTW, I was the one that had started the I2C channel.
from diozero.
Related Issues (20)
- Using pigpio without root HOT 1
- closing serial port causes close eventloop and shutdown HOT 3
- Enhancement request/offer: SN3218 HOT 1
- Enhancement Request: active braking for PwmMotor HOT 1
- PCA9685 has troubles with certain servo angles HOT 5
- BUG: Updates to board info causing errors/messages HOT 5
- SsdOled "display" methods are confusing
- Add board info support for Raspberry Pi 5 HOT 3
- MockFactory throws warning exceptions when run on non-supported systems (non-critical)
- Emhancement: Make I2C devices "shareable" HOT 2
- Can't close and re-open MFRC522 HOT 3
- Support IRQ triggering for more efficient MFRC22 tag reading HOT 1
- There is a bug in PCA9685 implementation HOT 1
- ServoTrim assumes 180 degree rotation HOT 2
- PCA9685 should have a constructor that takes an I2CDeviceInterface
- Rockchip rk3308 gpio interrupt support? HOT 14
- Broken links on diozero.com HOT 1
- Enhancement: Abstract I2CBuilder and SPIBuilder
- How to add new device (Toradex Colibri) to allow controlling WS2811/WS2812 LED strips? HOT 1
- Current libws281xj.so library not compatible with Pi CM4 (Compute Module 4) hardware revision v1.1 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from diozero.