Interface and Application Programming

The challenge:
Write an application that interfaces with an input &/or output device

Plan of attack:
Start working on my final project. Using the PC to do the heavy lifting of database lookup and audio processing. Create a collection of simple and cheap boards to act as the input.

Interface and Application Programming

Back in week 13 we stayed up till 2am to attend class in person. It was really great fun getting to chat with everyone in real time. We also got some really good feed back on our final projects and potential direction. For my project Neil suggested reducing the workload by focusing on the core idea I was trying to demonstrate. To achieve this he suggested offloading the audio processing part of my project to another device like a PC or more powerful embedded board. This week I began to work in that direction by implementing the start of a basic framework to detect simple character modules and play a sound.

To make the input boards I used 8bit shift registers. I happened to have a few of the THT versions lying around the lab so made a quick prototype on a breadboard before milling out a more secure solution. The use of shift registers was mostly a cost consideration as I’ll likely need quite a few of them to demonstrate the concept well and they are less than a third the cost of attiny chips in the kinds of volume I’ll be using. The 8bits still provides plenty of unique IDs for my character set.

The arduino code for this section simply polls the shift registers and pipes their values back over serial.

On the PC side is a processing sketch that reads the serial line and converts it into characters. This will likely change as I expand out the character set to make database lookup easier.

The current revision detects the connected input boards, displays the characters they represent and plays a sound if word exists.

You can read more about how this interface continued to developed on my final project page.
I also did some more research into other systems for encoding and communicating my blocks IDs over here, as well as a cost comparison between shift registers and attinys.

Interface and Application Programming