Beta version of GLCD library version 3

An early beta release of the next version of the GLCD library is now available. It has higher performance, more features, supports more Arduino boards and is easier to integrate with different panels.

Sketches written for the previous version should work with little or no modification although the configuration mechanism has been changed to make it easier to use with a wider range of GLCD chips and ATmega controllers

[u]Here[/u] is the library beta download. Documentation in pdf format is [u]here[/u] and there is also an HTML reference document in the docs directory of the installed download

A huge amount of work went into this version, particularly from Bill (bperrybap).
We would appreciate beta testers kicking the tires, please post in this thread how you get on.

Have fun!

Some additional information about this library/code.

This glcd library is a beta release for a new glcd library.
It is a replacement for the ks0108 library - Arduino Playground - GLCDks0108

Because the library now supports other other glcds besides the ks0108 (currently only the sed1520 is operational), the name of the library was changed from "ks0108" to "glcd".

However, even though the library name was changed from "ks0108" to "glcd", both libraries cannot exist in your arduino environment.

So, to use this library, you will have to remove/uninstall any previous ks0108 library installation from your development environment.

See the readme.txt file in the zip image and the included HTML documenation in doc/GLCDref.htm, also in the zip image, for further details.

--- bill

been wanting to play with this.

Thanks for the hard work writing it and releasing it, I will set a mega and a display up tonite and see what I can break. ;D

@copiertalk, looking forward to hearing how you get on.

Was just going through some of your examples. Pretty cool stuff. It looks like FPS has almost doubled plus a couple. The old example sketch showed 8 fPS while this one shows 16.07 or so.

using this display http://www.wide.hk/pdf/YMG12864-5.pdf on a mega. It looks to have a different pinout than the ones in your instructions.

I will throw some graphics on it from my website and the project I am working on to it when I get a chance to play a little more with it.

I just tried this.. The fps is wayyy noticable ;). I'm getting 16.26 to 16.31 fps.
I also changed the EN pin in the arduino .h file to pin 3 (so could have i2c).

Good to hear its working well for you.
@copiertalk, could you post the operating system and Arduino version you are using

@chris mitchell, could you post your Arduino board type and operating system

thanks.

Arduino Duemilanove
Windows Vista Ultimate 32bit
Using ide 18

I am using version 19 of the ide on vista 32 bit.

@copiertalk, Version 19 of the IDE? I haven't seen that. Was it maybe 18?

I'm curious if anyone has run the diag sketch on their displays yet?
GLCDdiags really exercises the data interface to the module as it tests its memory. It also pushes diagnostic messages out the serial port.

I'm also curious on anyone's thoughts/comments on the documentation (PDF & HTML)
and how easy/obvious they thought it was to modify the proper config files for different pin configurations for their environment.

--- bill

I ran most of examples except the all in one. Ran diag test at end test ok :).

I'm also curious on anyone's thoughts/comments on the documentation (PDF & HTML)
and how easy/obvious they thought it was to modify the proper config files for different pin configurations for their environment.

--- bill

I looked in it. Pretty good. I'm going to start on my project again tonight.

@copiertalk, Version 19 of the IDE? I haven't seen that. Was it maybe 18?

I'm curious if anyone has run the diag sketch on their displays yet?
GLCDdiags really exercises the data interface to the module as it tests its memory. It also pushes diagnostic messages out the serial port.

I'm also curious on anyone's thoughts/comments on the documentation (PDF & HTML)
and how easy/obvious they thought it was to modify the proper config files for different pin configurations for their environment.

--- bill

It was/is version 18 of the IDE, that was a mistype on my part.

I Loved the new PDF but did not look at the HTML, I will have a look when I get a chance. The pinout for the display used is one I posted earlier and are widespread on ebay right now. The displays work fantastic but the pins are changed again. Let me know and I will send you one.

I did not modify any config files. I put the new library in the directory structure, uploaded the sketches and ran them On the previous set up I had already set up testing a display. In previous versions of the sketch I had to let the sketch know I was running a mega but I do not see that option with this library?

I had not run the diags but had noticed them, I will upload them in a minute and test them out with the display I have set up.

In previous versions of the sketch I had to let the sketch know I was running a mega but I do not see that option with this library?

