normen / rpi-oled

NodeJS library and command line tools for controlling SSD1306 compatible I2C OLED screens on the Raspbery Pi
MIT License
19 stars 4 forks source link

Support for SH1106? #1

Open stheine opened 6 years ago

stheine commented 6 years ago

Hi Normen,

I'm looking for a node.js way to control an oled running on SH1106. (https://www.amazon.de/gp/product/B078J78R45). This display has 128x64 pixels.

I tried the rpi-oled module. the general communication to the oled is working, but the display is only partially ok: rpi-oled writeString -t "Hello World" is bringing up the text, but probably at the wrong location. the rpi-oled drawCircle -x 20 -y 20 -r 10 example brings up parts of a circle, but torn apart. image

I found this note of someone explaining the difference between SSD1306 and SH1106: https://community.arduboy.com/t/custom-hardware-oled-sh1106-screen-vs-ssd1306/312/5 does this make any sense to you? can you give me any pointers into your code to help me understand where I'd need to touch to adjust the code to this difference of RAM? if I'd get an entrypoint to the needed changes, leading me to success, I'd fork and send a PR if you're interested.

Regards Stefan

normen commented 6 years ago

As far as I get this you'd just have to specify a display size of 132x64 to make it work.

normen commented 6 years ago

..and looking at the code of this library I guess you'd have to add a screen config for that screen size here: https://github.com/normen/rpi-oled/blob/bd1cc1cfd3562b3670cedb36ad1b5df209654639/oled.js#L54

Try if that works, if it does a PR would be appreciated!

stheine commented 6 years ago

I tried that already, but it's not giving the correct results - only the data is displayed at different positions.

what about multiplex and compins in this config. what do those stand for?

even the 0,0 pixel is not displayed at the correct position. I'm currently digging into your code to figure out how the buffer is build and sent to start some lower level troubleshooting. I have working code in phython so maybe I have to reverse engineer that... or even read and understand the data sheet.

normen commented 6 years ago

Well this isn't really "my code" so I have just about as much an idea about what those exactly are as you have - maybe you find something in the various forks this is based on. But yeah, its probably only some small config value change.