AVR Library Command Reference
Table Of Contents
- Pololu AVR Library Command Reference
- 1. Introduction
- 2. Timing and Delays
- Reference
- 3. Orangutan Analog-to-Digital Conversion
- Reference
- 4. Orangutan Buzzer: Beeps and Music
- Reference
- 5. Orangutan LCD
- Reference
- 6. Orangutan LEDs
- Reference
- 7. Orangutan Motor Control
- Reference
- 8. Orangutan Pushbuttons
- Reference
- 9. Orangutan Serial Port Communication
- Reference
- 10. Orangutan System Resources
- 11. QTR Reflectance Sensors
- Reference
- 12. 3pi Robot Functions
- 13. Wheel Encoders
- Reference
11. QTR Reflectance Sensors
The PololuQTRSensors class and the C functions in this section provide an interface for using Pololu’s QTR
reflectance sensors [http://www.pololu.com/catalog/product/961] together with the Orangutan, Arduino, or other
mega168-based boards. The library provides access to the raw sensors values as well as to high level functions
including calibration and line-tracking.
We recommend not using this part of the library directly on the 3pi. Instead, we have provided an
initialization function and convenient access functions through the Pololu3pi class. See Section 12 for
details.
This section of the library defines an object for each of the two QTR sensor types, with the
PololuQTRSensorsAnalog class intended for use with QTR-xA sensors and the PololuQTRSensorsRC class
intended for use with QTR-xRC sensors. This library takes care of the differences between the QTR-xA and QTR-
xRC sensors internally, providing you with a common interface to both sensors. The only external difference is in
the constructors. This is achieved by having both of these classes derive from the abstract base class
PololuQTRSensors. This base class cannot be instantiated.
The PololuQTRSensorsAnalog and PololuQTRSensorsRC classes are the only classes in the Pololu AVR library
that must be instantiated before they are used. This allows multiple QTR sensor arrays to be controlled
independently as separate PololuQTRSensors objects. The multiple independent array support is not available within
the C environment, but multiple arrays can still be configured as a single array, as long as the total number of
sensors does not exceed 8.
For calibration, memory is allocated using the malloc() command. This conserves RAM: if all eight sensors are
calibrated with the emitters both on an off, a total of 64 bytes would be dedicated to storing calibration values.
However, for an application where only three sensors are used, and the emitters are always on during reads, only 6
bytes are required.
Note that the PololuQTRSensorsRC class uses Timer2 during sensor reads to time the sensor pulses, so it might not
work with code that uses Timer2 for other purposes. Once the sensor read is complete, Timer2 is restored to its
original state; there are no restrictions on its use between sensor reads. The PololuQTRSensorsAnalog class does not
use Timer2 at all, and all of the PololuQTRSensors code is compatible with the other Pololu AVR libraries.
For a higher level overview of this library and example programs that show how this library can be used, please see
the guide Arduino Libraries for the Pololu QTR Reflectance Sensors [http://www.pololu.com/docs/0J19] or Section
6.i of the Pololu AVR C/C++ Library User’s Guide [http://www.pololu.com/docs/0J20].
Pololu AVR Library Command Reference © 2001–2009 Pololu Corporation
11. QTR Reflectance Sensors Page 26 of 35










