test program for IS31SE5000
Dependencies: IS31SE5000 mbed vt100
main.cpp@1:dc5f47cbc29f, 2017-04-18 (annotated)
- Committer:
- Rhyme
- Date:
- Tue Apr 18 05:03:37 2017 +0000
- Revision:
- 1:dc5f47cbc29f
- Parent:
- 0:4ceb1cf167e9
MSS.h emploied.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rhyme | 0:4ceb1cf167e9 | 1 | #include "mbed.h" |
Rhyme | 0:4ceb1cf167e9 | 2 | #include "vt100.h" |
Rhyme | 1:dc5f47cbc29f | 3 | #include "MSS.h" |
Rhyme | 0:4ceb1cf167e9 | 4 | #include "IS31SE5000.h" |
Rhyme | 0:4ceb1cf167e9 | 5 | |
Rhyme | 0:4ceb1cf167e9 | 6 | #define IS31SE5000_I2C_ADDRESS (0x55) |
Rhyme | 0:4ceb1cf167e9 | 7 | |
Rhyme | 0:4ceb1cf167e9 | 8 | #define NONE_DETECTED 0x00 |
Rhyme | 0:4ceb1cf167e9 | 9 | #define MOTION_DETECTED 0x01 |
Rhyme | 0:4ceb1cf167e9 | 10 | #define PROXIMITY_DETECTED 0x02 |
Rhyme | 0:4ceb1cf167e9 | 11 | |
Rhyme | 0:4ceb1cf167e9 | 12 | vt100 *tty = 0 ; |
Rhyme | 0:4ceb1cf167e9 | 13 | IS31SE5000 *is31 = 0 ; |
Rhyme | 0:4ceb1cf167e9 | 14 | char *board = BOARD_NAME ; |
Rhyme | 0:4ceb1cf167e9 | 15 | uint8_t newEvent = NONE_DETECTED ; |
Rhyme | 0:4ceb1cf167e9 | 16 | |
Rhyme | 1:dc5f47cbc29f | 17 | #if defined (TARGET_KL25Z) |
Rhyme | 0:4ceb1cf167e9 | 18 | InterruptIn myInt(PIN_INT1) ; |
Rhyme | 1:dc5f47cbc29f | 19 | #else |
Rhyme | 1:dc5f47cbc29f | 20 | InterruptIn myInt(PIN_INT3) ; |
Rhyme | 1:dc5f47cbc29f | 21 | #endif |
Rhyme | 0:4ceb1cf167e9 | 22 | |
Rhyme | 0:4ceb1cf167e9 | 23 | void reportIS31SE5000(IS31SE5000 *is31, int x, int y) |
Rhyme | 0:4ceb1cf167e9 | 24 | { |
Rhyme | 0:4ceb1cf167e9 | 25 | tty->locate(x, y) ; |
Rhyme | 0:4ceb1cf167e9 | 26 | printf("reportIS31SE5000\n") ; |
Rhyme | 0:4ceb1cf167e9 | 27 | } |
Rhyme | 0:4ceb1cf167e9 | 28 | |
Rhyme | 0:4ceb1cf167e9 | 29 | void reportMotion(IS31SE5000 *is31, int x, int y) |
Rhyme | 0:4ceb1cf167e9 | 30 | { |
Rhyme | 0:4ceb1cf167e9 | 31 | uint8_t data ; |
Rhyme | 0:4ceb1cf167e9 | 32 | data = is31->getMD() ; |
Rhyme | 0:4ceb1cf167e9 | 33 | tty->locate(x, y) ; |
Rhyme | 0:4ceb1cf167e9 | 34 | printf("Motion Detected\n") ; |
Rhyme | 0:4ceb1cf167e9 | 35 | tty->locate(x, y+2) ; |
Rhyme | 0:4ceb1cf167e9 | 36 | switch(data) { |
Rhyme | 0:4ceb1cf167e9 | 37 | case 0x01: // MD_PD2_PD1: |
Rhyme | 0:4ceb1cf167e9 | 38 | printf(" PD2 -> PD1 \n") ; |
Rhyme | 0:4ceb1cf167e9 | 39 | break ; |
Rhyme | 0:4ceb1cf167e9 | 40 | case 0x02: // MD_PD1_PD2: |
Rhyme | 0:4ceb1cf167e9 | 41 | printf(" PD1 -> PD2 \n") ; |
Rhyme | 0:4ceb1cf167e9 | 42 | break ; |
Rhyme | 0:4ceb1cf167e9 | 43 | default: |
Rhyme | 0:4ceb1cf167e9 | 44 | printf("Event 0x%02X\n", data) ; |
Rhyme | 0:4ceb1cf167e9 | 45 | break ; |
Rhyme | 0:4ceb1cf167e9 | 46 | } |
Rhyme | 0:4ceb1cf167e9 | 47 | } |
Rhyme | 0:4ceb1cf167e9 | 48 | |
Rhyme | 0:4ceb1cf167e9 | 49 | void reportProximity(IS31SE5000 *is31, int x, int y) |
Rhyme | 0:4ceb1cf167e9 | 50 | { |
Rhyme | 0:4ceb1cf167e9 | 51 | uint8_t data ; |
Rhyme | 0:4ceb1cf167e9 | 52 | tty->locate(x, y) ; |
Rhyme | 0:4ceb1cf167e9 | 53 | printf("Proximity Detected\n") ; |
Rhyme | 0:4ceb1cf167e9 | 54 | data = is31->getPD() ; |
Rhyme | 0:4ceb1cf167e9 | 55 | tty->locate(x, y+2) ; |
Rhyme | 0:4ceb1cf167e9 | 56 | switch(data) { |
Rhyme | 0:4ceb1cf167e9 | 57 | case 0x01: // PD_BE_OFF: |
Rhyme | 0:4ceb1cf167e9 | 58 | printf(" Be OFF \n") ; |
Rhyme | 0:4ceb1cf167e9 | 59 | break ; |
Rhyme | 0:4ceb1cf167e9 | 60 | case 0x02: // PD_BE_CLOSE: |
Rhyme | 0:4ceb1cf167e9 | 61 | printf(" Be Close \n") ; |
Rhyme | 0:4ceb1cf167e9 | 62 | break ; |
Rhyme | 0:4ceb1cf167e9 | 63 | default: |
Rhyme | 0:4ceb1cf167e9 | 64 | printf("Event 0x%02X\n", data) ; |
Rhyme | 0:4ceb1cf167e9 | 65 | break ; |
Rhyme | 0:4ceb1cf167e9 | 66 | } |
Rhyme | 0:4ceb1cf167e9 | 67 | } |
Rhyme | 0:4ceb1cf167e9 | 68 | |
Rhyme | 0:4ceb1cf167e9 | 69 | void myISR(void) |
Rhyme | 0:4ceb1cf167e9 | 70 | { |
Rhyme | 0:4ceb1cf167e9 | 71 | uint8_t mode ; |
Rhyme | 0:4ceb1cf167e9 | 72 | newEvent = NONE_DETECTED ; |
Rhyme | 0:4ceb1cf167e9 | 73 | |
Rhyme | 0:4ceb1cf167e9 | 74 | if (is31) { |
Rhyme | 0:4ceb1cf167e9 | 75 | mode = is31->getMode() ; |
Rhyme | 0:4ceb1cf167e9 | 76 | switch(mode) { |
Rhyme | 0:4ceb1cf167e9 | 77 | case 0x00: // MODE_MOTION: |
Rhyme | 0:4ceb1cf167e9 | 78 | newEvent = MOTION_DETECTED ; |
Rhyme | 0:4ceb1cf167e9 | 79 | break ; |
Rhyme | 0:4ceb1cf167e9 | 80 | case 0x01: // MODE_PROXIMITY: |
Rhyme | 0:4ceb1cf167e9 | 81 | newEvent = PROXIMITY_DETECTED ; |
Rhyme | 0:4ceb1cf167e9 | 82 | break ; |
Rhyme | 0:4ceb1cf167e9 | 83 | default: |
Rhyme | 0:4ceb1cf167e9 | 84 | printf("Unknown mode\n") ; |
Rhyme | 0:4ceb1cf167e9 | 85 | break ; |
Rhyme | 0:4ceb1cf167e9 | 86 | } |
Rhyme | 0:4ceb1cf167e9 | 87 | } |
Rhyme | 0:4ceb1cf167e9 | 88 | } |
Rhyme | 0:4ceb1cf167e9 | 89 | |
Rhyme | 0:4ceb1cf167e9 | 90 | int main(void) { |
Rhyme | 0:4ceb1cf167e9 | 91 | int event_count = 0 ; |
Rhyme | 0:4ceb1cf167e9 | 92 | tty = new vt100() ; |
Rhyme | 0:4ceb1cf167e9 | 93 | tty->cls() ; |
Rhyme | 0:4ceb1cf167e9 | 94 | |
Rhyme | 0:4ceb1cf167e9 | 95 | tty->locate(25, 1) ; |
Rhyme | 0:4ceb1cf167e9 | 96 | printf("<<< %s >>>", board) ; |
Rhyme | 0:4ceb1cf167e9 | 97 | |
Rhyme | 0:4ceb1cf167e9 | 98 | tty->locate(25, 10) ; |
Rhyme | 0:4ceb1cf167e9 | 99 | printf("\n") ; |
Rhyme | 0:4ceb1cf167e9 | 100 | |
Rhyme | 0:4ceb1cf167e9 | 101 | myInt.fall(&myISR) ; |
Rhyme | 0:4ceb1cf167e9 | 102 | |
Rhyme | 0:4ceb1cf167e9 | 103 | is31 = new IS31SE5000(PIN_SDA, PIN_SCL, IS31SE5000_I2C_ADDRESS) ; |
Rhyme | 0:4ceb1cf167e9 | 104 | is31->motionMode() ; |
Rhyme | 0:4ceb1cf167e9 | 105 | is31->activate() ; |
Rhyme | 0:4ceb1cf167e9 | 106 | tty->locate(25, 3) ; |
Rhyme | 0:4ceb1cf167e9 | 107 | printf("Motion Detect Mode\n") ; |
Rhyme | 0:4ceb1cf167e9 | 108 | tty->locate(25, 10) ; |
Rhyme | 0:4ceb1cf167e9 | 109 | printf("Proximity Mode \n") ; |
Rhyme | 0:4ceb1cf167e9 | 110 | tty->locate(23, 3) ; |
Rhyme | 0:4ceb1cf167e9 | 111 | printf("*\n") ; |
Rhyme | 0:4ceb1cf167e9 | 112 | |
Rhyme | 0:4ceb1cf167e9 | 113 | while(1) { |
Rhyme | 0:4ceb1cf167e9 | 114 | if (newEvent != NONE_DETECTED) { |
Rhyme | 0:4ceb1cf167e9 | 115 | event_count++ ; |
Rhyme | 0:4ceb1cf167e9 | 116 | switch(newEvent) { |
Rhyme | 0:4ceb1cf167e9 | 117 | case MOTION_DETECTED: |
Rhyme | 0:4ceb1cf167e9 | 118 | reportMotion(is31, 25, 5) ; |
Rhyme | 0:4ceb1cf167e9 | 119 | if (event_count > 5) { |
Rhyme | 0:4ceb1cf167e9 | 120 | tty->locate(23, 3) ; |
Rhyme | 0:4ceb1cf167e9 | 121 | printf(" ") ; |
Rhyme | 0:4ceb1cf167e9 | 122 | tty->locate(23, 10) ; |
Rhyme | 0:4ceb1cf167e9 | 123 | printf("*\n") ; |
Rhyme | 0:4ceb1cf167e9 | 124 | is31->proximityMode() ; |
Rhyme | 0:4ceb1cf167e9 | 125 | event_count = 0 ; |
Rhyme | 0:4ceb1cf167e9 | 126 | } |
Rhyme | 0:4ceb1cf167e9 | 127 | break ; |
Rhyme | 0:4ceb1cf167e9 | 128 | case PROXIMITY_DETECTED: |
Rhyme | 0:4ceb1cf167e9 | 129 | reportProximity(is31, 25, 12) ; |
Rhyme | 0:4ceb1cf167e9 | 130 | if (event_count > 5) { |
Rhyme | 0:4ceb1cf167e9 | 131 | tty->locate(23, 10) ; |
Rhyme | 0:4ceb1cf167e9 | 132 | printf(" ") ; |
Rhyme | 0:4ceb1cf167e9 | 133 | tty->locate(23, 3) ; |
Rhyme | 0:4ceb1cf167e9 | 134 | printf("*\n") ; |
Rhyme | 0:4ceb1cf167e9 | 135 | is31->motionMode() ; |
Rhyme | 0:4ceb1cf167e9 | 136 | event_count = 0 ; |
Rhyme | 0:4ceb1cf167e9 | 137 | } |
Rhyme | 0:4ceb1cf167e9 | 138 | break ; |
Rhyme | 0:4ceb1cf167e9 | 139 | default: |
Rhyme | 0:4ceb1cf167e9 | 140 | printf("Unknown event 0x%02X\n", newEvent) ; |
Rhyme | 0:4ceb1cf167e9 | 141 | break ; |
Rhyme | 0:4ceb1cf167e9 | 142 | } |
Rhyme | 0:4ceb1cf167e9 | 143 | newEvent = NONE_DETECTED ; |
Rhyme | 0:4ceb1cf167e9 | 144 | } |
Rhyme | 0:4ceb1cf167e9 | 145 | wait(0.1) ; |
Rhyme | 0:4ceb1cf167e9 | 146 | } |
Rhyme | 0:4ceb1cf167e9 | 147 | } |