Main Site Documentation

Communicating via i2c with AXE033

I would put a wire between the Domino +5V pin to the LCD V+ pin to power it.

I’m sorry but I couldn’t resist laughing when I read that “maybe the LCD needs some power to work correctly ?” :smiley:

About the delay, it’s only for Serial mode, not i2c. So I won’t worry that much about this. Just be careful at the delay after a Write transaction, though (as stated in the datasheet).

No I don’t mean the LCD requiring power to the +V. It has power, what I meant is that the signal coming on the i2c bus will be low 0, high 3v3, while the signal the PICAXE requires is low 0, high 5v. Im thinking, maybe 3v3 isnt high enough to trigger the PICAXE? Thats why I was considering putting a FET on the i2c bus, would that work?

I2C signals are open drain so either 0 or open. Teh pull up resistors can be then 3.3V or 5V

Ahh, and they are 5v already because they are inbuilt into the lcd module… Thats really frustrating, I havent a clue why this doesn’t work…

Okay I’ve got it working with serial now, kind of. The encoding is wrong, I need ASCII instead of UTF8… What I’m getting is a scribble of weird characters, at the correct position.

Can you take a picture and show us the output? We can work out what the encoding is up to

Cheers Ian

Sure, as soon as I get it working again. I think I got it stuck in a loop, and now it keeps on crashing when I try to connect it, and It isnt going into loader mode… It does that to me quite a lot, so hopefully ill get it going again soon :).

I really can’t understand why I’m struggling with this LCD so much, I did a project using it 2 years ago… Well that was using PICAXE so it was dead easy, but still, i’ve spent days on this. Its not going into clock mode for some reason, even though the jumper isnt shorted…

EDIT: Just looked at the datasheet. A “0” Byte makes it display the time, but I’m not sending it one… My current code I’m trying to make it work with is

            SerialPort UART = new SerialPort("COM1", 2400);
                byte[] buffer = new byte[2] {254,128};
                UART.Write(buffer, 0, buffer.Length);
                byte[] bufferMessage = new byte[5] { 65, 66, 67, 68, 69 };
                int i;
                for (i = 0; i < bufferMessage.Length; i++) {
                    UART.Write(bufferMessage, i, 1);



Now I would be able to test that, if my Panda wasn’t getting stuck at the “Deploying Assemblies” bit of the deployment… This happens all the time, am I doing something wrong? I end up having to reboot my computer, and when I shut it off I get a BSOD saying “Fatal USB driver error, dumping RAM to harddrive to avoid file loss”

I’m getting defeated by a simple LCD, I feel like such a looser :slight_smile:

Okay now its displaying the Preset message 1 on the top line and clock on bottom line, just as if it was in clock mode. Its still got the preset message back from my old project 2 years ago. Ill take a picture, but I’m really bemused, I might make a PICAXE program and try to run it see if that works. Ill also check the jumper for clock for continuity, because thats just weird.

The attached image is the LCD. The bottom jumper visible on left (The set of two pads) is the clock jumper, which when shorted should display exactly whats displayed on the screen now… except that its clearly not shorted.

PS: Just checked the Clock jumper with my multimetre - No continuity.

EDIT 3million and 7: This is an extract from the PICAXE manual: “When bit1 is 1, the serial output polarity is �Inverted� which is same as a �Nxxx�
baud rate in the �serout� command. In this state the pin idles low and pulses high.
This is the state normally used with third part devices (e.g an AXE033 serial LCD)
or director �resistor� conection to a PC.”

This requires N2400 baud rate. Is that what i’m using?

yet another edit: I checked the timings at which the messages come up, the top display message actualy appears when I send data to the screen, so it seems to think that I’m sending it a 0 for the clock, and a 1 for the message… Weird…

Finals thoughts - I’m not going to use a lot of standard IO pins on my panda, I’m really only after I2C, UART and PWM, so I’m thinking - I might aswell just take off the silly serial to pararell driver thats giving me so much trouble, and connect it straight to the LCD display. Saves me a UART, and a lot of effort :slight_smile:

I’ve just received my 9DOF and my GPS, so I recon I’ll see if I have any more luck with getting these to work, and get back to the LCD once I have the rest of my project working. Cheers for all the help, and any suggestions are still very welcome, as I will need to get this working sooner or later.