Extensions
The core code for Orangutan-lib has almost no cross-dependencies.  The 
only one that exists is that every subsystem includes device.h 
where all of the Orangutan-specific information is stored.  When it came 
time to write code that depended on more than one subsystem, or that built 
on an existing subsystem, rather than run the risk of having multiple 
cross-dependencies between subsystems, we chose to stick these in another 
category:  Extensions.
The extensions represent a lot of hardware-specific examples, like the 
QTI sensors, or examples of devices that rely on I2C or SPI communication 
in order to work, like the SRF08 ultrasound or the MCP4822 DAC.  In 
addition to offering examples for how to build on what's in the basic 
library, they are also fully-functional pieces of code for interfacing to 
specific devices.
 
lcd-bargraph.h / lcd-bargraph.c
lcd-bargraph uses a single character on the Orangutan or Orangutan-X2 
LCD to display a vertical bargraph.  Not much in terms of resolution, but 
it lets you display a number of 8-bit values without taking up too much 
real-estate on the LCD.
lcd_bar_init()
The LCD bargraph does its thing by creating eight custom characters 
that are stored in the HD447780 controller chip on the LCD.  For that to 
happen, lcd_bar_init() needs to be called before the bargraph function is 
used.
 
lcd_bar(data)
lcd_bar() takes an 8-bit value.  A bargraph representing the value (mo 
bar for a value of 0, full bar for a value of 255, intermediate bar for 
values in-between) will be displayed at the current character position on 
the LCD.
 
qti.h / qti.c
The Parallax QTI sensors are a little strange to read.  They're not 
simple analog devices.  In order to read them you need to enable the 
ADC line as a digital output, drain a capacitor, set the ADC line back 
to analog input, wait for the capacitor to charge, and finally read 
it.  It's a simple enough algorithm, but it's handy to have if you use 
these sensors with an Orangutan.
qti10(channel) / qti8(channel)
Both of these read a QTI sensor plugged into the ADC channel of your 
choice.  One reads it in 10-bit mode, the other in 8-bit mode.  qti10() 
returns a 16-bit unsigned int, qti8() returns an 8-bit unsigned int.  
There is no QTI-specific initialization, but the analog subsystem must 
be initialized prior to calling either routine.
 
srf08.h / srf08.c
The Devantech SRF08 sonar module can communicate to a microcontroller 
using the I2C bus.  For the moment please refer to the srf08.c/h 
source code for documentation.  This is a work in progress.