As mentioned in my previous article, while building the Pi1541, I had a lot of difficulty getting the oLED module to work.
I blamed it on the fact I had accidentally purchased an SSD1315 instead of an SSD1306.
I fiddled a lot with the options.txt file and ensured I had the correct configuration soldered. But still, I got no display on my tiny oLED and had to resort to using the external monitor to select games. Not a very portable option.
I was pleased when my new SSD1306 arrived yesterday and I was keen to try it out.
This is the one I ordered: https://www.aliexpress.com/item/32920071528.html
I plugged it in: no screen. OK.
Now here is something I didn't mention at the end of my last article: the fact that when I turn on the Pi1541, I do see the message:
I2C not found on Bus 1.
That was something I didn't really go back to. So I took a closer look at options.txt:
// If you are using a LCD screen then specify it here //LCDName = ssd1306_128x64 //LCDName = ssd1306_128x32 //LCDName = sh1106_128x64 // If you are using a LCD screen and you would like PageUp and PageDown keys to work with it then specify this option //KeyboardBrowseLCDScreen = 1 // If you are using I2C LCD you can optionally change what pins it is connected to. // (defaults to 0 for non-split lines (Option A) or 1 for split lines (Option B)) //i2cBusMaster = 0 //SDA - pin 27 SCL - pin 28 //i2cBusMaster = 1 //SDA - pin 3 SCL - pin 5 //i2cLcdAddress = 60 // I2C display address in decimal and shifted. 60 == 0x78, 61 == 0x7A //i2cLcdFlip = 1 // Rotate i2c LCD screen 180 degrees //i2cLcdOnContrast = 127 // Allows you to adjust the contrast on your i2c LCD screen //i2cScan = 1 // scan i2c bus and display addresses on screen //i2cLcdUseCBMChar = 0 // set it to 1 to use CBM font on LCD. Small but fun !
The part that tripped me up was:
(defaults to 0 for non-split lines (Option A) or 1 for split lines (Option B))
That seemed to indicate that for an Option B Pi1541, the screen should be configured for Bus 1. I didn't know if this was the same “Bus 0” I configured earlier on the daughterboard or something local in the oLED module itself.
Of course, as it mentions defaults that means it's configurable either way.
Essentially, for an Option B machine, I should be able to leave everything to default and it should work. But as I'd fiddled around so much previously, I went with the following to ensure the settings were explicit:
LCDName = ssd1306_128x64 i2cBusMaster = 0 i2cScan = 1
Restarted the Pi1541. Guess what? It worked beautifully! The external screen no longer showed any output, and the oLED now took over and I could use it to select a D64 image.
And the amusing part of the tale? I swapped out the SSD1306 with the SSD1315, restarted, and it works too. So it was just me all the way along.
So there's a couple of good things to come out of this:
ssd1306_128x64
in your config).And I think I'll stick with the SSD1315. I prefer the blue/yellow colours rather than monochrome white.