Arduino Pi repository

Arduino Pi logo

Arduino Pi

The Arduino Pi is a single board computer based on Arduino. The Arduino Pi has a six button keyboard known as GKOS, which is an chorded keyboard, and has an LED matrix based display. Right now, the LED matrix is a 5x5 LED matrix that scrolls. It has 4 digital pins for development using the Arduino platform. The scripting language is called Bitlash. Bitlash was used because it was easier to implement in the Arduino sketch than other programming languages such as Python or even Forth.

GKOS Keypad

With the 6 GKOS keys, directly connected to Arduino I/O pins, it is possible to type any text and enter most functions found on the PC keyboard (Alt, Ctrl, Tab...).

How to type

GKOS Alphabet

The GKOS Alphabet.

Letters G, K, O, S and W require two keys, and they also function as modifiers (shifts) changing the characters on other keys. For example, to press A, press the top left button. But to press H, press the top two buttons on the right ( the G key) and the top left button.

Pressing all 6 keys down toggles between numbers and letters. You get backspace by pressing the 3 keys on the left, and space by pressing the 3 keys on the right. The full character set can be found here.

GKOS Hardware

Gkos keypad wiring

The hardware is simply six buttons directly connected to Arduino's pins. In the Arduino Pi project, the analog pins are used.

LED Matrix

The LED matrix is controlled using row-column scanning.

LED displays are often packaged as matrixes of LEDs arranged in rows of common anodes and columns of common cathodes, or the reverse. Here's a typical example of an 8x8 matrix schematic:

The 5x5 LED matrix is used as a scrolling text display to show the results of the commands. For more information about LED matrices and how they are controlled in the Arduino Pi, refer to the Deployment section.

I used the code from the below link and leveraged it for a 5x5 matrix:


Bitlash is an open source interpreted language shell and embedded programming environment for Arduino. The Bitlash shell runs entirely on the Arduino and supports many of the familiar Arduino functions. Bitlash interprets commands you type on the serial port or send from your favorite PC-side programming environment. I have integrated Bitlash with the GKOS keypad so instead of using a serial port to enter commands, the GKOS keypad is used to write Bitlash commands.

Bitlash website:

Free pins

Due to the way the Arduino Pi was laid out, there are 4 digital pins that are free to use when used with an Arduino Uno. Since the Arduino Pi is in its early stages of development (as of June 4, 2014), when Used with different Arduino boards, the number of free pins vary. For example, an Arduino Pro Mini would not only have 4 free digital pins but also 2 free analog pins.

Using free pins

Currently, the only way to use those free pins are by using Bitlash commands.


The repository includes the code, schematic, and PCB files. To view the files, go to or press the "View on Github" button or download the github repository by pressing the "TAR" or "ZIP" download buttons. The entire project is under the Apache License.


To use the code posted in the repository, connect six buttons to the analog pins 0-5 and to the ground. Use a row-column scan LED Matrix (the code supports a 5x5 matrix) and connect them to digital pins 0-9. Refer to the schematic in the github repository

LED matrix controlling

To control the 5x5 matrix, connect both its rows and columns to the Arduino. The columns are connected to the LEDs cathodes (see schematic), so a column needs to be high for any of the LEDs in that column to turn on. The rows are connected to the LEDs anodes, so the row needs to be low for an individual LED to turn on. If the row and the column are both high or both low, no voltage flows through the LED and it doesn’t turn on.

To control an individual LED, set its column high and its row low. To control multiple LEDs in a row, you set the rows high, then take the column high, then set the rows low or high as appropriate; a low row will turn the corresponding LED on, and a high row will turn it off.

Hardware schematics and pictures






LED Matrix:

LED Matrix