Eduardo Munoz Gutierrez / Mbed OS mbed-os-micromouse

Dependencies:   Motor

Committer:
edmugu
Date:
Fri May 24 03:40:06 2019 +0000
Revision:
8:14e91fdf70e8
Parent:
0:7676da98b5c1
stash;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edmugu 0:7676da98b5c1 1
edmugu 0:7676da98b5c1 2 #ifndef MBED_MOTOR_H
edmugu 0:7676da98b5c1 3 #define MBED_MOTOR_H
edmugu 0:7676da98b5c1 4
edmugu 0:7676da98b5c1 5 #include "mbed.h"
edmugu 0:7676da98b5c1 6 #include <Motor.h> // DC motor driver
edmugu 0:7676da98b5c1 7
edmugu 0:7676da98b5c1 8 struct Car_vector {
edmugu 0:7676da98b5c1 9 float speed;
edmugu 0:7676da98b5c1 10 float turnCW;
edmugu 0:7676da98b5c1 11 };
edmugu 0:7676da98b5c1 12
edmugu 0:7676da98b5c1 13
edmugu 0:7676da98b5c1 14 class Car {
edmugu 0:7676da98b5c1 15 public:
edmugu 0:7676da98b5c1 16 Car( PinName pwm1,
edmugu 0:7676da98b5c1 17 PinName fwd1,
edmugu 0:7676da98b5c1 18 PinName rev1,
edmugu 8:14e91fdf70e8 19 PinName encoderA1,
edmugu 8:14e91fdf70e8 20 PinName encoderB1,
edmugu 0:7676da98b5c1 21 PinName pwm2,
edmugu 0:7676da98b5c1 22 PinName fwd2,
edmugu 8:14e91fdf70e8 23 PinName rev2,
edmugu 8:14e91fdf70e8 24 PinName encoderA2,
edmugu 8:14e91fdf70e8 25 PinName encoderB2
edmugu 0:7676da98b5c1 26 );
edmugu 0:7676da98b5c1 27
edmugu 8:14e91fdf70e8 28 //Sets the speed as thicks per second(i.e. 1 = 100% and 0.5 = 50%)
edmugu 0:7676da98b5c1 29 void speed(float speed);
edmugu 0:7676da98b5c1 30 float speed(void);
edmugu 0:7676da98b5c1 31
edmugu 0:7676da98b5c1 32 //Sets the speed difference between the motors
edmugu 0:7676da98b5c1 33 // Example 1: if original speed is 50%
edmugu 0:7676da98b5c1 34 // turnCW(0.5) => rightMotor @ 25% and leftMotor @ 75%
edmugu 0:7676da98b5c1 35 // turnCW(0.1) => rightMotor @ 45% and leftMotor @ 55%
edmugu 0:7676da98b5c1 36 //
edmugu 0:7676da98b5c1 37 // Example 2: if original speed is 100%
edmugu 0:7676da98b5c1 38 // turnCW(0.5) => rightMotor @ 75% and leftMotor @ 100%
edmugu 0:7676da98b5c1 39 // turnCW(0.1) => rightMotor @ 95% and leftMotor @ 100%
edmugu 0:7676da98b5c1 40 void turnCW(float turn);
edmugu 0:7676da98b5c1 41
edmugu 0:7676da98b5c1 42 protected:
edmugu 0:7676da98b5c1 43 void _set_motors(void);
edmugu 0:7676da98b5c1 44 float _clamp_speed(float sp);
edmugu 0:7676da98b5c1 45 void _mlspeed(float sp);
edmugu 0:7676da98b5c1 46 void _mrspeed(float sp);
edmugu 8:14e91fdf70e8 47
edmugu 0:7676da98b5c1 48
edmugu 0:7676da98b5c1 49 float _car_speed;
edmugu 0:7676da98b5c1 50 float _car_turn;
edmugu 8:14e91fdf70e8 51
edmugu 8:14e91fdf70e8 52 time_t _last_tick_left;
edmugu 8:14e91fdf70e8 53 time_t _last_tick_right;
edmugu 8:14e91fdf70e8 54 DigitalIn _ml_encoderA;
edmugu 8:14e91fdf70e8 55 DigitalIn _ml_encoderB;
edmugu 8:14e91fdf70e8 56 DigitalIn _mr_encoderA;
edmugu 8:14e91fdf70e8 57 DigitalIn _mr_encoderB;
edmugu 8:14e91fdf70e8 58 bool _ml_encoderA_before;
edmugu 8:14e91fdf70e8 59 bool _ml_encoderB_before;
edmugu 8:14e91fdf70e8 60 bool _mr_encoderA_before;
edmugu 8:14e91fdf70e8 61 bool _mr_encoderB_before;
edmugu 0:7676da98b5c1 62 PwmOut _ml_pwm;
edmugu 0:7676da98b5c1 63 PwmOut _mr_pwm;
edmugu 0:7676da98b5c1 64 DigitalOut _ml_fwd;
edmugu 0:7676da98b5c1 65 DigitalOut _mr_fwd;
edmugu 0:7676da98b5c1 66 DigitalOut _ml_rev;
edmugu 0:7676da98b5c1 67 DigitalOut _mr_rev;
edmugu 0:7676da98b5c1 68
edmugu 0:7676da98b5c1 69 };
edmugu 0:7676da98b5c1 70
edmugu 0:7676da98b5c1 71
edmugu 0:7676da98b5c1 72 #endif