Featured Products

Combining the LCD & Keypad Shield and the USBDroid

The USBDroid and the LCD & Keypad Shield can work together quite happily, but there is one little change you need to make first. If you simply plug the LCD & Keypad Shield in it won't work at all and you'll probably be left scratching your head trying to figure out if it's broken.

The problem is that both the LCD & Keypad Shield and the USB host chip on the USBDroid are contending for digital pin D9. The USBDroid uses D9 for the USB Host "UINT" function: the standard library expects to use D9, but it can be changed to an alternative pin in software. The LCD & Keypad Shield also uses D9 by default for the "LCD Enable" line.

There are two ways to get the boards working together: either reassign the UINT function on the USBDroid, or reassign the LCD Enable function on the LCD& Keypad Shield.

Reassign D9 On USBDroid

The quickest and easiest fix to get the LCD & Keypad Shield working on a USBDroid is to temporarily cut the D9 cut-jumper track on the USBDroid board. There's a tiny track connecting the middle and lower jumper pads for UINT in the picture below which can be cut, and either soldered back or jumpered elsewhere (for example, to another unused digital pin) later:

This will leave you without a functioning UINT, but the LCD & Keypad Shield will work.

Reassign D9 on LCD & Keypad Shield

Altering the LCD Enable function on the LCD & Keypad Shield is a little more involved because there's no handy cut-jumper to use, but it can be done by cutting a track directly and jumpering to a different digital pin.

The picture below shows the location of the LCD Enable track going from a pin on the LCD module to D9:

Cut that track somewhere along its length, and then solder a jumper wire to the 6th solder pad from the left on the top of the LCD module. This is where things get tricky - what alternative digital pin can you use? All the dedicated digital pins other than the serial comms pins (D0 and D1) are used by either the LCD & Keypad Shield or the USBDroid. You could use D0 or D1, but that would interfere with USB communications. The other option is to use one of the unused analog input pins A1 to A5, which can be used as regular digital pins even though they have analog-input capability. If you solder the other end of the jumper to the pad for A1, for example, you can alter the LCD initialisation line in your sketch to the following:

LiquidCrystal lcd(8, A1, 4, 5, 6, 7);

The LCD and the USB Host functionality will then both operate simultaneously without pin contention.