5. Arduino Libraries for the Orangutan and 3pi Robot

5.a. OrangutanAnalog - Analog Input Library
5.b. OrangutanBuzzer - High-Level Buzzer Control Library
5.c. OrangutanLCD - LCD Control Library
5.d. OrangutanLEDs - LED Control Library
5.e. OrangutanMotors - Motor Control Library
5.f. OrangutanPushbuttons - Pushbutton Interface Library
5.g. Pololu3pi - Sensor Library for the 3pi Robot

Note: Because the Orangutans were not designed as official Arduino boards, and run at 20 MHz instead of 16 Mhz, not all existing Arduino library code will be directly compatible with them. Also, Orangutan-specific libraries might conflict with existing Arduino libraries if the two are competing for the same hardware peripherals (e.g. two libraries that try to use Timer1 in different ways will not be compatible).


This section provides a series of Orangutan-specific libraries that will allow you to easily interface with the Orangutan/3pi hardware from the Arduino environment. It is important to note that the Baby Orangutan B is a hardware subset of the larger Orangutan SV-xx8 and LV-168, and these Orangutans are (almost) a hardware subset of the 3pi robot. What this means is that any library code that works on the Baby Orangutan B will also work on the Orangutan and 3pi robot, and (almost) any library code that works on the Orangutan will also work on the 3pi. The following subsections contain detailed documentation of each Orangutan Arduino library. All of the libraries that apply to the Orangutan will work for the corresponding hardware on the 3pi robot.

The only library class for which it is meaningful to have multiple instances is PololuQTRSensors. All the other classes consist entirely of static methods, so it does not make sense to instantiate them multiple times. The only library classes that need to be explicitly initialized before they are used are PololuQTRSensors and Pololu3pi, since these objects are initialized with user-specified parameters. None of the remaining Orangutan library objects needs to be explicitly initialized in your setup() function as initialization is automatically performed when needed.

As of version 101215, the C versions of the library functions are also available for use in your Arduino programs. This means that there are three possible ways for you to call library methods:

unsigned int x;

// C++ function through instantiated object
OrangutanAnalog analog; // this line is usually placed above setup()
x = analog.readTrimpot();

// C++ function through class scope
x = OrangutanAnalog::readTrimpot();

// C function
x = read_trimpot();

Usage examples

Most libraries come with at least one example sketch that demonstrates how the library can be used. To load an example sketch, open the Arduino IDE and go to File > Examples > Orangutan____.

The Pololu3pi library comes with several detailed line-following and maze-solving example sketches that can be loaded using File > Examples > Pololu3pi.

If you cannot find these examples in the Examples menu, make sure that you have followed the installation instructions in Section 3 and try restarting the Arduino IDE.

Related Products

Baby Orangutan B-328 + USB Programmer Combo
Baby Orangutan B-48 + USB Programmer Combo
Baby Orangutan B-168 + USB Programmer Combo
3pi Robot + USB Programmer + Cable Combo
Orangutan LV-168 + USB Programmer Combo
Orangutan SV-168 Robot Controller
Orangutan SV-168 + USB Programmer Combo
Orangutan SV-328 + USB Programmer Combo
Baby Orangutan B-328 + USB AVR Programmer Combo
Baby Orangutan B-48 + USB Programmer Combo
Orangutan LV-168 + USB Programmer Combo
Orangutan SV-328 + USB Programmer Combo
3pi Robot + USB Programmer Combo
Orangutan SV-328 Robot Controller
Orangutan LV-168 Robot Controller
Baby Orangutan B-48 Robot Controller
Baby Orangutan B-328 Robot Controller
Pololu 3pi Robot
Log In
Pololu Robotics & Electronics
Shopping cart
(702) 262-6648
Same-day shipping, worldwide
Shop Blog Forum Support
My account Comments or questions? About Pololu Contact Ordering information Distributors