Jump to content
Sign in to follow this  
Janos

I2C OLED Display from Ebay - only random Pixels

Recommended Posts

Hi,

 

I've picked up this display on ebay and I can't get it working since yesterday.

I use the Adafruit SSD1306 Library with my Arduino Uno and after changing the I2C adress from 0x3D to 0x3C in display.begin, it works well with my Arduino. So I downloaded this Energia version of the Library, did the same change  and added Wire.setModule(0) before calling display.begin, so that it uses the right I2C connection. It compiles without error, but everything I get are just random pixels. After some seconds, these random pixels start moving from the left to the right and up and down smoothly, so something seems to happen, but the test images expected do not show up. After every power up these random pixels look different, but the movement they do stays the same. My guess is, that there are I2C commands that update pixels and others that move pixels, so updating the pixels obviously fails, but moving the pixels works. Has anyone else worked with this display?

 

If I change the I2C dress in display.begin, nothing appears on the display. So this is a reason, why I suggest that at least there is no electrical connection problem.

 

I attached some external 4k7 pullup resistors that pull up the I2C bus to 3.3V. I tried it with and without them, the same result in both cases. Are there pullup resistors on the Launchpad so that I don't need them or should i keep them connected?

The display is powered by 3.3V.

 

I attach an image of what the display looks like. Don't mind the other wires on the breadboard, there are some other components connected to the UART - but these components work ;)

post-46465-0-44433400-1438681417_thumb.jpg

Share this post


Link to post
Share on other sites

@@Janos Do you have a scope or analyzer of any kind?

The chip might have weak internal pull-ups. Having them outside does not hurt.

 

Are you using the same breadboard to test with the Arduino or are you moving it to another board? 

 

Maybe a lower I2C speed?

Share this post


Link to post
Share on other sites

Strange, when I converted a driver for SH1106 I found it was (nearly?) impossible to get anything to display unless it was initialized correctly.

Check that the initialization sequence is exactly the same as used in the Arduino library, if different then that might be the reason.

Be aware that it is not easy to differentiate between SH1106 and SSD1306 displays from their physical apperance, the one I got also uses I2C address 0x3C.

Their initialization sequences are incompatible, at least the SSD1206 sequence does not work for SH1106.

 

Share this post


Link to post
Share on other sites

I use a Connected Tm4C1294 Launchpad. Anyway, after searching a bit more on the internet, I found this thread, wich seems to deal with my problem. I says, that there is a reset Input missing on the pin header of the display, which clears the internal buffer after startup, so the display accepts comments for movement of the image, but is not able to upload any data to the buffer before it is cleared. Some people solved it by putting a serial resistor into the power supply line, so that the display gets less power at startup - which will most likely clear the buffer. But that doesn't work for all the people posting there, for me it didn't work either.

So some people soldered a small RC circuit to the reset pin at the back of the display, that pulls the pin to ground for a short time after powering up. Now my idea was, to solder a wire to this pin and tie it to an output pin, so that the reset procedure can be done in software.

Sadly, I need to go to university to have access to good soldering equipment for this job, as well as for a scope, Bluehash asked for. At the present time I'm at home, I'll try this when I get back there. Until then, I use an "old fashioned" LCD Display for my project.

 

The last question that remains is, why it worked with the Arduino? Maybe this board has less power, which was exactly what the display "needed" at startup? Or is there a way to reset it via I2C? Terjeos post says something about an initialization sequence..?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...