1. Introduction

This document describes the Pololu AVR C/C++ Library, a programming library designed for use with Pololu products. The library is used to create programs that run on Atmel ATmega1284P, ATmega644P, ATmega324PA, ATmega328P, ATmega168 and ATmega48 processors, and it supports the following products:

Pololu 3pi robot: a mega168/328-based programmable robot. The 3pi robot essentially contains an SV-328 and a 5-sensor version of the QTR-8RC, both of which are in the list below.

Pololu Orangutan SVP-1284: based on the mega1284, the SVP-1284 is our newest Orangutan robot controller. It is a super-sized version of the SV-328, with a built-in AVR ISP programmer, more I/O lines, more regulated power, and more memory. It also features hardware that makes it easy to control up to eight servos with a single hardware PWM and almost no processor overhead.

Pololu Orangutan SVP-324: based on the mega324, the SVP-324 is a version of the SVP-1284 with less memory. The two versions are completely code-compatible (the same code will run on both devices as long as it’s small enough to fit on the ATmega324PA).

Pololu Orangutan X2: based on the mega1284, the X2 robot controller is the most powerful Orangutan. It features an auxiliary microcontroller devoted to controlling much of the integrated hardware (it also acts as a built-in AVR ISP programmer) and high-power motor drivers capable of delivering hundreds of watts.

Pololu Orangutan SV-328: a full-featured, mega328-based robot controller that includes an LCD display. The SV-328 runs on an input voltage of 6-13.5V, giving you a wide range of robot power supply options, and can supply up to 3 A on its regulated 5 V bus. This library also supports the original Orangutan SV-168, which was replaced by the SV-328.

Pololu Orangutan LV-168: a full-featured, mega168-based robot controller that includes an LCD display. The LV-168 runs on an input voltage of 2-5V, allowing two or three batteries to power a robot.

Pololu Baby Orangutan B-48: a compact, complete robot controller based on the mega48. The B-48 packs a voltage regulator, processor, and a two-channel motor-driver into a 24-pin DIP format.

Pololu Baby Orangutan B-328: a mega328 version of the above. The mega328 offers more memory for your programs (32 KB flash, 2 KB RAM). This library also supports the Baby Orangutan B-168, which was replaced by the Baby B-328.

Pololu QTR-1A and QTR-8A reflectance sensors (analog): an analog sensor containing IR/phototransistor pairs that allows a robot to detect the difference between shades of color. The QTR sensors can be used for following lines on the floor, for obstacle or drop-off (stairway) detection, and for various other applications.

Pololu QTR-1RC and QTR-8RC reflectance sensors (RC): a version of the above that is read using digital inputs; this is compatible with the Parallax QTI sensors.

Encoder for Pololu Wheel 42×19 mm: a wheel encoder solution that allows a robot to measure how far it has traveled.

The library is written in C++ with C wrapper functions of all of the methods and may be used in three different programming environments:

For more information, see the Pololu AVR C/C++ Library User’s Guide.