Yosuke Kirihata / Mbed 2 deprecated Nucleo_roomba

Dependencies:   mbed

Committer:
YosukeK
Date:
Tue Jan 20 15:58:19 2015 +0000
Revision:
0:32eb0835b5a3
Child:
1:aed433d882c9
First 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 0:32eb0835b5a3 8 class RoombaEventArg : public EventArg
YosukeK 0:32eb0835b5a3 9 {
YosukeK 0:32eb0835b5a3 10 typedef EventArg base;
YosukeK 0:32eb0835b5a3 11
YosukeK 0:32eb0835b5a3 12 public:
YosukeK 0:32eb0835b5a3 13 RoombaEventArg() {
YosukeK 0:32eb0835b5a3 14 leftWheetVelocity = 0;
YosukeK 0:32eb0835b5a3 15 rightWheelVelocity = 0;
YosukeK 0:32eb0835b5a3 16 };
YosukeK 0:32eb0835b5a3 17
YosukeK 0:32eb0835b5a3 18 public:
YosukeK 0:32eb0835b5a3 19 int leftWheetVelocity;
YosukeK 0:32eb0835b5a3 20 int rightWheelVelocity;
YosukeK 0:32eb0835b5a3 21 };
YosukeK 0:32eb0835b5a3 22
YosukeK 0:32eb0835b5a3 23 //
YosukeK 0:32eb0835b5a3 24 ///*
YosukeK 0:32eb0835b5a3 25 // * ルンバ制御クラスの実装クラス
YosukeK 0:32eb0835b5a3 26 // */
YosukeK 0:32eb0835b5a3 27 //class ImplRoomba : protected Roomba {
YosukeK 0:32eb0835b5a3 28 // typedef Roomba base;
YosukeK 0:32eb0835b5a3 29 //
YosukeK 0:32eb0835b5a3 30 // private:
YosukeK 0:32eb0835b5a3 31 // DigitalOut _led;//Notify()で使用するLED:ルンバ状態を通知する
YosukeK 0:32eb0835b5a3 32 //
YosukeK 0:32eb0835b5a3 33 // public:
YosukeK 0:32eb0835b5a3 34 // ImplRoomba(PinName tx, PinName rx, PinName led) :Roomba(tx, rx), _led(led){
YosukeK 0:32eb0835b5a3 35 // _led = 0;
YosukeK 0:32eb0835b5a3 36 // Roomba::attachSerialReceiveCallback();
YosukeK 0:32eb0835b5a3 37 // }
YosukeK 0:32eb0835b5a3 38 //
YosukeK 0:32eb0835b5a3 39 // /*
YosukeK 0:32eb0835b5a3 40 // * @bref 送信メソッド
YosukeK 0:32eb0835b5a3 41 // */
YosukeK 0:32eb0835b5a3 42 // virtual bool ImplRoomba::send(RoombaEventArg e) {
YosukeK 0:32eb0835b5a3 43 // _led != _led;
YosukeK 0:32eb0835b5a3 44 // base::start();
YosukeK 0:32eb0835b5a3 45 // 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 46 // base::drive(e.leftWheetVelocity, e.rightWheelVelocity);
YosukeK 0:32eb0835b5a3 47 //
YosukeK 0:32eb0835b5a3 48 // return true;
YosukeK 0:32eb0835b5a3 49 // }
YosukeK 0:32eb0835b5a3 50 //
YosukeK 0:32eb0835b5a3 51 // /*
YosukeK 0:32eb0835b5a3 52 // * @bref 状態通知メソッド
YosukeK 0:32eb0835b5a3 53 // */
YosukeK 0:32eb0835b5a3 54 // virtual void ImplRoomba::notify(bool result) {
YosukeK 0:32eb0835b5a3 55 // if (result == false) {
YosukeK 0:32eb0835b5a3 56 // _led = 1;
YosukeK 0:32eb0835b5a3 57 // } else {
YosukeK 0:32eb0835b5a3 58 // _led = 0;
YosukeK 0:32eb0835b5a3 59 // }
YosukeK 0:32eb0835b5a3 60 // }
YosukeK 0:32eb0835b5a3 61 //
YosukeK 0:32eb0835b5a3 62 // /*
YosukeK 0:32eb0835b5a3 63 // * @bref 周期タイマコールバック
YosukeK 0:32eb0835b5a3 64 // */
YosukeK 0:32eb0835b5a3 65 // virtual void ImplRoomba::periodicCallback(RoombaEventArg e) {
YosukeK 0:32eb0835b5a3 66 // base::periodicCallback(e);
YosukeK 0:32eb0835b5a3 67 // }
YosukeK 0:32eb0835b5a3 68 //};
YosukeK 0:32eb0835b5a3 69
YosukeK 0:32eb0835b5a3 70
YosukeK 0:32eb0835b5a3 71 Ticker ticker;
YosukeK 0:32eb0835b5a3 72
YosukeK 0:32eb0835b5a3 73 Serial pc(SERIAL_TX, SERIAL_RX);
YosukeK 0:32eb0835b5a3 74
YosukeK 0:32eb0835b5a3 75 //匿名クラスでオーバーライドした書き方がしたい
YosukeK 0:32eb0835b5a3 76 //Roomba
YosukeK 0:32eb0835b5a3 77 Roomba roomba(SERIAL_TX, SERIAL_RX, LED1);/* = new Roomba: IRoomba {
YosukeK 0:32eb0835b5a3 78 bool Roomba::send() {
YosukeK 0:32eb0835b5a3 79 //start, mode, drive
YosukeK 0:32eb0835b5a3 80 return true;
YosukeK 0:32eb0835b5a3 81 }
YosukeK 0:32eb0835b5a3 82 void Roomba::notify() {}
YosukeK 0:32eb0835b5a3 83 };*/
YosukeK 0:32eb0835b5a3 84
YosukeK 0:32eb0835b5a3 85 //Ticker no kawari.
YosukeK 0:32eb0835b5a3 86 int main() {
YosukeK 0:32eb0835b5a3 87 //ticker.attach(roomba.periodicCallback, 0.1);
YosukeK 0:32eb0835b5a3 88
YosukeK 0:32eb0835b5a3 89 //TODO:Serial receive message.
YosukeK 0:32eb0835b5a3 90
YosukeK 0:32eb0835b5a3 91 while (true) {
YosukeK 0:32eb0835b5a3 92 RoombaEventArg e;
YosukeK 0:32eb0835b5a3 93 e.leftWheetVelocity = 20;
YosukeK 0:32eb0835b5a3 94 e.rightWheelVelocity = 30;
YosukeK 0:32eb0835b5a3 95
YosukeK 0:32eb0835b5a3 96 roomba.periodicCallback(e);
YosukeK 0:32eb0835b5a3 97 wait_ms(100);
YosukeK 0:32eb0835b5a3 98 }
YosukeK 0:32eb0835b5a3 99 }