Arduino Uno and Adafruit Touch Shield V2 Phone UI in C
This is part of a broader project of building my own mobile phone, namely the user interface. The code is uploaded to an Arduino Uno (or ATMEGA328P AVR micro-controller), connected to an Adafruit Resistive Touch Shield V2. The Touch Shield integrates an ILI9341 TFT controller for the screen and an STMPE610 controller for the touch input, both via SPI. This is a slow interface for rendering, so the graphics are kept very simple. It is also written in c, which is arguably the preferred language for micro-controllers. The code is written more for speed than readability.
This UI features a nice and simple numerical layout for number dialing and a slick and compact keyboard layout for writing text, covering the non-extended ASCII set. These are accessed via a simple menu and exited via the remaining touch input area just beneath the screen. This covers the most complex UI needs of basic phone communication, ready for use with a phone module.