Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@1:aed433d882c9, 2015-01-21 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |