3.2. User interface
The Balboa 32U4 control board has five indicator LEDs, three of which are user-controllable:
- A yellow user LED is connected to Arduino digital pin 13, or PC7. You can drive this pin high in a user program to turn this LED on. The A-Star 32U4 Bootloader fades this LED on and off while it is waiting for a sketch to be loaded.
- A green user LED is connected to Arduino pin 30, or PD5, and lights when the pin is driven low. While the board is running the A-Star 32U4 Bootloader or a program compiled in the Arduino environment, it will flash this LED when it is transmitting data via the USB connection.
- A red user LED is connected to Arduino pin 17, or PB0, and lights when the pin is driven low. While the board is running the A-Star 32U4 Bootloader or a program compiled in the Arduino environment, it will flash this LED when it is receiving data via the USB connection.
These three user LEDs are all located near the bottom of the board, and the Balboa32U4 library contains functions that make it easier to control them (see Section 6). All three user LED control lines are also LCD data lines, so you will see them flicker when you update the LCD. The green and red user LEDs also share I/O lines with pushbuttons (see below).
The remaining two LEDs are power indicators, and they are located in the top left corner of the board near the USB connector:
- A blue power LED indicates when the controller is receiving power from the Balboa’s batteries (the power switching circuit must be turned on).
- A green power LED indicates when the USB bus voltage (VBUS) is present.
The Balboa 32U4 control board has five pushbuttons: a power button in the bottom left corner, a reset button in the top right corner, and three user pushbuttons located along the bottom edge. The user pushbuttons, labeled A, B, and C, are on Arduino pin 14 (PB3), pin 30 (PD5), and pin 17 (PB0), respectively. Pressing one of these buttons pulls the associated I/O pin to ground through a resistor.
The three buttons’ I/O lines are also used for other purposes: pin 14 is MISO on the SPI interface, pin 30 and pin 17 control the green and red user LEDs, and all three pins are LCD data lines. Although these uses require the pins to be driven by the AVR (or SPI slave devices in the case of MISO), resistors in the button circuits ensure that the Balboa 32U4 control board will not be damaged even if the corresponding buttons are pressed at the same time, nor will SPI or LCD communications be disrupted. The functions in the Balboa32U4 library take care of configuring the pins, reading and debouncing the buttons, and restoring the pins to their original states.
The buzzer included with the Balboa 32U4 control board can be soldered into the designated through-holes and used to generate simple sounds and music. By default, it is connected to digital pin 6 (which also serves as OC4D, a hardware PWM output from the AVR’s 10-bit Timer4). If you alternate between driving the buzzer pin high and low at a given frequency, the buzzer will produce sound at that frequency. You can play notes and music with the buzzer using functions in the Balboa32U4 library. If you want to use pin 6 for an alternate purpose, you can disconnect the buzzer circuit by cutting the surface-mount jumper next to the buzzer.
Balboa 32U4 Balancing Robot with 80×10mm wheels and LCD.
The Balboa 32U4 control board has a 2×7 header where you can connect an 8×2 character LCD with a low-profile male header (or any other LCD with the common HD44780 parallel interface (109k pdf)). You can adjust the LCD contrast with the potentiometer directly above the LCD connector. We recommend using a 2 mm slotted screwdriver to adjust the contrast.
The Balboa32U4 library provides functions to display data on a connected LCD. It is designed to gracefully handle alternate use of the LCD data lines by only changing pin states when needed for an LCD command, after which it will restore them to their previous states. This allows the LCD data lines to be used for other functions (such as pushbutton inputs and LED drivers).
Note that the control board is not designed to allow both an LCD and a Raspberry Pi to plug into it at the same time. However, having a Raspberry Pi header (not included) soldered to the board should not interfere with mounting an LCD, and the on-board LCD connector should not interfere with mounting a Raspberry Pi.