Yosuke Kirihata / Mbed 2 deprecated Nucleo_roomba

Dependencies:   mbed

Committer:
YosukeK
Date:
Wed Jan 21 16:20:12 2015 +0000
Revision:
1:aed433d882c9
Parent:
0:32eb0835b5a3
Child:
2:144ca2f5d850
Second commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YosukeK 0:32eb0835b5a3 1 #include "mbed.h"
YosukeK 0:32eb0835b5a3 2 #include "Roomba.h"
YosukeK 0:32eb0835b5a3 3 #include "EventArg.h"
YosukeK 0:32eb0835b5a3 4
YosukeK 0:32eb0835b5a3 5 /*
YosukeK 0:32eb0835b5a3 6 * ルンバ向けイベント引数クラス
YosukeK 0:32eb0835b5a3 7 */
YosukeK 1:aed433d882c9 8 //class RoombaEventArg : public EventArg
YosukeK 1:aed433d882c9 9 //{
YosukeK 1:aed433d882c9 10 // typedef EventArg base;
YosukeK 1:aed433d882c9 11 //
YosukeK 1:aed433d882c9 12 // public:
YosukeK 1:aed433d882c9 13 // //RoombaEventArg(int leftWheetVelocity, int rightWheelVelocity} {
YosukeK 1:aed433d882c9 14 //
YosukeK 1:aed433d882c9 15 // //}
YosukeK 1:aed433d882c9 16 //
YosukeK 1:aed433d882c9 17 // RoombaEventArg() {
YosukeK 1:aed433d882c9 18 // leftWheetVelocity = 0;
YosukeK 1:aed433d882c9 19 // rightWheelVelocity = 0;
YosukeK 1:aed433d882c9 20 // };
YosukeK 1:aed433d882c9 21 //
YosukeK 1:aed433d882c9 22 // public:
YosukeK 1:aed433d882c9 23 // int leftWheetVelocity;
YosukeK 1:aed433d882c9 24 // int rightWheelVelocity;
YosukeK 1:aed433d882c9 25 //};
YosukeK 0:32eb0835b5a3 26
YosukeK 0:32eb0835b5a3 27 //
YosukeK 0:32eb0835b5a3 28 ///*
YosukeK 0:32eb0835b5a3 29 // * ルンバ制御クラスの実装クラス
YosukeK 0:32eb0835b5a3 30 // */
YosukeK 0:32eb0835b5a3 31 //class ImplRoomba : protected Roomba {
YosukeK 0:32eb0835b5a3 32 // typedef Roomba base;
YosukeK 0:32eb0835b5a3 33 //
YosukeK 0:32eb0835b5a3 34 // private:
YosukeK 0:32eb0835b5a3 35 // DigitalOut _led;//Notify()で使用するLED:ルンバ状態を通知する
YosukeK 0:32eb0835b5a3 36 //
YosukeK 0:32eb0835b5a3 37 // public:
YosukeK 0:32eb0835b5a3 38 // ImplRoomba(PinName tx, PinName rx, PinName led) :Roomba(tx, rx), _led(led){
YosukeK 0:32eb0835b5a3 39 // _led = 0;
YosukeK 0:32eb0835b5a3 40 // Roomba::attachSerialReceiveCallback();
YosukeK 0:32eb0835b5a3 41 // }
YosukeK 0:32eb0835b5a3 42 //
YosukeK 0:32eb0835b5a3 43 // /*
YosukeK 0:32eb0835b5a3 44 // * @bref 送信メソッド
YosukeK 0:32eb0835b5a3 45 // */
YosukeK 0:32eb0835b5a3 46 // virtual bool ImplRoomba::send(RoombaEventArg e) {
YosukeK 0:32eb0835b5a3 47 // _led != _led;
YosukeK 0:32eb0835b5a3 48 // base::start();
YosukeK 0:32eb0835b5a3 49 // base::mode(Roomba::Full);//(Roomba::Mode::Full); If write struct Mode and no name enum, Compiler say no sutable constructor conver to enum...
YosukeK 0:32eb0835b5a3 50 // base::drive(e.leftWheetVelocity, e.rightWheelVelocity);
YosukeK 0:32eb0835b5a3 51 //
YosukeK 0:32eb0835b5a3 52 // return true;
YosukeK 0:32eb0835b5a3 53 // }
YosukeK 0:32eb0835b5a3 54 //
YosukeK 0:32eb0835b5a3 55 // /*
YosukeK 0:32eb0835b5a3 56 // * @bref 状態通知メソッド
YosukeK 0:32eb0835b5a3 57 // */
YosukeK 0:32eb0835b5a3 58 // virtual void ImplRoomba::notify(bool result) {
YosukeK 0:32eb0835b5a3 59 // if (result == false) {
YosukeK 0:32eb0835b5a3 60 // _led = 1;
YosukeK 0:32eb0835b5a3 61 // } else {
YosukeK 0:32eb0835b5a3 62 // _led = 0;
YosukeK 0:32eb0835b5a3 63 // }
YosukeK 0:32eb0835b5a3 64 // }
YosukeK 0:32eb0835b5a3 65 //
YosukeK 0:32eb0835b5a3 66 // /*
YosukeK 0:32eb0835b5a3 67 // * @bref 周期タイマコールバック
YosukeK 0:32eb0835b5a3 68 // */
YosukeK 0:32eb0835b5a3 69 // virtual void ImplRoomba::periodicCallback(RoombaEventArg e) {
YosukeK 0:32eb0835b5a3 70 // base::periodicCallback(e);
YosukeK 0:32eb0835b5a3 71 // }
YosukeK 0:32eb0835b5a3 72 //};
YosukeK 0:32eb0835b5a3 73
YosukeK 0:32eb0835b5a3 74
YosukeK 0:32eb0835b5a3 75 Ticker ticker;
YosukeK 0:32eb0835b5a3 76
YosukeK 0:32eb0835b5a3 77 Serial pc(SERIAL_TX, SERIAL_RX);
YosukeK 0:32eb0835b5a3 78
YosukeK 0:32eb0835b5a3 79 //匿名クラスでオーバーライドした書き方がしたい
YosukeK 0:32eb0835b5a3 80 //Roomba
YosukeK 0:32eb0835b5a3 81 Roomba roomba(SERIAL_TX, SERIAL_RX, LED1);/* = new Roomba: IRoomba {
YosukeK 0:32eb0835b5a3 82 bool Roomba::send() {
YosukeK 0:32eb0835b5a3 83 //start, mode, drive
YosukeK 0:32eb0835b5a3 84 return true;
YosukeK 0:32eb0835b5a3 85 }
YosukeK 0:32eb0835b5a3 86 void Roomba::notify() {}
YosukeK 0:32eb0835b5a3 87 };*/
YosukeK 0:32eb0835b5a3 88
YosukeK 0:32eb0835b5a3 89 //Ticker no kawari.
YosukeK 0:32eb0835b5a3 90 int main() {
YosukeK 0:32eb0835b5a3 91 //ticker.attach(roomba.periodicCallback, 0.1);
YosukeK 0:32eb0835b5a3 92
YosukeK 0:32eb0835b5a3 93 //TODO:Serial receive message.
YosukeK 1:aed433d882c9 94
YosukeK 1:aed433d882c9 95 int leftWheelVelocity = 500;
YosukeK 1:aed433d882c9 96 int rightWheelVelocity = -500;
YosukeK 1:aed433d882c9 97
YosukeK 1:aed433d882c9 98 EventArg e;//(leftWheelVelocity, rightWheelVelocity);
YosukeK 1:aed433d882c9 99 e.leftWheetVelocity = leftWheelVelocity;
YosukeK 1:aed433d882c9 100 e.rightWheelVelocity = rightWheelVelocity;
YosukeK 0:32eb0835b5a3 101
YosukeK 1:aed433d882c9 102 while (true) {
YosukeK 0:32eb0835b5a3 103 roomba.periodicCallback(e);
YosukeK 0:32eb0835b5a3 104 wait_ms(100);
YosukeK 0:32eb0835b5a3 105 }
YosukeK 0:32eb0835b5a3 106 }