With the TKLCD module you can write text on the module’s screen in a few minutes. It mounts an LCD display on board and it requires a dedicated software library that is available here. Check the tutorials page for more information.


If you have Windows, follow the dedicated installation guide

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.

1. Serial

Using the four-connectors wire, the LCD module can be hooked-up to the SERIAL port on the TinkerKit! Shield. To work properly it has to be loaded with the right firmware; it is nothing more than a particular Arduino sketch and it’s located inside the examples of the TKLCD library. You can open it from File->Examples->TKLCD->Serial_firmware Mind that this firmware must be uploaded on the LCD module, and not on an Arduino. Connect the module using the USB cable, (the Arduino software recognizes it as an Arduino Leonardo) then load the firmware. You don’t have to upload the firmware every time, just remember to reload it if you upload something else on the module, and then you want to use it again from the serial.

Once the firmware is uploaded and the module is connected to the Serial port, open the Arduino software and include the following libraries:TKLCD, LiquidCrystal and Wire. The TKLCD library has two different classes, one for each use; in our case, we are using it via serial port so we have to declare it as TKLCD_Serial in the globals (before the setup):

TKLCD_Serial lcd = TKLCD_Serial();

2. Stand-alone

One of the cool features of the LCD module is that it doesn’t need an Arduino or TinkerKit! shield to run. It can be connected straight to the USB port of your computer exactly like an Arduino Leonardo, then, once the code is finished, just select “Arduino Leonardo” from the board’s list and upload. To control the LCD we have to include the following libraries: TKLCD, LiquidCrystal and Wire, then declare the LCD as TKLCD_Local in the globals (before the setup):

TKLCD_Local lcd = TKLCD_Local();

After initializing it in the setup using:


From now on we have a series of methods that we can apply to the lcd object it inside the loop function. Just browse into the examples folder of the TKLCD library or read the library’s reference to see all of them.

Try with:


The TinkerKit! LCD module mounts nine connectors on the board. Six of these, the ones with the three-pins layout, can be used with other TinkerKit! modules. Don’t be confused by the labels, the A0, A1 and A2 are analog inputs and D5, D6 and D11 are outputs but they can also be used as digital inputs. Use them like regular inputs and outputs, just remember to include the TinkerKit! library in addition to the TKLCD and to declare them using the right port:

TKLed led(D1);

In the following sketch we use the LCD module to display the temperature. We use it as a stand-alone module with a thermistor connected directly to one of its input ports.

#include <TinkerKit.h>
#include <matrix_lcd_commands.h>
#include <TKLCD.h>
#include <LiquidCrystal.h>
#include <Wire.h>

TKLCD_Local lcd = TKLCD_Local();
TKThermistor therm(A0);

