4Duino -- aka Yet Another 4D Systems uOLED Display Driver Library

I know there are like four or five other libraries out there for this, but all but one of them are fairly non-comprehensive (or outdated) and the most recent one I didn't find out about until I was quite some time into writing my own. So, I present to you, 4Duino. There are a few joystick/sound/raw-image-drawing functions not yet covered, but otherwise the entire GOLDELOX SGC API is covered.

  • currently officially supports GOLDELOX <256px devices (I've been testing on the 96px display)
  • NEW - PICASO support is coming along, and most basic functions should now work seamlessly with PICASO displays! Should be safe to use, but I'd recommend updating your device first!
  • SD commands supported
  • supports both hardware and software serial; only gotcha is you have to #include "SoftwareSerial.h" whether you're using it or not.

Coming soonish:

  • documentation/API reference.
  • more custom widgets (ProgressBar currently implemented)
  • more example sketches (Mystify and ambient light control examples included currently)
  • missing functions (joystick/sound/raw-image-drawing)
  • universal (> 255px, touch, PICASO controller) device support (when I can afford one of the larger screens).
  • See above, PICASO support is coming along nicely.

Does it have any functionality with the Picasso? at all... I own a 3.2 SGC Picasso

Doc

Unfortunately, currently only GOLDELOX-based displays are supported, mainly because I don't have a PICASSO device to test with yet -- I'm going to be correcting that very soon, though, and full support for both device types is definitely one of my top priorities.

I await your good fortune... Sir.

Doc

Well done!

I ended up stripping needed components out of an existing library mainly because I only needed a few functions and at the time the library wouldn't work with 1.0.

I am going to have to try yours out and see if it works. I happen to have both a Goldelox 1.44" and a Picasso 2.4" but I haven't used the 2.4" in a long time.

Please let me know if you encounter any issues. I've not had any issues yet but there are bound to be a few bugs lying in wait =)

My PO for some PICASO displays hasn't yet been approved, so I've been somewhat stalled on that front for the time being. In the meantime I might work out some of the other todo-list items over the next few days.

I'd loan you mine but it was a Birthday gift, My 66th... and I don't think she would approve me shipping it off for 'evaluation'

Doc

We'll be using several of them in a project where I work, so that's not necessary (though I certainly appreciate the gesture!)

I initially started this project because I'm going to be mounting one of the <1" displays on an airsoft rifle (with a custom computerized MOSFET control unit) for ammunition and settings readouts -- then my boss gave me a project that will require several of the larger displays, so I'll be adding compatibility to those as soon as our accounting department approves the order. They tend to take their time though, so I'm often forced to wait a week or more before I can finally place my orders for parts. lol

I may just end up ordering one for myself this weekend if they still haven't gotten around to it.

I paid $74.00 for my birthday present... from my ex wife/roommate... Thought it was better than Sparkfuns $83.00 or so...
3.2" Picasso SGC... looks like it will do everything but put out the cat... in several dimensions, local programming? 16 pin I/O with 8 pins bus oriented with 3 control pins in the low order bits, speaker, touch serial drriven... Thought I had gone to heaven as it answers all the untied ends of a personal control thing for me and my little life clock, radio, baro, hygro, therm... local light co-ordinated display and banner/time display for the room again light co ordinated, radio's for outside hygro and therm and cross phase X10 comms, my house has 2 110V lines for 220 for the stove heater, and the rooms are divided equally one on each leg of the feed so my X10 will not work well if at all. At any rate it is a project sufficiently challenging as to fill my day reasonably, between reading, writing and reading a great deal and working on the sketches that tie it all together... I have a ball... Still rather would have the 4.3... just a little too... well perhaps later I can find something to stuff this one into and then...

Doc

Us old(ish) farts need a project eh?


Rob

I Guess...
Much more phun than marking days on the calendar... wondering. I seem to have a mental illness... For some unfathomable reason I have a need to share what I learned when I worked for a living. Although reception by some here is limited... Limited ability to read and understand the language learned/used here and generally from area's where English is the primary language. The United States and particularly California don't teach any more they simply facilitate the method of passing standard learning tests. Very little about the things that made this country GREAT... 50 years ago. When I dropped out of school it was considered the worst possible choice I could make... (it was). However I had more and better education than most do today with a Diploma in hand. At least I could write and read... Even books with big words too. I was taught things like integrity, the Value of learning. and the cost of signing my name...

Doc

I also dropped out of school, but in my case I reckon it was the best thing I could have done. I spent years travelling and working as a photographer then swapped careers to electronics and then software.

Most of my mates finished school, stayed in the same city, went to uni and have spent their life as accountants :slight_smile:


Rob

sounds like i'm still green! i went to college right out of high school, got a degree in graphics design, have been working as an IT admin for five years, and now they're having me do electronics too =)

Excellent library! A big thank you from me and I cant wait for any updates or examples coming in the future.

Mike

just a note, while I was looking over my example code -- a 1kOhm resistor on the OLED's RX pin is recommended, though I'm not certain that it's absolutely necessary. All designs I've seen for the display use it, though. I've added this to my example sketches just to be clear.

If a serial data line (RX) floats it will cause the Uart to become active and signal the processor with an interrupt, Every time it floats high or picks up noise... Even local high power AM especially but really any high power or closer lower powered sources of signals... like turning on motors or... Pull it down.. Just in case.

Doc

Just got our first shipment of 4.3" PICASO uLCDs!

Been reading the datasheet on these, there's some neat capabilities! the ability to access SD cards on a filesystem level is particularly nice. You can bet I'll be including that in my lib!

Edit: Doc: 555 posts! nice!

I try... 559... now and thank you. This community has given me a lot both in terms of education and in terms of helping people, the positive feedback I get is wonderful and makes up for how hard it is for me to type... I only can use the first three fingers on my left hand... Doesn't seem to slow me down much though...

I await your pleasure on the SGC library for my 3.2 $D Systems display. I bought it just because of it's capabilities, I have a bunch of displays but none like the 3.2. It can easily be a stand alone terminal and I suspect it might have more "horsepower" that the Uno. 16 I/O ports some I think analog too, 8 bit bus with separate lines for control, built in speaker... capable of being a stand alone controller... WOW. Worth the $74.00 or so I spent for it. IMO

Doc

I still have to give the PICASO SGC document a good look-over. I'm curious as to whether those IO pins can be worked with via the SGC interface.

The GOLDELOX displays just have a single pair of pins that can detect up to five different buttons based on resistance, so this will be quite an upgrade if it's flexible about it.

Yes those pins can be ussed for data gathering as well as output's 3 and and 8 bit bus or 16 serial/parallel asynch. data exchanges are possible.

Doc