Tinkerkit LCD Library Errors

Hello, I am trying to compile the TKLCD Serial Firmware sketch based on this tutorial-http://www.tinkerkit.com/lcd/ with no success for some time now. I have tried compiling in three versions of the IDE on both Mac and Linux, including v. 1.5.5 (both stable beta and nightly) and the current 1.0.5. The error messages vary depending on the OS and the version but in the Current Arduino 1.0.5 on OSX version 10.7.5. it simply returns

SerialFirmware:60: error: 'Serial1' was not declared in this scope

This is the same issue that appears in the 1.0.5 version on Linux I know in the past I had trouble with the Tinkerkit library because most examples would simply take a standard Arduino sketch like "Servo Sweep" and redefine standard objects like "Servo" into something absurd like "TKContinuousRotationServo" and in so doing managed to mix up the way objects were defined in the sketch. I've tried combing through the TKLCD.h header file but have yet to come up with anything that works. I've also noticed that the "Serial Firmware" example sketch doesn't even call the #TKLCD library and when I try to add it myself it doesn't highlight, hinting that the IDE doesn't recognize the library for some reason, but it does appear in the Examples folder dropdown menu.

Has anybody else managed to find a fix for this?

I don't see any issues. It compiles just fine on my linux machine using IDE 1.0.5

That firmware "sketch" is the firmware for the TKLCD board. i.e. it loads & runs on that processor not on your arduino board. From the page you linked to:

The LCD works both as a regular module, by plugging it into the TinkerKit! shield, or as an independent USB board; it has in fact a microcontroller and a USB port on board that make it a fully-fledged LCD-shaped LCD-shaped Arduino Leonardo.

So to build the firmware for that board, you must use the Leonardo board type. When I do that, it compiles just fine.

There are full instructions on how to do builds and uploads on that page that mention that the TKLCD board is recognized as a Leonardo by the Arduino s/w.

My guess is that since you are not seeing a reference for "Serial1" you are trying to use some other board type like maybe "Arduino" which doesn't have a "Serial1".

--- bill

bperrybap: I don't see any issues. It compiles just fine on my linux machine using IDE 1.0.5

That firmware "sketch" is the firmware for the TKLCD board. i.e. it loads & runs on that processor not on your arduino board. From the page you linked to:

The LCD works both as a regular module, by plugging it into the TinkerKit! shield, or as an independent USB board; it has in fact a microcontroller and a USB port on board that make it a fully-fledged LCD-shaped LCD-shaped Arduino Leonardo.

So to build the firmware for that board, you must use the Leonardo board type. When I do that, it compiles just fine.

There are full instructions on how to do builds and uploads on that page that mention that the TKLCD board is recognized as a Leonardo by the Arduino s/w.

My guess is that since you are not seeing a reference for "Serial1" you are trying to use some other board type like maybe "Arduino" which doesn't have a "Serial1".

--- bill

It wouldn't be the first time that I made a rookie mistake like choosing the wrong board, but I'm afraid this time it is not the case. In fact, the whole reason I bothered with Tinkerkit at all was because of the possibility of using it as a standalone Leonardo board. So I definitely got that part. Now that I know it does work on other installations of 1.0.5 though I'm starting to wonder if I might've screwed something up while trying to reflash another ATmega32u4-based board... I haven't had any problems with my Esplora, Micro, Leonardo, Multiwii and a host of other 32u4s though, so I wonder if it has something to do with the particular configuration on the TKLCD that doesn't like my setup... Just to make sure, I tried compiling again on my Linux machine and the errors came up as something different once again...

SerialFirmware.ino: In function ‘void setup()’:
SerialFirmware.ino:175: warning: suggest parentheses around arithmetic in operand of |
SerialFirmware:178: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino:206: warning: only initialized variables can be placed into program memory area
SerialFirmware.ino:209: warning: only initialized variables can be placed into program memory area
SerialFirmware:220: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino:223: warning: only initialized variables can be placed into program memory area
SerialFirmware.ino:224: warning: only initialized variables can be placed into program memory area
SerialFirmware.ino:226: warning: only initialized variables can be placed into program memory area
SerialFirmware.ino: In function ‘void loop()’:
SerialFirmware:412: error: ‘EEPROM’ was not declared in this scope
SerialFirmware:461: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino: In function ‘void loadCustom(uint8_t)’:
SerialFirmware:487: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino: In function ‘void readCustom(uint8_t, uint8_t)’:
SerialFirmware:521: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino: In function ‘uint8_t getContrast()’:
SerialFirmware:527: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino: In function ‘void storeContrast(uint8_t)’:
SerialFirmware:541: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino: In function ‘uint32_t getBaud()’:
SerialFirmware:548: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino: In function ‘void setBaud(uint32_t)’:
SerialFirmware:588: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino: In function ‘void setAutoScroll(uint8_t)’:
SerialFirmware:598: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino: In function ‘uint8_t getAutoScroll()’:
SerialFirmware:607: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino: In function ‘void displayOn()’:
SerialFirmware:611: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino: In function ‘void storeBrightness(uint8_t)’:
SerialFirmware:623: error: ‘EEPROM’ was not declared in this scope
SerialFirmware.ino: In function ‘void setSize(uint8_t, uint8_t)’:
SerialFirmware:628: error: ‘EEPROM’ was not declared in this scope
SerialFirmware:630: error: ‘EEPROM’ was not declared in this scope

Missing "Serial1" is from not using the Leonardo board type. The messages now are different. Compile issues don't change by themselves, they are remarkably consistent and will not be affected by any previous compiles or uploads. Something has changed.

The most critical information is missing. Turn on verbose mode so you can see all the warnings and errors and compile line options. It will be something before the messages you have posted that is causing the issue.

--- bill

I've had the same problem, and now the Tinkerkit website is either down for maintenance or gone for good. As for making the module work via arduino connection, any advice?