Crius OLED display

Hello, anyone has experience with the "I2C 0.96" 128*64 OLED display module For MWC MultiWii board(compatible Arduino)"?
http://www.ebay.com/itm/I2C-0-96-128-64-OLED-display-module-MWC-MultiWii-board-compatible-Arduino-/280990461557?_trksid=p2045573.m2042&_trkparms=aid%3D111000%26algo%3DREC.CURRENT%26ao%3D1%26asc%3D27%26meid%3D6886718109184528526%26pid%3D100033%26prg%3D1011%26rk%3D1%26sd%3D280990461557%26
i cant seem to get it to work and i cant seem to find a tutorial on it..Thanks for the help!

The example code that they recommend using with the display did not work for that display. I stumbled across working code somewhere and have attached it.

Mike

dealextreme_oled.zip (431 KB)

I just tried to compile this example code, but IDE complains about undefined reference to `myFont'
This is not in the sketch itself, but in data.c (which seems to hold a bitmap for the font and some logo).
I have no idea how this works, using the font.
The error is reported in line 144 of the sketch, which says:

//==========================================================//
void SendChar(unsigned char data)
{
  i2c_OLED_send_byte(data);
  /*
  Wire.beginTransmission(OLED_address); // begin transmitting
  Wire.write(0x40);//data mode
  Wire.write(data);
  Wire.endTransmission();    // stop transmitting
  */
}

//==========================================================//

There is only 1 line that is not comment (it sarts with "i2c"), and that's line 144 which is referred to by the error form IDE.
If i understand correct, this is supposed to send data to the display but i really don't know.

Can anybody tell me what this means and how to solve this ?

I've got the same display (twice) and didn't get it to work yet.
Twice because the shop sent me another one as the first one wasn't working.
But both aren't working.
I've used a I2c scanner to find the display but even that doesn't work, but i would like to try everything possible to get it to work.

Did you try the example code that I attached? It compiles fine on 1.0.3 The external font file has been edited out to get you going.

Mike

Yes, that was what i was referring to.
I've copied 4 files to the directory.
I forgot to mention i've changed the path to Config.h so it will be found in this directory, maybe this is the cause ?

So you still have no text on your display at all?
When I open up the .ino file, the config.h and data.c tabs appear next to it. If yours are not there you can add them by clicking Sketch, Add File and add them both.You shouldn't have to set a path to the .h file. Let me know if you still have problems. You can also edit out the #define INTERNAL_I2C_PULLUPS as well. Depending if you have your i2c lines already pulled up or not.

Hi

Google Code Archive - Long-term storage for Google Code Project Hosting. might work. Uncomment

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

in the examples.

Ensure that you correctly connect the display to the HW I2C lines of your board.

Oliver

You are absolutely right with your description about the 2 additional tabs.
I sweear they weren't there the first time i opened it so i made the reference.
Now it compiles OK and i'll have a go to see if i can upload and have something happening on those screens.
As a matter of fact i just did that, and oh joy, there's pixels on the first screen now.
Can't make anything of it, but for now it lives !

Thank you for sharing this.
I'll have a look to see how to actually use it

Hi olikraus.
I'll check your u8glib this weekend.
At the moment i've got scrolling , inverted garbage on the screen and still need to see how to get a practical use.
As it's 0:30 now over here and tomorrow is a working day, i'll go to have some sleep (will sleep very well) and this upcoming weekend is already booked.
Thanks guys !

In the example I attached the scrolling and inverting is disabled so it should be impossible for you to see this. The code only displays text to verify that things are wired correctly and your screen works. Verify your SCL and SDA pins are on A4 and A5 and you should be good. You can also try editing out the internal pulls in the .h file. If you use my code and follow these instructions but do not see text then your display is bad. I'm I using another display that I picked up on eBay. The adafruit graphics library works with it.

I cannot get the graphics library to work on the Crius display. Believe me, I've tried.

Well, i'll play around with the bitmaps then.
No text is displayed and the UNO can be connected in 2 ways which both offer the same result.

The inverting and the scrolling is what i've been playing with to see what happens so it seems to me these commands work.
When scrolling, i can see the smae pattern is displayed over again so that seems to work too.
I can edit the scroll speed and so forth so i'll have a play with other bitmaps.
I'll report back with the results.

I'll play for 10 more minutes and then try to catch some sleep.

There should only be one way to connect it to the UNO. SCL, SDA, +5 and ground. Can you use the original example code I sent again without editing it in any way? If nothing then just comment out the internal pull-ups and send that code to the UNO again.

UNO R3 has pins A4 and A5, as well as SCL and SDA but that doens't matter now.
Editing out anything that says pullup results in an empty screen.
I tried making a photo but that's hard to do because of the way a display like this works.

I'll be back

Hi everyone, thanks for the replies! i tried the sketches provided but none of them seem to work. am wondering if the display itself is faulty...is there a way i can check it? thank you

It's very likely. I just took this picture now. The code is the exact same that sent yesterday.

Mike

Hmmm just to be sure its on the A4 and A5 right?

It should be, that's what is mentioned in the coments in the sketch.

I had some more success taking a picture during daylight, so here is what my display shows.


This happens immediatly after powering up, but not if the display has been off for a while.
Then it takes a second or so before something appears.
Looks like both units have a memory problem.
I can control the functions like inverse and scroll, so Arduino communicates and this communication is processed.
I read somewhere about a reset problem and soldering a SMD capacitor and resistor to pin 14 of the flatcable (after disconnecting that pin) might help in such case.
This is a very small pitch connector (to me), yet i'll have a try at that some time.
I think i'll look for the command set for this ssd1306 chip to see if i can send some command instead before i get destructive.

I just plugged mine in now and the screen is garbage like yours. Strange. I took a working screenshot this morning and it was fine. Tried tweaking the delays in the init and it started working, and then not. Right now i'm not sure what the problem is. Maybe the pullup resistors are necessary, decoupling caps or it might be something in the code. I'm using another display with great results. The Crius one isn't very good. I'd trash it and get pretty much anything else.

When i worked with u8glib on a Seeedstudio 96x96 OLED, i noticed that the chip is very sensitive to wire size and I2C speed. 100kHz is already the limit for this controller. I2C fast mode (400kHz?)was never working with my OLED.

Another reason for not beeing able to communicate with the controller could be the look state. A library should send an unlook sequence (0x0fd, 0x012) as first command.

Oliver

@olikraus: That's way over my league, but i know communication is not completely gone while this sketch is running.
As stated, i can see different stages.
Sometimes i can even see some blinking dots at the moment data is sent.
I put some 2 second delays between the senStr commands as a debug help, and can see a pause in the blinking dots at respective delay points.
The display inverts and gets back, inverts again and then starts scrolling.
This is a clue (to me) that communication works, but the buffer that holds the screen content, doesn't erase on startup or is in another way corrupted.
Is there a way to set the I2C speed to a lower (but more reliable) rate ?