Encoders¶
The encoders detect how much the wheels have turned. We can use this information to figure out how far the robot has driven.
Sample code¶
#include <dragonfly_lib.h> #include <encoders.h> /* * Drives the robot forward for 1500 encoder distance units */ void encoders_sample(void) { encoders_init(); // must be called before using any encoder code motors_init(); // must be called before using any motors code motor_l_set(FORWARD, 500); // turn on the left motor motor_r_set(FORWARD, 500); // turn on the right motor int distance = 0; // initialize distance variable while(distance < 1500) // while we have traveled less than 1500 distance units, do the following: { distance = encoder_get_x(LEFT); // get the newest encoder value from the left encoder // the right encoder value should be about the same since we are driving straight } // we won't get out of the while loop until we have traveled 1500 distance units // since we got here, we have driven far enough motors_off(); // stop the motors }
Header File¶
For a full list of functions, see the encoders code header file.
Debugging¶
Things to check/maintain:- Check battery
- wheel slop (make sure wheels are not loose)
- encoder board should have 2mm spacing (2 #4 lock washers)
- check wiring on the underside. The wires have gotten pulled out from replacing batteries.
Schematic¶
NOTE: stuff has to be wired up on the board to work. This has something to do with the chip select pins. See some of the robots to get this working