David's dead reckoning code for the LVBots competition on March 6th. Uses the mbed LPC1768, DRV8835, QTR-3RC, and two DC motors with encoders.
Dependencies: PololuEncoder Pacer mbed GeneralDebouncer
turn_sensor.h
- Committer:
- DavidEGrayson
- Date:
- 2019-07-27
- Revision:
- 42:96671b71aac5
- Parent:
- 40:6fa672be85ec
File content as of revision 42:96671b71aac5:
#pragma once #include <mbed.h> class TurnSensor { // TODO: for production code, you would want a way to set the gyro offset public: void reset(); void start(); void update(); int32_t getAngle() { return (int32_t)angleUnsigned; } uint32_t getAngleUnsigned() { return angleUnsigned; } int16_t getAngleDegrees() { return (((int32_t)angleUnsigned >> 16) * 360) >> 16; } int32_t getAngleMillidegrees() { return ((int64_t)(int32_t)angleUnsigned * 360000) >> 32; } int16_t getRate() { return rate; } private: Timer timer; uint32_t angleUnsigned; int16_t rate; uint16_t gyroLastUpdate; }; // This constant represents a turn of 45 degrees. const int32_t turnAngle45 = 0x20000000; // This constant represents a turn of 90 degrees. const int32_t turnAngle90 = turnAngle45 * 2; // This constant represents a turn of approximately 1 degree. const int32_t turnAngle1 = (turnAngle45 + 22) / 45;