void setup() {

void loop() {

  int temp = therm.getCelsius();

  lcd.print("Temp: ");

  1. February 26, 2013


    HelloHi, I wanted to know where I can buy the lcd module TinkerKit.
    and if possible in an Italian site.

    • Avatar of admin
      February 26, 2013


      At the moment it’s available only from Radioshack US.

      Soon it will be distributed worldwide and on the Arduino store. We are still waiting for an official release date, stay tuned.

  2. March 12, 2013


    I have just bought the LCD module and the TinkerKIt Starter Kit. Is there a possible way to connect the two so I can send a signal from my Arduino to the LCD so the Arduino can send a signal to the LCD telling it to display something? (Both separately programed, no serial)

  3. Avatar of admin
    March 12, 2013


    You can connect an output to an input and make some tests. Mind that the output is pwm so the value that you’ll read are a series of zeros and 1023.

  4. Avatar of justinj77
    March 13, 2013


    Ihave hooked up my LCD as directed in the “Two Wire Tutorial” and things were working fine for me. Now after some mysterious gremlins got to it, my display now scrolls strange fonts and symbols. Any help would be great. thanks in advance.

  5. March 14, 2013


    Since running this from the Arduino at 5v makes for a very dim screen. What is the maximum voltage that I can apply to the lcd? I wasn’t able to find a data sheet.

    • Avatar of admin
      March 18, 2013


      You can apply up to 9V. More than 9V can damage the board.

  6. March 29, 2013


    Is this compatable with the Arduino mega? I couldn’t get it to work.

    • Avatar of admin
      April 2, 2013


      How are you wiring it to the Mega?

  7. May 5, 2013


    Do you have a layout of the analog inputs, as in what is power, ground and input?

    • Avatar of admin
      May 6, 2013


      hi, if you look at the tk cables, they have three wires.
      Red is where power is, black is ground and orange is input

  8. May 8, 2013


    Good morning,
    I have a problem with TKLCD: I followed the directions to install and import the library on the lcd monitor of Arduino TinkerKit but does not read that monitor.
    Classe TKLCD isn’t highlighted in red but remains in black.
    I do not know if it’s a hardware problem or a problem with some library is not installed on my PC.
    The link I followed for installation are:

    1) I downloaded the library to the link

    2) I followed the instructions at the link

    and then I also connected to the display with a microusb the computer to load the “SerialFirmware.”
    With this last upload I had problems because it did not recognize the door “Serial1″, so I entered the Serial port and output is returned in the following problem:

    “stk500_getsync (): not in sync: resp = 0×00″, as if he could to load the drivers.

    I kindly ask if you can have your help, since on the forums that I tried I could not solve the problem.
    I have Arduino 1.0 and operating system Windows 7 Home Premium, 64 bit.
    Thank you very much.
    Domenico Guadagno

    • Avatar of admin
      May 8, 2013


      hi, when you say that “it did not recognize the door Serial1″, what are you referring to? Is the TinkerKit! LCD that gives you the error “resp=0×00″ ? If you press the reset button on the LCD board, does it blink?

  9. May 8, 2013


    Thank you to response, i solved problem.


  10. May 9, 2013

    Jordi Blanch

    Hello, I’ve several questions about this board:
    1.- Can I use it as a standalone Arduino board?
    2.- How do I power it as a standalone Arduino board? Is USB connector the only way to power it as a standalone board? Which voltage levels does it accept?
    3.- Is there any place where I can download some kind of hardware reference, so I can know which are the available pinouts, which is the processor and which are the possibilities for programming?

    Thank you!

    • Avatar of admin
      May 9, 2013



      1- Yes, it works like an Arduino Leonardo, from the page:
      “One of the cool features of the LCD module is that it doesn’t need an Arduino or TinkerKit! shield to run. It can be connected straight to the USB port of your computer exactly like an Arduino Leonardo, then, once the code is finished, just select “Arduino Leonardo” from the board’s list and upload. To control the LCD we have to include the following libraries: TKLCD, LiquidCrystal and Wire, then declare the LCD as TKLCD_Local in the globals (before the setup):”

      2- The board doesn’t have a connector for external power like the arduino boards, but you can power it via the micro usb port and plug the wire into the wall, using a phone charger or any adapter. It can be also powered via serial or any other input port. Unlike arduino boards this can ONLY work at 5v

      3- At the moment we don’t release the hardware design, but if you have some specific questions we can help you. The processor is the same as the Arduino Leonardo that is a 32u4.

      • May 9, 2013

        Jordi Blanch

        Ok, thank you for your answer, so I’ll need for my application:
        .- 2 external digital inputs routed as interrupts to the uC.
        .- 1 external digital input for a button sensing.
        .- 3 digital outputs to light 3 leds.
        .- 1 serial connection to communicate with a PC.

        Do you think we can use your LCD module for this purpose?

        Thank you very much.

        • Avatar of admin
          May 9, 2013


          the LCD module has on board 3 digital PWM output, three analog input, two TWI ports and one Serial

          • May 9, 2013

            Jordi Blanch

            Thank you for your answer. I apologise if I ask too many questions, but I know almost nothing about Arduino…

            Can I route 2 of these 3 analog inputs to use them as interrupts in the uC?

            Thank you again.

  11. Avatar of admin
    May 9, 2013


    unfortunately you can’t use an analog input to interrupt, there’s a dedicated pin for that, that is not available on the TKLCD.

    • May 9, 2013

      Jordi Blanch

      Ok, thank you.

  12. May 16, 2013


    Hi there! I have the LCD and an Arduino Due – everything compiles and works when I use USB, and the compile will succeed when I’m compiling against the Uno but I’m getting some compile errors when compile against the Due board. I double checked all of the libraries and even looked at the header to see if that was the issue, but it’s still not working. Here’s the error that I’m getting: /Users/USRNAME/Documents/Arduino/libraries/TKLCD/TKLCD.cpp: In member function ‘void TKLCD_Local::begin()’:
    /Users/USRNAME/Documents/Arduino/libraries/TKLCD/TKLCD.cpp:196: error: ‘TCCR1B’ was not declared in this scope
    I was wondering if this is because the Due is fairly new, but then again I’m pretty new to this stuff too. Any ideas?

    • Avatar of admin
      May 16, 2013


      Hello, are you also including LiquidCrystal and Wire with TKLCD?

      • May 16, 2013


        Yeah – Here’s my code:

        void setup() {
        TKLCD_Serial lcd = TKLCD_Serial();
        lcd.print(“Bleep Blop Bloop!”);

        void loop() {


        I’m compiling with Arduino 1.5.2 against the Arduino Due board. Thanks for your help!

        • May 16, 2013


          Sorry, the includes didn’t display properly
          #include Wire.h
          #include LiquidCrystal.h
          #include matrix_lcd_commands.h
          #include TKLCD.h

          • October 17, 2013


            I have the same problem :(

  13. Avatar of Matt
    May 24, 2013


    I want to add a display to the Arduino motor shield to report speed settings, etc. I see that the motor shield has a TWI connector, can I use the two together?
    Many thanks,

    • Avatar of Matt
      May 26, 2013


      Never mind, I found the answer. Regards,

  14. June 24, 2013


    I’m having a weird issue with the Tinkerkit LCD module. I’m using it to read and display three separate voltages on the three analog input pins. The code I wrote works fine but I’m getting bad readings off of the A1 analog pin. If I hook a voltage source up to A0 and read that pin, I get the expected voltage from A0; however, I also get a “voltage” signal coming off of the A1 pin even if nothing is hooked to it.

    Then, if I hook up voltage to the A1 pin and read it, I can’t get anything to register…..either off of the A0 (which is of course expected) or the A1 pin (which is not expected). If I then hook up a voltage to the A2 pin and read it, I get a good voltage reading from it and zero’s off of the other two pins. Here’s something to make the scenario a little more clear:

    5vdc input to A0 only:
    A0 reads 5vdc; A1 reads ~4vdc; A2 reads 0vdc
    5vdc input to A1 only:
    A0 reads 0vdc; A1 reads 0vdc; A2 reads 0vdc
    5vdc input to A2 only:
    A0 reads 0vdc; A1 reads 0vdc; A2 reads 5vdc

    So……any ideas out there? Is there a possibility my board is malfunctioning?

    • Avatar of matteo
      June 25, 2013


      When analog input ports are not connected, their behavior is unpredictable and it depends from different factors, as stated on the Arduino analogRead reference:

      “If the analog input pin is not connected to anything, the value returned by analogRead() will fluctuate based on a number of factors (e.g. the values of the other analog inputs, how close your hand is to the board, etc.).”

      Though from your description, it’s not normal that if you connect something on A1, you can’t see any variations. Have you tried to connect a regular sensor on the A1 pin?

      • June 25, 2013



        Yeah…..I noticed that statement on the Arduino analogRead statement as well and to answer your question about connecting a sensor to A1, no I haven’t tried that although I did probe A1 with a voltmeter last night. It’s reading ~11mV whereas A0 and A2 read a true zero volts. And that was a reading with absolutely NO power supplied to any of the pins! Another weird symptom….in my original comment, I had said that I wasn’t seeing any voltage coming from A1 even if I connected a power source to A1.

        “5vdc input to A1 only:
        A0 reads 0vdc; A1 reads 0vdc; A2 reads 0vdc”

        Yet last night I tried something different. I commented out the bit of code that read from pins A0 and A2. When I did that, A1 would display a voltage (albeit an incorrect voltage) whether I have a supply connected to it or not. It’s very weird!

        • Avatar of matteo
          June 25, 2013


          yes that’s how Arduino board generally work, the output of analog ports that are not connected it’s really unpredictable. Also without powering the specific connector, it’s enough to power the board to see some random output from the analog ports.

          To test if your board is fine, you can try to to connect a sensor and read the values, if they are fine, it’s just regular Arduino behavior.

          • June 25, 2013


            OK, thanks for your help Matt. Much appreciated.

  15. June 27, 2013


    Hm – I’ve downloaded and installed TKLCD, installed the v0.2 firmware, and when running the ‘Everything’ sketch from the examples folder (after modifying it to use TKLCD_Local rather than TKLCD_Serial – connected directly via USB) there are a lot of oddnesses. There are two extra non-characters (three horizontal lines) after the initial text strings, autoscroll and blink don’t work, and other oddness.

    Have I done something wrong? I even re-uploaded the firmware with the RESET_FIRMWARE flag set, but no love.

    • Avatar of matteo
      July 1, 2013


      The problem with the “Everything” example it’s in the println, that stopped working with new version of the library.

      Now we updated the library page, you can download the new TKLCD library, where all the issues mentioned above are working fine. We also added an “Autoscroll” example

      • July 3, 2013


        Thanks so much! I will grab the new lib.

  16. July 18, 2013


    Hi, I like the look of this board as a kind of Arduino LCD mashup in a good formfactor!
    I wonder, as I would like to add another shield/breakout board connected by SPI or i2c, can I access the pins for this from the tinkerkit connectors, or the ICSP header?
    Also any stockists in UK currently?

    • Avatar of matteo
      July 22, 2013


      Yes you can, the board has the ICSP connector

  17. September 11, 2013

    joe w

    I am confused as to what to call the ports on the lcd I see teh A0 A1 A2 and D5 D6 D12 labels. what do i call them in the IDE? for example TKThermistor therm(A0); in the example above clearly means the A0 port but what about the digital ones? in the example for TKDigital switch1(I0); you use a sensor shield i dont have one but i do have a motor shield. Simply put what are the corresponding pinouts of the 3 white and 3 orange connectors as in what do i call each one in sketches. on the sensor shield they are labeled o0 o1 o2 etc. but on the lcd its labeled D6 first then D5 below it Then D12 so yeah I am confused

  18. September 22, 2013


    I tried using lcd.noDisplay() to turn off the light on the display, but it only turns off the letters. My goal is to fully turn off lighting on the LCD in order to conserve the battery that is powering the whole TinkerKit.

    • September 27, 2013


      Never mind, you need to use lcd.setBrightness(0);

  19. October 4, 2013


    I have just picked up two Tinkerkit LCDs from local supplier who is clearing them out. Fired up both as standalone USB mode and attempted to upload the serial_firmware and now both are not recognized as USB connections. I am running MintLinux latest with Arduino 1.0.5 just uploaded. At this point both boards are behaving the same way now. I no longer have the LCD startup message with no back light. The leds indicate initial port startup but cease after a few seconds. I attempted to also use the method discribed on for loading programs on the Leonardo/Micro boards to no avail. I do not find enough in the help discussions above to work out of this. I hope I have not locked my board. I have not attempted the serial or ICSP ports to see if the board is attempting to communicate. Any help out there, Thanks ahead of time LarryU.

    • October 23, 2013


      I am using ICSP to reprogram my TinkerKit LCD modules, and I’m not using the TKLCD library. Main reason I’m doing this is to adapt the MPGuino (open source Arduino-based fuel economy monitoring gauge) software to use the TinkerKit LCD module, and program space is at a premium. The module almost completely supports the MPGuino code – I just need to add a few resistors, zener diodes, capacitors, and pushbutton switches to complete it.

  20. October 25, 2013


    Please Help!

    T00006x drivers refuse to properly install under windows XP.

    Please explain what I need to do to correct the USB IO Board that result after the Tinker LCD show and ten the USB status changes and the USB port disappears.

    Thank you.

  21. April 18, 2014

    cheap Marc Jacobs Bags

    Heya i’m for the first time here. I came across this board and
    I find It truly useful & it helped me out a lot.
    I hope to give something back and help others like you aided me.

Leave a comment