3.2. User interface
The Romi 32U4 Control Board has five indicator LEDs.
- 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.
The Romi32U4 library contains functions that make it easier to control the three user LEDs (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).
- A blue power LED next to the power switch indicates when the controller is receiving power from the Romi’s batteries (the power switching circuit must be turned on).
- A green power LED on the bottom edge of the board near the USB connector indicates when the USB bus voltage (VBUS) is present.
The Romi 32U4 Control Board has five pushbuttons: a power button in the rear left corner, a reset button on the front right edge and three user pushbuttons located along the rear 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 Romi 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 Romi32U4 library take care of configuring the pins, reading and debouncing the buttons, and restoring the pins to their original states.
The Romi 32U4 Control Board has a set of through-holes in the center where a 2×7 header can be soldered to connect an 8×2 character LCD (or any other LCD with the common HD44780 parallel interface (109k pdf)). You can adjust the LCD contrast with the potentiometer on the top right of the LCD connector. We recommend using a 2 mm slotted screwdriver to adjust the contrast.
The Romi32U4 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 an LCD header soldered to the board should not interfere with mounting a Raspberry Pi.
The buzzer included with the Romi 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 Romi32U4 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.