Xiaofei Qiu / Command
Committer:
Xiaofei
Date:
Sat Nov 28 02:34:41 2015 +0000
Revision:
3:97a5a3744481
Parent:
2:3d1c13d63966
Child:
4:3fbe2d75f7eb
C

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Xiaofei 0:4bc34a5fcc29 1 #pragma once
Xiaofei 0:4bc34a5fcc29 2 #include "Command.h"
Xiaofei 0:4bc34a5fcc29 3 #include "mbed.h"
Xiaofei 1:13c4bf8989d5 4 #include "Motor.h"
Xiaofei 0:4bc34a5fcc29 5
Xiaofei 2:3d1c13d63966 6 Motor _RIGHT_WHEEL(p25, p6, p5); // Motor A pwm, fwd, rev
Xiaofei 2:3d1c13d63966 7 Motor _LEFT_WHEEL(p26, p7, p8); // Motor B pwm, fwd, rev
Xiaofei 3:97a5a3744481 8 DigitalOut _STBY(p12); // Set STBY = 1, enable both motor; Set STBY = 0; disable both motor.
Xiaofei 2:3d1c13d63966 9 AnalogIn _IR(p17); // IR sensor
Xiaofei 1:13c4bf8989d5 10 DigitalOut _LED1(LED1);
Xiaofei 1:13c4bf8989d5 11
Xiaofei 1:13c4bf8989d5 12 DigitalIn _LEFT_ENCODER(p19);
Xiaofei 1:13c4bf8989d5 13 DigitalIn _RIGHT_ENCODER(p20);
Xiaofei 0:4bc34a5fcc29 14
Xiaofei 3:97a5a3744481 15 Command::Command():_SPEED(0),_IS_NEGATIVE(0)
Xiaofei 1:13c4bf8989d5 16 {}
Xiaofei 1:13c4bf8989d5 17
Xiaofei 3:97a5a3744481 18 void Command::setSpeed(const std::int8_t& sp, const std::int8_t& is_negative)
Xiaofei 1:13c4bf8989d5 19 {
Xiaofei 1:13c4bf8989d5 20 _STBY = 1;
Xiaofei 3:97a5a3744481 21 _SPEED = sp * 0.33;
Xiaofei 3:97a5a3744481 22 _IS_NEGATIVE = is_negative;
Xiaofei 1:13c4bf8989d5 23 }
Xiaofei 0:4bc34a5fcc29 24
Xiaofei 0:4bc34a5fcc29 25 void LedCommand :: execute()
Xiaofei 0:4bc34a5fcc29 26 {
Xiaofei 1:13c4bf8989d5 27 _LED1 = !_LED1;
Xiaofei 0:4bc34a5fcc29 28 }
Xiaofei 0:4bc34a5fcc29 29
Xiaofei 0:4bc34a5fcc29 30 void TurnLeftCommand :: execute()
Xiaofei 0:4bc34a5fcc29 31 {
Xiaofei 1:13c4bf8989d5 32 _STBY = 1;
Xiaofei 3:97a5a3744481 33 if(_IS_NEGATIVE)
Xiaofei 3:97a5a3744481 34 {
Xiaofei 3:97a5a3744481 35 _RIGHT_WHEEL.speed(-_SPEED);
Xiaofei 3:97a5a3744481 36 _LEFT_WHEEL.speed(-0.2);
Xiaofei 3:97a5a3744481 37 }
Xiaofei 3:97a5a3744481 38 else
Xiaofei 3:97a5a3744481 39 {
Xiaofei 3:97a5a3744481 40 _RIGHT_WHEEL.speed(_SPEED);
Xiaofei 3:97a5a3744481 41 _LEFT_WHEEL.speed(0.2);
Xiaofei 3:97a5a3744481 42 }
Xiaofei 0:4bc34a5fcc29 43 }
Xiaofei 0:4bc34a5fcc29 44
Xiaofei 0:4bc34a5fcc29 45 void TurnRightCommand :: execute()
Xiaofei 0:4bc34a5fcc29 46 {
Xiaofei 1:13c4bf8989d5 47 _STBY = 1;
Xiaofei 3:97a5a3744481 48 if(_IS_NEGATIVE)
Xiaofei 3:97a5a3744481 49 {
Xiaofei 3:97a5a3744481 50 _RIGHT_WHEEL.speed(-0.2);
Xiaofei 3:97a5a3744481 51 _LEFT_WHEEL.speed(-_SPEED);
Xiaofei 3:97a5a3744481 52 }
Xiaofei 3:97a5a3744481 53 else
Xiaofei 3:97a5a3744481 54 {
Xiaofei 3:97a5a3744481 55 _RIGHT_WHEEL.speed(0.2);
Xiaofei 3:97a5a3744481 56 _LEFT_WHEEL.speed(_SPEED);
Xiaofei 3:97a5a3744481 57 }
Xiaofei 0:4bc34a5fcc29 58 }
Xiaofei 0:4bc34a5fcc29 59
Xiaofei 0:4bc34a5fcc29 60 void MoveForwardCommand :: execute()
Xiaofei 0:4bc34a5fcc29 61 {
Xiaofei 3:97a5a3744481 62 //_STBY = 1;
Xiaofei 3:97a5a3744481 63 //_RIGHT_WHEEL.speed(0.5);
Xiaofei 3:97a5a3744481 64 //_LEFT_WHEEL.speed(0.5);
Xiaofei 0:4bc34a5fcc29 65 }
Xiaofei 0:4bc34a5fcc29 66
Xiaofei 0:4bc34a5fcc29 67 void MoveBackwardCommand :: execute()
Xiaofei 0:4bc34a5fcc29 68 {
Xiaofei 1:13c4bf8989d5 69
Xiaofei 3:97a5a3744481 70 //_STBY = 1;
Xiaofei 3:97a5a3744481 71 //_RIGHT_WHEEL.speed(_RIGHT_SPEED);
Xiaofei 3:97a5a3744481 72 ////_LEFT_WHEEL.speed(_LEFT_SPEED);
Xiaofei 0:4bc34a5fcc29 73 }
Xiaofei 0:4bc34a5fcc29 74
Xiaofei 0:4bc34a5fcc29 75 void StopCommand :: execute()
Xiaofei 0:4bc34a5fcc29 76 {
Xiaofei 3:97a5a3744481 77 //_RIGHT_WHEEL.speed(_RIGHT_SPEED);
Xiaofei 3:97a5a3744481 78 //_LEFT_WHEEL.speed(_LEFT_SPEED);
Xiaofei 0:4bc34a5fcc29 79 }
Xiaofei 0:4bc34a5fcc29 80