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.
Dependencies: NeoStrip SerialDriver mbed-rtos mbed
main.cpp@4:cea8cd2c44e4, 2016-01-31 (annotated)
- Committer:
- rossng
- Date:
- Sun Jan 31 02:50:56 2016 +0000
- Revision:
- 4:cea8cd2c44e4
- Parent:
- 3:d331c534064f
- Child:
- 5:522612e4b18d
Add some nice ticker-based patterns to the ring and grid
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| rossng | 0:0513e7187b87 | 1 | #include "mbed.h" |
| rossng | 0:0513e7187b87 | 2 | #include "SerialDriver.h" |
| rossng | 2:868c8a43e4b7 | 3 | #include "NeoStrip.h" |
| rossng | 2:868c8a43e4b7 | 4 | #include "gt.h" |
| rossng | 0:0513e7187b87 | 5 | |
| rossng | 4:cea8cd2c44e4 | 6 | #define NUM_INDIVIDUALS 7 |
| rossng | 4:cea8cd2c44e4 | 7 | #define NUM_RING 16 |
| rossng | 4:cea8cd2c44e4 | 8 | #define NUM_GRID 40 |
| rossng | 4:cea8cd2c44e4 | 9 | #define NUM_ROWS 5 |
| rossng | 4:cea8cd2c44e4 | 10 | #define NUM_COLUMNS 8 |
| rossng | 2:868c8a43e4b7 | 11 | |
| rossng | 1:6feb61c0e4a1 | 12 | SerialDriver rpi(p9, p10); |
| rossng | 1:6feb61c0e4a1 | 13 | SerialDriver pc(USBTX, USBRX); |
| rossng | 0:0513e7187b87 | 14 | DigitalOut myled(LED1); |
| rossng | 4:cea8cd2c44e4 | 15 | NeoStrip strip(p18, NUM_INDIVIDUALS + NUM_RING + NUM_GRID); |
| rossng | 4:cea8cd2c44e4 | 16 | Ticker t; |
| rossng | 4:cea8cd2c44e4 | 17 | |
| rossng | 4:cea8cd2c44e4 | 18 | int ring_position = 0; |
| rossng | 4:cea8cd2c44e4 | 19 | int grid_col = 0; |
| rossng | 0:0513e7187b87 | 20 | |
| rossng | 0:0513e7187b87 | 21 | int flash(); |
| rossng | 4:cea8cd2c44e4 | 22 | void set_pattern(NeoStrip strip, uint8_t r, uint8_t g, uint8_t b); |
| rossng | 4:cea8cd2c44e4 | 23 | void update_pixels(); |
| rossng | 0:0513e7187b87 | 24 | |
| rossng | 2:868c8a43e4b7 | 25 | int main() { |
| rossng | 4:cea8cd2c44e4 | 26 | pc.printf("MBED: startup\r\n"); |
| rossng | 4:cea8cd2c44e4 | 27 | |
| rossng | 4:cea8cd2c44e4 | 28 | set_pattern(strip, 255, 255, 255); |
| rossng | 4:cea8cd2c44e4 | 29 | |
| rossng | 4:cea8cd2c44e4 | 30 | t.attach(&update_pixels, 0.05); |
| rossng | 2:868c8a43e4b7 | 31 | |
| rossng | 0:0513e7187b87 | 32 | // setup serial port |
| rossng | 1:6feb61c0e4a1 | 33 | rpi.baud(115200); |
| rossng | 0:0513e7187b87 | 34 | |
| rossng | 0:0513e7187b87 | 35 | char* line_buffer = (char*) malloc(100*sizeof(char)); |
| rossng | 0:0513e7187b87 | 36 | |
| rossng | 1:6feb61c0e4a1 | 37 | char c = rpi.getc(); |
| rossng | 0:0513e7187b87 | 38 | int pos = 0; |
| rossng | 0:0513e7187b87 | 39 | |
| rossng | 0:0513e7187b87 | 40 | while (c != '\n' && c != '\r') { |
| rossng | 4:cea8cd2c44e4 | 41 | pc.printf("MBED: read %c\r\n", c); |
| rossng | 0:0513e7187b87 | 42 | line_buffer[pos] = c; |
| rossng | 1:6feb61c0e4a1 | 43 | c = rpi.getc(); |
| rossng | 1:6feb61c0e4a1 | 44 | pos++; |
| rossng | 0:0513e7187b87 | 45 | } |
| rossng | 0:0513e7187b87 | 46 | |
| rossng | 1:6feb61c0e4a1 | 47 | line_buffer[pos] = '\0'; |
| rossng | 4:cea8cd2c44e4 | 48 | pc.printf("MBED: read newline\r\n"); |
| rossng | 1:6feb61c0e4a1 | 49 | |
| rossng | 1:6feb61c0e4a1 | 50 | rpi.printf("ack\n"); |
| rossng | 4:cea8cd2c44e4 | 51 | pc.printf("MBED: sent ack\r\n"); |
| rossng | 0:0513e7187b87 | 52 | |
| rossng | 0:0513e7187b87 | 53 | int result = strcmp(line_buffer, "hello"); |
| rossng | 0:0513e7187b87 | 54 | |
| rossng | 0:0513e7187b87 | 55 | if (result == 0) { |
| rossng | 4:cea8cd2c44e4 | 56 | pc.printf("MBED: matched, updating strip\r\n"); |
| rossng | 4:cea8cd2c44e4 | 57 | set_pattern(strip, 255, 0, 0); |
| rossng | 1:6feb61c0e4a1 | 58 | } else { |
| rossng | 1:6feb61c0e4a1 | 59 | pc.printf("Did not match.\n"); |
| rossng | 1:6feb61c0e4a1 | 60 | pc.printf(line_buffer); |
| rossng | 0:0513e7187b87 | 61 | } |
| rossng | 0:0513e7187b87 | 62 | } |
| rossng | 0:0513e7187b87 | 63 | |
| rossng | 0:0513e7187b87 | 64 | |
| rossng | 0:0513e7187b87 | 65 | int flash() { |
| rossng | 0:0513e7187b87 | 66 | while(1) { |
| rossng | 0:0513e7187b87 | 67 | myled = 1; |
| rossng | 0:0513e7187b87 | 68 | wait(0.2); |
| rossng | 0:0513e7187b87 | 69 | myled = 0; |
| rossng | 0:0513e7187b87 | 70 | wait(0.2); |
| rossng | 0:0513e7187b87 | 71 | } |
| rossng | 2:868c8a43e4b7 | 72 | } |
| rossng | 2:868c8a43e4b7 | 73 | |
| rossng | 4:cea8cd2c44e4 | 74 | void set_pattern(NeoStrip strip, uint8_t r, uint8_t g, uint8_t b) { |
| rossng | 4:cea8cd2c44e4 | 75 | strip.setBrightness(0.05); |
| rossng | 4:cea8cd2c44e4 | 76 | //strip.setPixels(0, N, gt_img); |
| rossng | 4:cea8cd2c44e4 | 77 | for (int p = 0; p < 64; p++) { |
| rossng | 4:cea8cd2c44e4 | 78 | strip.setPixel(p, r, g, b); |
| rossng | 4:cea8cd2c44e4 | 79 | } |
| rossng | 2:868c8a43e4b7 | 80 | strip.write(); |
| rossng | 4:cea8cd2c44e4 | 81 | } |
| rossng | 4:cea8cd2c44e4 | 82 | |
| rossng | 4:cea8cd2c44e4 | 83 | void update_pixels() { |
| rossng | 4:cea8cd2c44e4 | 84 | strip.setBrightness(0.05); |
| rossng | 4:cea8cd2c44e4 | 85 | // update ring |
| rossng | 4:cea8cd2c44e4 | 86 | strip.setPixel(NUM_INDIVIDUALS + ring_position, 255, 255, 255); |
| rossng | 4:cea8cd2c44e4 | 87 | ring_position = (ring_position + 1) % NUM_RING; |
| rossng | 4:cea8cd2c44e4 | 88 | strip.setPixel(NUM_INDIVIDUALS + ring_position, 255, 0, 0); |
| rossng | 4:cea8cd2c44e4 | 89 | |
| rossng | 4:cea8cd2c44e4 | 90 | // update grid |
| rossng | 4:cea8cd2c44e4 | 91 | for (int i = grid_col; i < NUM_GRID; i += NUM_COLUMNS) { |
| rossng | 4:cea8cd2c44e4 | 92 | strip.setPixel(NUM_INDIVIDUALS + NUM_RING + i, 255, 255, 255); |
| rossng | 4:cea8cd2c44e4 | 93 | } |
| rossng | 4:cea8cd2c44e4 | 94 | grid_col = (grid_col + 1) % NUM_COLUMNS; |
| rossng | 4:cea8cd2c44e4 | 95 | |
| rossng | 4:cea8cd2c44e4 | 96 | for (int i = grid_col; i < NUM_GRID; i += NUM_COLUMNS) { |
| rossng | 4:cea8cd2c44e4 | 97 | strip.setPixel(NUM_INDIVIDUALS + NUM_RING + i, 255, 0, 0); |
| rossng | 4:cea8cd2c44e4 | 98 | } |
| rossng | 4:cea8cd2c44e4 | 99 | |
| rossng | 4:cea8cd2c44e4 | 100 | strip.write(); |
| rossng | 0:0513e7187b87 | 101 | } |