Piezo Vibration Sensor demo
Dependencies: PCA9622_LED8x8 mbed
main.cpp@0:2f98d8d6ef4b, 2015-07-26 (annotated)
- Committer:
- MACRUM
- Date:
- Sun Jul 26 15:46:51 2015 +0000
- Revision:
- 0:2f98d8d6ef4b
- Child:
- 1:bcf6ab734086
Initial commit
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MACRUM | 0:2f98d8d6ef4b | 1 | /** |
| MACRUM | 0:2f98d8d6ef4b | 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 | 0:2f98d8d6ef4b | 23 | void draw_number(int num); |
| MACRUM | 0:2f98d8d6ef4b | 24 | |
| MACRUM | 0:2f98d8d6ef4b | 25 | void draw_number(int num) |
| 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 | 0:2f98d8d6ef4b | 31 | for (int y=0; y<8; y++) |
| MACRUM | 0:2f98d8d6ef4b | 32 | image[x][y] = 0.0f; |
| MACRUM | 0:2f98d8d6ef4b | 33 | |
| MACRUM | 0:2f98d8d6ef4b | 34 | for (int i=0; i<5; i++) { |
| MACRUM | 0:2f98d8d6ef4b | 35 | for (int j=0; j<3; j++) { |
| MACRUM | 0:2f98d8d6ef4b | 36 | if (((font3x5[((num/10)*3) + j]) & (1<<(4-i))) != 0) { |
| MACRUM | 0:2f98d8d6ef4b | 37 | image[i+1][j+1] = (float)0.5f; |
| MACRUM | 0:2f98d8d6ef4b | 38 | } else { |
| MACRUM | 0:2f98d8d6ef4b | 39 | image[i+1][j+1] = (float)0.0f; |
| MACRUM | 0:2f98d8d6ef4b | 40 | } |
| MACRUM | 0:2f98d8d6ef4b | 41 | } |
| MACRUM | 0:2f98d8d6ef4b | 42 | } |
| MACRUM | 0:2f98d8d6ef4b | 43 | |
| MACRUM | 0:2f98d8d6ef4b | 44 | for (int i=0; i<5; i++) { |
| MACRUM | 0:2f98d8d6ef4b | 45 | for (int j=0; j<3; j++) { |
| MACRUM | 0:2f98d8d6ef4b | 46 | if (((font3x5[((num%10)*3) + j]) & (1<<(4-i))) != 0) { |
| MACRUM | 0:2f98d8d6ef4b | 47 | image[i+1][j+5] = (float)0.5f; |
| MACRUM | 0:2f98d8d6ef4b | 48 | } else { |
| MACRUM | 0:2f98d8d6ef4b | 49 | image[i+1][j+5] = (float)0.0f; |
| MACRUM | 0:2f98d8d6ef4b | 50 | } |
| MACRUM | 0:2f98d8d6ef4b | 51 | } |
| MACRUM | 0:2f98d8d6ef4b | 52 | } |
| MACRUM | 0:2f98d8d6ef4b | 53 | |
| MACRUM | 0:2f98d8d6ef4b | 54 | matrix.set_data( image ); |
| MACRUM | 0:2f98d8d6ef4b | 55 | } |
| MACRUM | 0:2f98d8d6ef4b | 56 | |
| MACRUM | 0:2f98d8d6ef4b | 57 | |
| MACRUM | 0:2f98d8d6ef4b | 58 | void count_down(int cnt) |
| MACRUM | 0:2f98d8d6ef4b | 59 | { |
| MACRUM | 0:2f98d8d6ef4b | 60 | for(int i=cnt; i>0; i--) { |
| MACRUM | 0:2f98d8d6ef4b | 61 | draw_number(i); |
| MACRUM | 0:2f98d8d6ef4b | 62 | out.period_us(tone_table_us[1]); |
| MACRUM | 0:2f98d8d6ef4b | 63 | out.write(0.5f); |
| MACRUM | 0:2f98d8d6ef4b | 64 | wait(0.5); |
| MACRUM | 0:2f98d8d6ef4b | 65 | out.period(0); |
| MACRUM | 0:2f98d8d6ef4b | 66 | wait(0.5); |
| MACRUM | 0:2f98d8d6ef4b | 67 | } |
| MACRUM | 0:2f98d8d6ef4b | 68 | draw_number(0); |
| MACRUM | 0:2f98d8d6ef4b | 69 | out.period_us(tone_table_us[13]); |
| MACRUM | 0:2f98d8d6ef4b | 70 | out.write(0.5f); |
| MACRUM | 0:2f98d8d6ef4b | 71 | } |
| MACRUM | 0:2f98d8d6ef4b | 72 | |
| MACRUM | 0:2f98d8d6ef4b | 73 | int main() |
| MACRUM | 0:2f98d8d6ef4b | 74 | { |
| MACRUM | 0:2f98d8d6ef4b | 75 | int count = 0; |
| MACRUM | 0:2f98d8d6ef4b | 76 | float f = 0; |
| MACRUM | 0:2f98d8d6ef4b | 77 | float vv; |
| MACRUM | 0:2f98d8d6ef4b | 78 | Timer timer; |
| MACRUM | 0:2f98d8d6ef4b | 79 | |
| MACRUM | 0:2f98d8d6ef4b | 80 | timer.reset(); |
| MACRUM | 0:2f98d8d6ef4b | 81 | matrix.start(); |
| MACRUM | 0:2f98d8d6ef4b | 82 | |
| MACRUM | 0:2f98d8d6ef4b | 83 | count_down(3); |
| MACRUM | 0:2f98d8d6ef4b | 84 | |
| MACRUM | 0:2f98d8d6ef4b | 85 | timer.start(); |
| MACRUM | 0:2f98d8d6ef4b | 86 | while(1) { |
| MACRUM | 0:2f98d8d6ef4b | 87 | if ( timer.read_ms() > 1000) { |
| MACRUM | 0:2f98d8d6ef4b | 88 | out.period(0); |
| MACRUM | 0:2f98d8d6ef4b | 89 | } |
| MACRUM | 0:2f98d8d6ef4b | 90 | vv = ain.read(); |
| MACRUM | 0:2f98d8d6ef4b | 91 | |
| MACRUM | 0:2f98d8d6ef4b | 92 | if ( abs(f - vv) >= 0.015f) { |
| MACRUM | 0:2f98d8d6ef4b | 93 | count++; |
| MACRUM | 0:2f98d8d6ef4b | 94 | pc.printf("*"); |
| MACRUM | 0:2f98d8d6ef4b | 95 | draw_number(count); |
| MACRUM | 0:2f98d8d6ef4b | 96 | } |
| MACRUM | 0:2f98d8d6ef4b | 97 | f = vv; |
| MACRUM | 0:2f98d8d6ef4b | 98 | wait(0.1); |
| MACRUM | 0:2f98d8d6ef4b | 99 | if ( timer.read_ms() > DURATION_TIME) { |
| MACRUM | 0:2f98d8d6ef4b | 100 | pc.printf("count = %d\n", count); |
| MACRUM | 0:2f98d8d6ef4b | 101 | draw_number(count); |
| MACRUM | 0:2f98d8d6ef4b | 102 | break; |
| MACRUM | 0:2f98d8d6ef4b | 103 | } |
| MACRUM | 0:2f98d8d6ef4b | 104 | } |
| MACRUM | 0:2f98d8d6ef4b | 105 | |
| MACRUM | 0:2f98d8d6ef4b | 106 | out.period_us(tone_table_us[13]); |
| MACRUM | 0:2f98d8d6ef4b | 107 | out.write(0.5f); |
| MACRUM | 0:2f98d8d6ef4b | 108 | wait(1); |
| MACRUM | 0:2f98d8d6ef4b | 109 | out.period(0); |
| MACRUM | 0:2f98d8d6ef4b | 110 | |
| MACRUM | 0:2f98d8d6ef4b | 111 | while(1) { |
| MACRUM | 0:2f98d8d6ef4b | 112 | draw_number(count); |
| MACRUM | 0:2f98d8d6ef4b | 113 | wait(1); |
| MACRUM | 0:2f98d8d6ef4b | 114 | |
| MACRUM | 0:2f98d8d6ef4b | 115 | } |
| MACRUM | 0:2f98d8d6ef4b | 116 | } |
Toyomasa Watarai