1. Introduction

This document is a guide to using the Pololu AVR C/C++ library, including installation instructions, tutorials, and example programs. The Pololu AVR Library makes it easy for you to get started with the following Pololu 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.

For detailed information about all of the functions available in the library, see the command reference.

Note that the library is designed for Atmel’s AVR-based boards like the Orangutans: to use it with the QTR sensors, your controller must be either an Orangutan or another board built with an ATmega48/168/328P or ATmega324PA/644P/1284P AVR microcontroller.

This document covers use of the library in a C/C++ programming environment. Some parts of the library can also be used in the Arduino IDE. See our guide to using Arduino with Orangutan controllers for more information.

If you want to control a Pololu QTR reflectance sensor with an Arduino, please see our Arduino Library for the Pololu QTR Reflectance Sensors.