Using the USBHost Library
Published
Reading from a keyboard with USBHost on the Arduino Due
Overview
The Arduino Due supports reading from USB devices through the Arduino USBHost library.
This guide it to print the key presses of a USB keyboard to the serial monitor.
In the Arduino IDE, go to Sketch > Include Library > Manage Libraries (or Tools > Manage Libraries… in the Arduino IDE v2).
In the library manager, type “usbhost” in the search bar and click Install in the box with the USBHost library.
In the Arduino IDE v2:
Setup
Connect the adapter cable to the native USB port and the cable for programming into the programming port. In this case, the blue cable is for programming and the black cable connects the keyboard. Then, connect the keyboard to the adapter cable.
Code
// Include the KeyboardController library
#include <KeyboardController.h>
// Initialize USB Controller
USBHost usb;
// Attach Keyboard controller to USB
KeyboardController keyboard(usb);
void setup() {
Serial.begin(9600); // open a serial port
}
void loop() {
usb.Task();
}
void keyPressed() {
// Get the ASCII value of the key pressed.
int key = keyboard.getKey();
if (key != 19) {
// Pressed key is not 'Enter'
Serial.write(key);
}
else {
// Enter key pressed, start a new line
Serial.println();
}
}
Code Explanation
First, we include the KeyboardController library and set up the keyboard.
In the setup
function, we initialize a serial port. In the loop
function, we call usb.Task
to process keyboard input.
When a key is pressed, we print the key to the serial monitor with Serial.write
. If the pressed key is the enter key, we start a new line.
Running the Code
Make sure the keyboard is plugged into the adapter. Then, open the serial monitor and press some keys on the keyboard.
The serial monitor should behave like a text editor, displaying each pressed key. Press enter to start a new line. This is the output of pressing some keys:
this is a test for usbhost library on arduino due
newline
newline
abcdefg