Go Down

Topic: Crius OLED display (Read 85287 times) previous topic - next topic


I got the display to work! I just changed the address  0x3c  and it started working didn't even need the 100 ohm resistor from the PWR line to VCC (+5V).+


I got the display to work! I just changed the address  0x3c  and it started working didn't even need the 100 ohm resistor from the PWR line to VCC (+5V).+

How did you change the address?


At the beginning of the sketch.

Code: [Select]
unsigned char fill_OLED=0x3C;

Previously it was 0x55 changed it to 0x3C and it started working.


I see some very strange behavior here.
I just connected my OLED display and still need to use the resistor.
I did that to see what happens if i would use address 0x3C.
So i changed the same line from 0x55 to 0x3C.
Works exactly the same.
Changed to 0x01 and to 0x27 (i have a 1602 connected at that address too, as i'm playing with that at the moment).
The OLED seems to work with any address entered, and i do not see strange things happening on the 1602 display (but that one isn't initialized as it has blocks on the upper line and spaces on the lower line).
I'm running out of time so next tests will be done maybe next Sunday, for now i'll disconnect the OLED and upload the other sketch i'm playing with at the moment.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html


I bought this display and was having problems. There was some problems on the PCB, which I corrected with your help and I want to share my conclusions.
I bought this module, not directly from DX, but exactly the same as this: http://dx.com/p/crius-co-16-oled-display-module-for-telemetry-debug-multiwii-fc-flight-control-board-blue-180386. PCB v1.0. I managed to reverse engineer the schematic (in attachment).
Display looks to be the same model, which is in Adafruit module http://www.adafruit.com/products/326#Technical Details. It turns out, that there are two things missing on the board:
- Reset circuit. Reset is connected directly to +3V3. I desoldered it and connected 10k + 100n circuit.
- Pin 20 (SDA-out) is not connected. According to datasheet, it must be connected to pin 19 (SDA-in). It may work without it, but without any response from module.

Best Regards,


I received my Crius OLED in the mail yesterday and spent most of the time since trying to get this little booger to work on my Uno R3. I'm new to the Arduino (and programming) and this is my first display that I'm trying get working.

When I first hooked it up I had the random dots/snow all over the screen. I downloaded the DealExtreme sketch (with config.h and data.c) from Reply #1, but I still had the random dots. I tried putting light pressure on the screen and ribbon connector but that didn't affect anything. I wanted to try the "brute force" method but I didn't know where to insert that code. I ended up causing a bunch of self-induced compiling errors that I didn't know how to fix. I did manage to send the command to turn on all of the pixels at once though (06a5). That turned all of the pixels white, but when I returned the display to normal (06a6), all of the noise came back. I tried changing the address from 0x55 to 0x3c and back but that didn't fix it either. Finally, I tried to put a 100 ohm resistor in series with the Arduino's 5v output and the OLED's 5v input - it still had noise on the screen. I tried a 150 ohm resister instead, no help. I gave up for the night. The other suggestions (reset mod, SDA/SCL mod, etc.) are all beyond my skill level right now. All of the above were tried on 5v and 3.3v, with unplugging and replugging in the Arduino between troubleshooting.

This morning I plugged in my Arduino (to USB) and to my surprise, I had text on the screen. After about 2 seconds, the display inverted to white and I had what looked like venetian blinds/sync problem overlayed on the screen. I unplugged it again and then everything came up good (with whatever sketch that I had loaded into it from the night before). I reuploaded the DealExtreme sketch and it works good. I still had the 150 ohm resistor connected, so I removed that (now with no resistors) and the display went back to being noisy again. I connected a 100 ohm resistor and it started working again. Now it works with either the 100 ohm or 150 ohm resistor on either 3.3v or 5v. I played around with it for a awhile and figured out how to adjust the brightness (contrast?) and replace some of the default text in the sketch.

Now for the bad news. I think either the white 4-pin connector on the back of the OLED or the 4-wire cable that came with it is intermittently bad. Putting *slight* pressure on it or even just barely touching it causes the text that is being sent to the OLED to be corrupted. Sometimes it works for a while, sometimes not. Even if I don't touch the display, just the angle that the OLED is leaning against something can cause enough pressure to corrupt the sent data. This results in garbled text on the screen, which is completely different from the original noise/snow on the screen.

So, I think the combination of the 100 ohm resistor, letting the display sit powered off for a while, and the DealExtreme sketch is what got my screen working.

1) Since I'm a beginner, should I stick to an LCD (instead of OLED's) until I get more experience?
2) If not, does anyone have any recommendations for another 128x64 OLED that is affordable and more reliable than this one? Preferably one from eBay and one that graphics libraries will work on.
3) Does anyone know of any extremely basic tutorials for OLED's (or LCD's) that explains all of the commands and steps involved in making a sketch from scratch? It seems to me that the DealExtreme sketch is about 20 times more complicated that it needs to be just to get a "Hello World" displayed on the screen. Thanks.