I assume you mean previous ks0108 library.
The current glcd library automatically determines the AVR chip environment based on the Arduino board type selected in the IDE.

--- bill

The current glcd library automatically determines the AVR chip environment based on the Arduino board type selected in the IDE.

To be clear, the previous version of the library also automatically determined the chip based on the IDE board selection. This capability has been in the ks0108 library in the playground since release 1.1 (end of 2008), perhaps you were using an older version

you might want to edit the playground articles then..

Wiring and Configuration:
Pin assignments are contained in the appropriate header file for the supported controller chips. There are three controller types supported in the current version:

?ks0108_arduino.h <- this is for ATmega168 and ATmega328 boards
?ks0108_mega.h <- for the Arduino Mega (ATmega1280)
?ks0108_Sanguino.h <- for Sanguino (ATmega644)

See the readme file supplied with the download for more details on configuration.

It is suggested that you wire up the panel using the default pin assignments. This diagram shows how panels should be connected using the default pin assignments in the distributed library.

Or make a note that it changed at some point in the development of the ide/library.

Arduino Playground - GLCDks0108 ;D

Thanks for the feedback. I think the playground article and the readme file for the previous version of the library are correct (if not completly clear) - that version, like the new one, will automatically include the correct file if you use a standard arduino board (ATmega 168 or 328), Mega or Sanguino board.

But its not made explicit that when you use the default pin assignments everything would get configured automatically for the supported boards. You only needed to edit a config file if you changed the wiring or used an unsupported board type.

The new library and documents replace the old, I trust that they are clear enough.

I will be updating that playground page with info for the new library when the beta cycle is over so new users will be directed to the new version.

Thats funny.

This was my fifth or 6th project. I got this inexpensive display off of ebay as I mentioned before. I hooked it up four or five ways and read every bit of information I could find was interesting at the time. I finally sat down, went pin by pin, connection by connection, line by line from the datasheet (As I should have from the beginning).

It has been on my board for several months playing with it.

You mentioned frame buffers in a previous thread, can you elaborate on that a little more or is there some documentation on how to take advantage of it released yet?

The GLCD library uses the memory in the LCD panel instead of a frame buffer in Arduino RAM. A frame buffer require lots of RAM which is a scarce resource on Arduino chips. Was there something you wanted to do that needs a frame buffer or were you just curious?

Serial initialized
--------------------------------------------------------------------
GLCD Lib Configuration: glcd ver: 3 glcd_Device ver: 1 gText ver: 1
Panel Configuration:ks0108
Pin Configuration:ks0108-Arduino
--------------------------------------------------------------------
GLCD:ks0108 DisplayWidth:128 DisplayHeight:64
Chips:2 ChipWidth:64 ChipHeight:64
 CSEL1:2(PIN_D2) CSEL2:3(PIN_D3)
 RW:14(PIN_C0) DI:12(PIN_B4) EN:13(PIN_B5)
 D0:8(PIN_B0) D1:9(PIN_B1) D2:10(PIN_B2) D3:11(PIN_B3)
 D4:4(PIN_D4) D5:5(PIN_D5) D6:6(PIN_D6) D7:7(PIN_D7)
Delays: tDDR:320 tAS:140 tDSW:200 tWH:450 tWL:450
ChipSelects: CHIP0:(2,0x1, 3,0x0) CHIP1:(2,0x0, 3,0x1)
Data mode: 
 d0-d3:nibble mode-Non-Atomic
 d4-d7:nibble mode-Non-Atomic
--------------------------------------------------------------------
Diag Loop: 1
Initializing GLCD
Displaying ChipSelect Screens
Walking 1s data test
Wr/Rd Chip Select Test
Testing GLCD memory pages
Horizonal Page Test Chip: 0 Pixels 0-63
Vertical Page Test Chip: 0 Pixels 0-63
Horizonal Page Test Chip: 1 Pixels 64-127
Vertical Page Test Chip: 1 Pixels 64-127
Full Module Horizontal Page Test:Pixels 0-127
Full Module Vertical Page Test:Pixels 0-127
Tests PASSED
GLCD.SetDot() speed (K ops/sec): 18.93