Group Project 2: Controlling Hardware

Read time: 11 minutes (2784 words)

Here are the invitations for the second groupproject:

The second group project is designed to get you to look closely at a device that needs to be controlled in a time-sensitive manner. The devices I am letting you use in this project are simple, and that is on purpose. You are now focused on exactly how the device is controlled, and what kind of signals you need to generate or read to interact with that device.

All projects will use the Arduino systems. For some of these projects, you may have already played with the device. In this project, you will not be using any library files you found to control that device for anything but a reference. You will write your own code, in assembly language, to control the device.


The build system for AVR projects will support a mix of assembly and “C” code, so you are free to use Arduino library code to help demonstrate your device in action. Do not use any libraries to actually control the device.

Picking Your Device

Your team needs to select one of the available devices (or, you may provide your own). The provided devices are available on a “first come-first serve” basis.


I may have additional components, so ask if one you like is not available.

After selecting the device, decide how you are going to demonstrate that your device is actually working in a presentation your team will make at the end of the term.

For example, if you select a compass, you will need some way to show that the compass is working. That could involve generating a printout on a PC screen, using a communications library to ley your Arduino send data to the PC for that display. As you turn around and “point” your device in different directions, the display should change showing the correct direction.

Another idea would be to set up a series of LED lights, and light up different LEDs as the direction changes.

Groups can pick additional devices to assist in the demo. These supporting devices can be controlled using “C” code if needed.

Project Report

Each group will prepare a project report on what they accomplished. They will also demonstrate the project in class. Here are the requirements for the report:

Writing code for the component

The routines needed to control these devices will to be written in assembly language for the AVR processor on the Arduino board. Additional support code needed for the demonstration of that device can be written in “C”. We will use the same development process used in lab projects, meaning that we will be using the GNU assembler and Makefile system you use in the lab projects.