Hi Matt.

Looks like you've got it working faster than a lot of others (including myself) did.
These same OLED screens can be found in other places, but fitted on other pcb's from different manufacturers.
0miker0 has designed his own improved pcb, but that takes some (smd) soldering.
I think the DX price is hard to beat, though.
DX's service dept. sent me a new one after complaining it didn't work.
I'm not sure that is where you got yours but if you did, you might get another one by sending them a complaint and telling them exactly what you tried and your conclusion.

This is a graphic display, and if you take a good look at the example sketch you'll see that the characters aren't written, but drawn.
Play a bit around with some delays in the sketch, and you'll see the screen being built up.
So displaying "Hello World" isn't that more difficult as displaying some nice picture.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html


Hey Matt,

I've had nothing but bad luck with with the Crius displays so I made my own 3.3V - 5.0V one. It uses a proper i2c level converter and a small LDO. I created test code that allows for 180 degree screen rotation and when changing the i2c address it will work with the adafruit graphics library. The schematic and gerber files are all availible if you want to make your own. It's all at https://sites.google.com/site/0miker0/oled-displays
Email me your mailing address to 0miker0@gmail.com and I'll send you one for free.



Thanks for the quick replies.

@MAS3: I only got it working relatively quickly because you guys already figured out how to fix most of the problems. I bought my OLED on eBay for $9.99 USD (Product Link, Store Link). A little bit more expensive than DX but not too bad. In hind site I would rather have paid $5 more somewhere else and got one that works reliably. I'm not going to return it though. Like 0miker0 mentioned, the display is probably good even if the board or a connection is bad. I'll hold onto it. Maybe I can use it in the future. I didn't realize that the characters were being drawn on the screen graphically. I thought the OLED had built-in fonts that the sketch was telling it to display. I'll have to look at that sketch some more and see if it makes sense.

@0miker0: I went to your website yesterday and downloaded your test code when I was trying to figure out the source of my display problems. I saw both of the boards that you made for the OLED glass. Very impressive. I'd like to be able to make custom boards like that some day. Regarding your offer for the free board, I have absolutely no idea how I would be able to solder that ribbon connector or SMD's. For now I'll decline. Thanks though.

And here is a photo of what my OLED is doing. This is the garbled data I mentioned before.



No worries. If you're having as many difficulties as I did and still interested, the board I can send will come fully populated with all the parts and glass soldered. All you need are two 10K pullups and an arduino.


Hey mmc_ardcc,

Those pictures look a lot like what i saw when i connected more than 1 device to the I2C bus (what i saw was a bit more of the same efect).
I have some different I2C devices like a 1602 display and some sensors to play with and tried some things.
I guess this is related to resistors that are required to have the bus work correctly.
Don't have enough time to figure that out (yet) while doing my other Arduino projects.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html


By the way,

Some posts back (in may) i said i would go figure out why it doesn't matter what address is used.
Answer to that must be that the function that actually controls the screen, is handling the address no matter what was entered somewhere else.
Haven't been able to verify that.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html


Aug 14, 2013, 07:07 pm Last Edit: Aug 14, 2013, 07:20 pm by chinlin0924 Reason: 1
I found a way to get rid of the random dots that many people met.
only apply a small LED between 5V (LED + pin connect here) of Arduino and the OLED's pin 's 5V (LED - pin connect here).
I think diode would also make it work without any problem.

see attached for detail


After watching the posts and finally take a look to CRIUS's schematics clearly there is a huge mistake connecting directly Reset pin (14) to +3.3 V, so making a simple reset circuit with a capacitor and charging resistor would be good enough.
I think Crius oled module is a nice cheap module after fixing/preparing the reset circuit.
take a look at attached pictures found in: http://rayvenn.alnet.com.ua/2013/08/crius-oled-display-fix/



Just wanted to say thanks to everyone in this thread. You guys rock. I figured I got duped by goodluckbuy.com and never thought twice till I pulled this thing from the junk box. For like 3$ it is hard to put more than 2 mins into the thing when the example code fails.

PS login to dl the attachments.

Go Up