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: PCA9622_LED8x8 mbed
main.cpp@1:bcf6ab734086, 2015-08-02 (annotated)
- Committer:
- MACRUM
- Date:
- Sun Aug 02 12:38:40 2015 +0000
- Revision:
- 1:bcf6ab734086
- Parent:
- 0:2f98d8d6ef4b
Add score notification blinking
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MACRUM | 0:2f98d8d6ef4b | 1 | /** |
| MACRUM | 1:bcf6ab734086 | 2 | * MFT2015 demo : shake-shake-machine |
| MACRUM | 0:2f98d8d6ef4b | 3 | * |
| MACRUM | 0:2f98d8d6ef4b | 4 | * @author Toyomasa WATARAI |
| MACRUM | 0:2f98d8d6ef4b | 5 | * @version 1.0 |
| MACRUM | 0:2f98d8d6ef4b | 6 | * @date 24-July-2015 |
| MACRUM | 0:2f98d8d6ef4b | 7 | * |
| MACRUM | 0:2f98d8d6ef4b | 8 | * |
| MACRUM | 0:2f98d8d6ef4b | 9 | */ |
| MACRUM | 0:2f98d8d6ef4b | 10 | |
| MACRUM | 0:2f98d8d6ef4b | 11 | #include "mbed.h" |
| MACRUM | 0:2f98d8d6ef4b | 12 | #include "PCA9622_LED8x8.h" |
| MACRUM | 0:2f98d8d6ef4b | 13 | #include "font3x5.h" |
| MACRUM | 0:2f98d8d6ef4b | 14 | #include "tone_table.h" |
| MACRUM | 0:2f98d8d6ef4b | 15 | |
| MACRUM | 0:2f98d8d6ef4b | 16 | PCA9622_LED8x8 matrix(D14, D15); |
| MACRUM | 0:2f98d8d6ef4b | 17 | AnalogIn ain(A0); |
| MACRUM | 0:2f98d8d6ef4b | 18 | PwmOut out(D4); |
| MACRUM | 0:2f98d8d6ef4b | 19 | Serial pc(USBTX, USBRX); |
| MACRUM | 0:2f98d8d6ef4b | 20 | |
| MACRUM | 0:2f98d8d6ef4b | 21 | #define DURATION_TIME (5 * 1000) // n * milisecond |
| MACRUM | 0:2f98d8d6ef4b | 22 | |
| MACRUM | 1:bcf6ab734086 | 23 | void draw_number(int num, int reverse=0); |
| MACRUM | 0:2f98d8d6ef4b | 24 | |
| MACRUM | 1:bcf6ab734086 | 25 | void draw_number(int num, int reverse) |
| MACRUM | 0:2f98d8d6ef4b | 26 | { |
| MACRUM | 0:2f98d8d6ef4b | 27 | float image[8][8]; |
| MACRUM | 0:2f98d8d6ef4b | 28 | num %= 100; |
| MACRUM | 0:2f98d8d6ef4b | 29 | |
| MACRUM | 0:2f98d8d6ef4b | 30 | for (int x=0; x<8; x++) |
| MACRUM | 1:bcf6ab734086 | 31 | for (int y=0; y<8; y++) { |
| MACRUM | 1:bcf6ab734086 | 32 | if (reverse) |
| MACRUM | 1:bcf6ab734086 | 33 | image[x][y] = 0.5f; |
| MACRUM | 1:bcf6ab734086 | 34 | else |
| MACRUM | 1:bcf6ab734086 | 35 | image[x][y] = 0.0f; |
| MACRUM | 1:bcf6ab734086 | 36 | } |
| MACRUM | 0:2f98d8d6ef4b | 37 | |
| MACRUM | 0:2f98d8d6ef4b | 38 | for (int i=0; i<5; i++) { |
| MACRUM | 0:2f98d8d6ef4b | 39 | for (int j=0; j<3; j++) { |
| MACRUM | 0:2f98d8d6ef4b | 40 | if (((font3x5[((num/10)*3) + j]) & (1<<(4-i))) != 0) { |
| MACRUM | 1:bcf6ab734086 | 41 | if (reverse) |
| MACRUM | 1:bcf6ab734086 | 42 | image[i+1][j+1] = (float)0.0f; |
| MACRUM | 1:bcf6ab734086 | 43 | else |
| MACRUM | 1:bcf6ab734086 | 44 | image[i+1][j+1] = (float)0.5f; |
| MACRUM | 0:2f98d8d6ef4b | 45 | } else { |
| MACRUM | 1:bcf6ab734086 | 46 | if (reverse) |
| MACRUM | 1:bcf6ab734086 | 47 | image[i+1][j+1] = (float)0.5f; |
| MACRUM | 1:bcf6ab734086 | 48 | else |
| MACRUM | 1:bcf6ab734086 | 49 | image[i+1][j+1] = (float)0.0f; |
| MACRUM | 0:2f98d8d6ef4b | 50 | } |
| MACRUM | 0:2f98d8d6ef4b | 51 | } |
| MACRUM | 0:2f98d8d6ef4b | 52 | } |
| MACRUM | 0:2f98d8d6ef4b | 53 | |
| MACRUM | 0:2f98d8d6ef4b | 54 | for (int i=0; i<5; i++) { |
| MACRUM | 0:2f98d8d6ef4b | 55 | for (int j=0; j<3; j++) { |
| MACRUM | 0:2f98d8d6ef4b | 56 | if (((font3x5[((num%10)*3) + j]) & (1<<(4-i))) != 0) { |
| MACRUM | 1:bcf6ab734086 | 57 | if (reverse) |
| MACRUM | 1:bcf6ab734086 | 58 | image[i+1][j+5] = (float)0.0f; |
| MACRUM | 1:bcf6ab734086 | 59 | else |
| MACRUM | 1:bcf6ab734086 | 60 | image[i+1][j+5] = (float)0.5f; |
| MACRUM | 0:2f98d8d6ef4b | 61 | } else { |
| MACRUM | 1:bcf6ab734086 | 62 | if (reverse) |
| MACRUM | 1:bcf6ab734086 | 63 | image[i+1][j+5] = (float)0.5f; |
| MACRUM | 1:bcf6ab734086 | 64 | else |
| MACRUM | 1:bcf6ab734086 | 65 | image[i+1][j+5] = (float)0.0f; |
| MACRUM | 0:2f98d8d6ef4b | 66 | } |
| MACRUM | 0:2f98d8d6ef4b | 67 | } |
| MACRUM | 0:2f98d8d6ef4b | 68 | } |
| MACRUM | 0:2f98d8d6ef4b | 69 | |
| MACRUM | 0:2f98d8d6ef4b | 70 | matrix.set_data( image ); |
| MACRUM | 0:2f98d8d6ef4b | 71 | } |
| MACRUM | 0:2f98d8d6ef4b | 72 | |
| MACRUM | 0:2f98d8d6ef4b | 73 | |
| MACRUM | 0:2f98d8d6ef4b | 74 | void count_down(int cnt) |
| MACRUM | 0:2f98d8d6ef4b | 75 | { |
| MACRUM | 0:2f98d8d6ef4b | 76 | for(int i=cnt; i>0; i--) { |
| MACRUM | 0:2f98d8d6ef4b | 77 | draw_number(i); |
| MACRUM | 0:2f98d8d6ef4b | 78 | out.period_us(tone_table_us[1]); |
| MACRUM | 0:2f98d8d6ef4b | 79 | out.write(0.5f); |
| MACRUM | 0:2f98d8d6ef4b | 80 | wait(0.5); |
| MACRUM | 0:2f98d8d6ef4b | 81 | out.period(0); |
| MACRUM | 0:2f98d8d6ef4b | 82 | wait(0.5); |
| MACRUM | 0:2f98d8d6ef4b | 83 | } |
| MACRUM | 0:2f98d8d6ef4b | 84 | draw_number(0); |
| MACRUM | 0:2f98d8d6ef4b | 85 | out.period_us(tone_table_us[13]); |
| MACRUM | 0:2f98d8d6ef4b | 86 | out.write(0.5f); |
| MACRUM | 0:2f98d8d6ef4b | 87 | } |
| MACRUM | 0:2f98d8d6ef4b | 88 | |
| MACRUM | 0:2f98d8d6ef4b | 89 | int main() |
| MACRUM | 0:2f98d8d6ef4b | 90 | { |
| MACRUM | 0:2f98d8d6ef4b | 91 | int count = 0; |
| MACRUM | 0:2f98d8d6ef4b | 92 | float f = 0; |
| MACRUM | 0:2f98d8d6ef4b | 93 | float vv; |
| MACRUM | 0:2f98d8d6ef4b | 94 | Timer timer; |
| MACRUM | 0:2f98d8d6ef4b | 95 | |
| MACRUM | 0:2f98d8d6ef4b | 96 | timer.reset(); |
| MACRUM | 0:2f98d8d6ef4b | 97 | matrix.start(); |
| MACRUM | 0:2f98d8d6ef4b | 98 | |
| MACRUM | 0:2f98d8d6ef4b | 99 | count_down(3); |
| MACRUM | 0:2f98d8d6ef4b | 100 | |
| MACRUM | 0:2f98d8d6ef4b | 101 | timer.start(); |
| MACRUM | 0:2f98d8d6ef4b | 102 | while(1) { |
| MACRUM | 0:2f98d8d6ef4b | 103 | if ( timer.read_ms() > 1000) { |
| MACRUM | 0:2f98d8d6ef4b | 104 | out.period(0); |
| MACRUM | 0:2f98d8d6ef4b | 105 | } |
| MACRUM | 0:2f98d8d6ef4b | 106 | vv = ain.read(); |
| MACRUM | 0:2f98d8d6ef4b | 107 | |
| MACRUM | 0:2f98d8d6ef4b | 108 | if ( abs(f - vv) >= 0.015f) { |
| MACRUM | 0:2f98d8d6ef4b | 109 | count++; |
| MACRUM | 0:2f98d8d6ef4b | 110 | pc.printf("*"); |
| MACRUM | 0:2f98d8d6ef4b | 111 | draw_number(count); |
| MACRUM | 0:2f98d8d6ef4b | 112 | } |
| MACRUM | 0:2f98d8d6ef4b | 113 | f = vv; |
| MACRUM | 0:2f98d8d6ef4b | 114 | wait(0.1); |
| MACRUM | 0:2f98d8d6ef4b | 115 | if ( timer.read_ms() > DURATION_TIME) { |
| MACRUM | 0:2f98d8d6ef4b | 116 | pc.printf("count = %d\n", count); |
| MACRUM | 0:2f98d8d6ef4b | 117 | draw_number(count); |
| MACRUM | 0:2f98d8d6ef4b | 118 | break; |
| MACRUM | 0:2f98d8d6ef4b | 119 | } |
| MACRUM | 0:2f98d8d6ef4b | 120 | } |
| MACRUM | 0:2f98d8d6ef4b | 121 | |
| MACRUM | 0:2f98d8d6ef4b | 122 | out.period_us(tone_table_us[13]); |
| MACRUM | 0:2f98d8d6ef4b | 123 | out.write(0.5f); |
| MACRUM | 0:2f98d8d6ef4b | 124 | wait(1); |
| MACRUM | 0:2f98d8d6ef4b | 125 | out.period(0); |
| MACRUM | 1:bcf6ab734086 | 126 | |
| MACRUM | 0:2f98d8d6ef4b | 127 | while(1) { |
| MACRUM | 1:bcf6ab734086 | 128 | draw_number(count, 0); |
| MACRUM | 0:2f98d8d6ef4b | 129 | wait(1); |
| MACRUM | 1:bcf6ab734086 | 130 | draw_number(count, 1); |
| MACRUM | 1:bcf6ab734086 | 131 | wait(1); |
| MACRUM | 1:bcf6ab734086 | 132 | |
| MACRUM | 0:2f98d8d6ef4b | 133 | } |
| MACRUM | 0:2f98d8d6ef4b | 134 | } |