Andy K
/
Roomba
Diff: main.cpp
- Revision:
- 0:b26b94a6a065
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Dec 01 19:20:43 2010 +0000 @@ -0,0 +1,46 @@ + +#include "Roomba.h" + +DigitalOut myled(LED1); +Roomba roomba(p9, p10); + +int main() { + + // Examples of sending commands. Note that when + // teh function returns, if it was successful + // it returns the command code. Otherwise it + // will return Roomba::NotIdle which means it + // couldn't send the command because the serial + // port was busy reading sensor data. + int result = roomba.command(Roomba::CmdPower); + if (result != Roomba::CmdPower) { + // Failed to send command because the + // serial port was busy getting sensor data + } + + // A sure fire way to make the command happen. + while (roomba.command(Roomba::CmdPower) != Roomba::CmdPower); + + // Some commands have additional bytes, heres an example + char leds[3]; + leds[0] = 0x01; // First byte sent + leds[1] = 0x05; + leds[2] = 0x76; // Last byte sent + roomba.command(Roomba::CmdLeds, 3, leds); + + // Sensors are read automartically. Here's how we + // get the wall sensor and voltage values. + uint8_t wall = roomba.sensor(Roomba::wall); + uint16_t voltage = roomba.sensor(Roomba::voltage); + + // Note, when reading sensor data make sure your variable + // is of the right type, either uint8_t for single byte + // and uint16_t for double byte variables. + + while(1) { + myled = 1; + wait(0.2); + myled = 0; + wait(0.2); + } +}