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@0:e0f222acdecd, 2012-05-24 (annotated)
- Committer:
- indraastra
- Date:
- Thu May 24 19:22:32 2012 +0000
- Revision:
- 0:e0f222acdecd
- Child:
- 1:25121f821584
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| indraastra | 0:e0f222acdecd | 1 | #include "mbed.h" |
| indraastra | 0:e0f222acdecd | 2 | #include "mbipanel.h" |
| indraastra | 0:e0f222acdecd | 3 | |
| indraastra | 0:e0f222acdecd | 4 | using namespace mbipanel; |
| indraastra | 0:e0f222acdecd | 5 | using namespace mbipanel::hardware; |
| indraastra | 0:e0f222acdecd | 6 | |
| indraastra | 0:e0f222acdecd | 7 | DigitalOut led(LED1); |
| indraastra | 0:e0f222acdecd | 8 | |
| indraastra | 0:e0f222acdecd | 9 | class SerialDisplay { |
| indraastra | 0:e0f222acdecd | 10 | public: |
| indraastra | 0:e0f222acdecd | 11 | SerialDisplay(Serial& com) { |
| indraastra | 0:e0f222acdecd | 12 | com_ = &com; |
| indraastra | 0:e0f222acdecd | 13 | // Set up large board. |
| indraastra | 0:e0f222acdecd | 14 | mbicfg_ = new MBI(1, 4, mbipanel::MBI5030, cfg::pixelcfg_large1x4); |
| indraastra | 0:e0f222acdecd | 15 | panelcfg_ = new Panel(8, 2, *mbicfg_); |
| indraastra | 0:e0f222acdecd | 16 | gridcfg_ = new PanelGrid(1, 1, *panelcfg_); |
| indraastra | 0:e0f222acdecd | 17 | |
| indraastra | 0:e0f222acdecd | 18 | PinName pincfg[4] = {p18, p19, p20, p21}; |
| indraastra | 0:e0f222acdecd | 19 | display_ = new Display(*gridcfg_, pincfg); |
| indraastra | 0:e0f222acdecd | 20 | display_->configure_12bit(); |
| indraastra | 0:e0f222acdecd | 21 | } |
| indraastra | 0:e0f222acdecd | 22 | |
| indraastra | 0:e0f222acdecd | 23 | ~SerialDisplay() { |
| indraastra | 0:e0f222acdecd | 24 | delete display_; |
| indraastra | 0:e0f222acdecd | 25 | delete mbicfg_; |
| indraastra | 0:e0f222acdecd | 26 | delete panelcfg_; |
| indraastra | 0:e0f222acdecd | 27 | delete gridcfg_; |
| indraastra | 0:e0f222acdecd | 28 | } |
| indraastra | 0:e0f222acdecd | 29 | |
| indraastra | 0:e0f222acdecd | 30 | void start() { |
| indraastra | 0:e0f222acdecd | 31 | // Wait for any token to arrive to signal the start of communication. |
| indraastra | 0:e0f222acdecd | 32 | while (!com_->readable()) { } |
| indraastra | 0:e0f222acdecd | 33 | com_.printf("Hello. Starting...\n"); |
| indraastra | 0:e0f222acdecd | 34 | command_loop(); |
| indraastra | 0:e0f222acdecd | 35 | } |
| indraastra | 0:e0f222acdecd | 36 | |
| indraastra | 0:e0f222acdecd | 37 | private: |
| indraastra | 0:e0f222acdecd | 38 | // Respond to commands arriving over the serial port. |
| indraastra | 0:e0f222acdecd | 39 | void command_loop() { |
| indraastra | 0:e0f222acdecd | 40 | while (true) { |
| indraastra | 0:e0f222acdecd | 41 | if (com_->readable()) { |
| indraastra | 0:e0f222acdecd | 42 | // LED turns on while a command is being interpreted. |
| indraastra | 0:e0f222acdecd | 43 | led = !led; |
| indraastra | 0:e0f222acdecd | 44 | char c = com_->getc(); |
| indraastra | 0:e0f222acdecd | 45 | if (c == 'p') { |
| indraastra | 0:e0f222acdecd | 46 | // Set pixel. |
| indraastra | 0:e0f222acdecd | 47 | int x, y, r, g, b, w; |
| indraastra | 0:e0f222acdecd | 48 | com_.scanf("x%dy%dr%dg%db%dw%d", &x, &y, &r, &g, &b, &w); |
| indraastra | 0:e0f222acdecd | 49 | display_->set(x, y, r, g, b, w); |
| indraastra | 0:e0f222acdecd | 50 | } else if (c == '+') { |
| indraastra | 0:e0f222acdecd | 51 | // Draw display. |
| indraastra | 0:e0f222acdecd | 52 | display_->draw(); |
| indraastra | 0:e0f222acdecd | 53 | com_.printf("Drawing!"); |
| indraastra | 0:e0f222acdecd | 54 | } else if (c == '-') { |
| indraastra | 0:e0f222acdecd | 55 | // Clear display. |
| indraastra | 0:e0f222acdecd | 56 | display_->reset(); |
| indraastra | 0:e0f222acdecd | 57 | com_.printf("Resetting!"); |
| indraastra | 0:e0f222acdecd | 58 | } |
| indraastra | 0:e0f222acdecd | 59 | led = !led; |
| indraastra | 0:e0f222acdecd | 60 | } |
| indraastra | 0:e0f222acdecd | 61 | } |
| indraastra | 0:e0f222acdecd | 62 | } |
| indraastra | 0:e0f222acdecd | 63 | |
| indraastra | 0:e0f222acdecd | 64 | Serial* com_; |
| indraastra | 0:e0f222acdecd | 65 | Display* display_; |
| indraastra | 0:e0f222acdecd | 66 | MBI* mbicfg_; |
| indraastra | 0:e0f222acdecd | 67 | Panel* panelcfg_; |
| indraastra | 0:e0f222acdecd | 68 | PanelGrid* gridcfg_; |
| indraastra | 0:e0f222acdecd | 69 | }; |
| indraastra | 0:e0f222acdecd | 70 | |
| indraastra | 0:e0f222acdecd | 71 | int main() { |
| indraastra | 0:e0f222acdecd | 72 | Serial com(p9, p10); |
| indraastra | 0:e0f222acdecd | 73 | com.baud(115200); |
| indraastra | 0:e0f222acdecd | 74 | SerialDisplay display(com); |
| indraastra | 0:e0f222acdecd | 75 | display.start(); |
| indraastra | 0:e0f222acdecd | 76 | } |