Hello! I’m trying to hook up an OLED display to my Daisy Seed, and since SSD1309 is not easliy available here, I got a SSD1306. I’ve read that the drivers should be compatible, so I hooked everything up along to kreiff’s schematic:
If you look in the OLED display driver code, its says:
// Set up for now with:
// SCL → PG11 (SPI1_SCK)
// SDA → PB4 (SPI1_MOSI)
// RES → PB8 (I2C1_SDA)
// DC → PB9 (I2C1_SCL)
You can check it out here: libdaisy/src/hid/oled_display.cpp
I haven’t tested this, but I have the same problem as you – finding affordable SSD1309 displays – so I am curious about whether the SSD1306 works. Please report back!
Thanks Staffan, unfortunatelly that pinout didn’t work either. But in the header file for the oled library there’s a comment by @shensley about the driver beeing inspired by a ssd1306 library from here. Theres also a todo list that says “re-add support for SSD1306 displays”, so maybe not all hope is lost
I crosschecked the command lists between these two (SSD1306 and SSD1309) displays and couldn’t find any difference. That’s where my current knowledge allows me to go at the moment. Any pointers would be great!
I tried with an I2C SSD1306 display I had laying about two months ago, but that project didn’t work out, so I switched to my trusty old LCD keypads that I’ve used for many Arduino projects. I wrote a lib for that one instead! It is now in libdaisy: libDaisy/lcd_hd44780.cpp at master · electro-smith/libDaisy · GitHub
Ok, I managed to get it to work under Arduino. Converting the project I was working on was a bit pita but at the end it works almost like with cpp libdaisy.
The SSD1306 is connected via SPI just as in the diagram above. I’m using the standard u8g2 library and everything works as it should. I even managed it to display real time pot values. Only thing is occasional misreading (value jumping between actual reading and 0). Got it on picture:
(don’t mind the vertical scanning flicker, it’s only on recording). I think this has to do with adc reading interruptions between daisyduino and analogRead function used to print the value on display, but I’m not sure after all.
One another thing I noticed is that the MCU is getting pretty hot, like 55-60°C. Are these kind of temperatures safe to run? Gonna have to get some radiator on this thing.
It’s a guitar pedal reverb with pitch shifted tail. I modified the Daisy Petal library to implement Pod- like Led control and also changed switch pins.
So thanks to the latest libDaisy update I was able to get the 1306 OLED running under VS Code. I even implemented it to run with DaisyPetal library, but I’m having a hard time to get it to print knob values. Analysing some Patch examples I came to something like this:
Man, I really wish that at least the examples would be documented better by commenting.
I have to tell you, as a non-programmer, every feature I want to implement is like breaking through an open door. So far I got everything to work but busting through github/forum/slack every time for days is getting more and more frustrating.
You might find ‘sndkit’ which is a ‘literate’ DSP library to have the commenting you want - at least for the DSP side. Take a look at: https://pbat.ch/sndkit/osc/
Which is the ‘code’ for osc.
Here’s the forum entry where Paul B described sndkit:
Thank you! As I said in the previous post I got it to work by adapting a Patch example, but it will surely be very helpful in the future For now I’m using 7 pin spi 1306 display, but I also plan on testing the 4 pin I2C one which I have laying around. Will report back!
Hi, Did you get the I2C driver for 1306 working? I realised I have I2C version so wondered if this was easier to set up? I read through your trials with anticipation and sympathy. I’m also not much of a programmer and find the amount of research and asking advice on forums becomes very frustrating, only to spend days trying to figure out a problem to arrive at a dead end. I started trying to set up the HD44780 1602 lcd display, a popular supported model I thought but found out the driver for Daisy is only parallel not I2C.
I2C OLED displays work fine with Daisy Seed.
But, patch.Init() doesn’t have I2C signals available on the P1 connector. SPI OLEDs work on patch.Init() via the P1 connector.