test program for IS31SE5000
Dependencies: IS31SE5000 mbed vt100
main.cpp@0:4ceb1cf167e9, 2015-12-24 (annotated)
- Committer:
- Rhyme
- Date:
- Thu Dec 24 00:42:33 2015 +0000
- Revision:
- 0:4ceb1cf167e9
- Child:
- 1:dc5f47cbc29f
commit before publishing
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 | 0:4ceb1cf167e9 | 3 | #include "IS31SE5000.h" |
Rhyme | 0:4ceb1cf167e9 | 4 | |
Rhyme | 0:4ceb1cf167e9 | 5 | #define IS31SE5000_I2C_ADDRESS (0x55) |
Rhyme | 0:4ceb1cf167e9 | 6 | |
Rhyme | 0:4ceb1cf167e9 | 7 | #if defined (TARGET_KL25Z) |
Rhyme | 0:4ceb1cf167e9 | 8 | #define PIN_SCL PTE1 |
Rhyme | 0:4ceb1cf167e9 | 9 | #define PIN_SDA PTE0 |
Rhyme | 0:4ceb1cf167e9 | 10 | #define PIN_INT1 PTA13 |
Rhyme | 0:4ceb1cf167e9 | 11 | #define BOARD_NAME "FRDM-KL25Z" |
Rhyme | 0:4ceb1cf167e9 | 12 | #elif defined (TARGET_KL46Z) |
Rhyme | 0:4ceb1cf167e9 | 13 | #define PIN_SCL PTE1 |
Rhyme | 0:4ceb1cf167e9 | 14 | #define PIN_SDA PTE0 |
Rhyme | 0:4ceb1cf167e9 | 15 | #define BOARD_NAME "FRDM-KL46Z" |
Rhyme | 0:4ceb1cf167e9 | 16 | #elif defined (TARGET_K64F) |
Rhyme | 0:4ceb1cf167e9 | 17 | #define PIN_SCL PTE24 |
Rhyme | 0:4ceb1cf167e9 | 18 | #define PIN_SDA PTE25 |
Rhyme | 0:4ceb1cf167e9 | 19 | #define BOARD_NAME "FRDM-K64Z" |
Rhyme | 0:4ceb1cf167e9 | 20 | #elif defined (TARGET_K22F) |
Rhyme | 0:4ceb1cf167e9 | 21 | #define PIN_SCL PTE1 |
Rhyme | 0:4ceb1cf167e9 | 22 | #define PIN_SDA PTE0 |
Rhyme | 0:4ceb1cf167e9 | 23 | #define PIN_INT1 PTB17 /* this is for quattro-II */ |
Rhyme | 0:4ceb1cf167e9 | 24 | #define BOARD_NAME "quattro-II" |
Rhyme | 0:4ceb1cf167e9 | 25 | /* #define PIN_INT1 PTB19 *//* this is for FRDM-K22F */ |
Rhyme | 0:4ceb1cf167e9 | 26 | /* #define BOARD_NAME "FRDM-K22F" */ |
Rhyme | 0:4ceb1cf167e9 | 27 | #elif defined (TARGET_KL05Z) |
Rhyme | 0:4ceb1cf167e9 | 28 | #define PIN_SCL PTB3 |
Rhyme | 0:4ceb1cf167e9 | 29 | #define PIN_SDA PTB4 |
Rhyme | 0:4ceb1cf167e9 | 30 | #define BOARD_NAME "FRDM-KL05Z" |
Rhyme | 0:4ceb1cf167e9 | 31 | #elif define (TARGET_F411RE) |
Rhyme | 0:4ceb1cf167e9 | 32 | #define PIN_SCL PB_8 |
Rhyme | 0:4ceb1cf167e9 | 33 | #define PIN_SDA PB_9 |
Rhyme | 0:4ceb1cf167e9 | 34 | #define BOARD_NAME "NUCLEO-F411RE" |
Rhyme | 0:4ceb1cf167e9 | 35 | #else |
Rhyme | 0:4ceb1cf167e9 | 36 | #error TARGET NOT DEFINED |
Rhyme | 0:4ceb1cf167e9 | 37 | #endif |
Rhyme | 0:4ceb1cf167e9 | 38 | |
Rhyme | 0:4ceb1cf167e9 | 39 | #define NONE_DETECTED 0x00 |
Rhyme | 0:4ceb1cf167e9 | 40 | #define MOTION_DETECTED 0x01 |
Rhyme | 0:4ceb1cf167e9 | 41 | #define PROXIMITY_DETECTED 0x02 |
Rhyme | 0:4ceb1cf167e9 | 42 | |
Rhyme | 0:4ceb1cf167e9 | 43 | vt100 *tty = 0 ; |
Rhyme | 0:4ceb1cf167e9 | 44 | IS31SE5000 *is31 = 0 ; |
Rhyme | 0:4ceb1cf167e9 | 45 | char *board = BOARD_NAME ; |
Rhyme | 0:4ceb1cf167e9 | 46 | uint8_t newEvent = NONE_DETECTED ; |
Rhyme | 0:4ceb1cf167e9 | 47 | |
Rhyme | 0:4ceb1cf167e9 | 48 | // PwmOut led(PTD1) ; |
Rhyme | 0:4ceb1cf167e9 | 49 | InterruptIn myInt(PIN_INT1) ; |
Rhyme | 0:4ceb1cf167e9 | 50 | |
Rhyme | 0:4ceb1cf167e9 | 51 | void reportIS31SE5000(IS31SE5000 *is31, int x, int y) |
Rhyme | 0:4ceb1cf167e9 | 52 | { |
Rhyme | 0:4ceb1cf167e9 | 53 | tty->locate(x, y) ; |
Rhyme | 0:4ceb1cf167e9 | 54 | printf("reportIS31SE5000\n") ; |
Rhyme | 0:4ceb1cf167e9 | 55 | } |
Rhyme | 0:4ceb1cf167e9 | 56 | |
Rhyme | 0:4ceb1cf167e9 | 57 | void reportMotion(IS31SE5000 *is31, int x, int y) |
Rhyme | 0:4ceb1cf167e9 | 58 | { |
Rhyme | 0:4ceb1cf167e9 | 59 | uint8_t data ; |
Rhyme | 0:4ceb1cf167e9 | 60 | data = is31->getMD() ; |
Rhyme | 0:4ceb1cf167e9 | 61 | tty->locate(x, y) ; |
Rhyme | 0:4ceb1cf167e9 | 62 | printf("Motion Detected\n") ; |
Rhyme | 0:4ceb1cf167e9 | 63 | tty->locate(x, y+2) ; |
Rhyme | 0:4ceb1cf167e9 | 64 | switch(data) { |
Rhyme | 0:4ceb1cf167e9 | 65 | case 0x01: // MD_PD2_PD1: |
Rhyme | 0:4ceb1cf167e9 | 66 | printf(" PD2 -> PD1 \n") ; |
Rhyme | 0:4ceb1cf167e9 | 67 | break ; |
Rhyme | 0:4ceb1cf167e9 | 68 | case 0x02: // MD_PD1_PD2: |
Rhyme | 0:4ceb1cf167e9 | 69 | printf(" PD1 -> PD2 \n") ; |
Rhyme | 0:4ceb1cf167e9 | 70 | break ; |
Rhyme | 0:4ceb1cf167e9 | 71 | default: |
Rhyme | 0:4ceb1cf167e9 | 72 | printf("Event 0x%02X\n", data) ; |
Rhyme | 0:4ceb1cf167e9 | 73 | break ; |
Rhyme | 0:4ceb1cf167e9 | 74 | } |
Rhyme | 0:4ceb1cf167e9 | 75 | } |
Rhyme | 0:4ceb1cf167e9 | 76 | |
Rhyme | 0:4ceb1cf167e9 | 77 | void reportProximity(IS31SE5000 *is31, int x, int y) |
Rhyme | 0:4ceb1cf167e9 | 78 | { |
Rhyme | 0:4ceb1cf167e9 | 79 | uint8_t data ; |
Rhyme | 0:4ceb1cf167e9 | 80 | tty->locate(x, y) ; |
Rhyme | 0:4ceb1cf167e9 | 81 | printf("Proximity Detected\n") ; |
Rhyme | 0:4ceb1cf167e9 | 82 | data = is31->getPD() ; |
Rhyme | 0:4ceb1cf167e9 | 83 | tty->locate(x, y+2) ; |
Rhyme | 0:4ceb1cf167e9 | 84 | switch(data) { |
Rhyme | 0:4ceb1cf167e9 | 85 | case 0x01: // PD_BE_OFF: |
Rhyme | 0:4ceb1cf167e9 | 86 | printf(" Be OFF \n") ; |
Rhyme | 0:4ceb1cf167e9 | 87 | break ; |
Rhyme | 0:4ceb1cf167e9 | 88 | case 0x02: // PD_BE_CLOSE: |
Rhyme | 0:4ceb1cf167e9 | 89 | printf(" Be Close \n") ; |
Rhyme | 0:4ceb1cf167e9 | 90 | break ; |
Rhyme | 0:4ceb1cf167e9 | 91 | default: |
Rhyme | 0:4ceb1cf167e9 | 92 | printf("Event 0x%02X\n", data) ; |
Rhyme | 0:4ceb1cf167e9 | 93 | break ; |
Rhyme | 0:4ceb1cf167e9 | 94 | } |
Rhyme | 0:4ceb1cf167e9 | 95 | } |
Rhyme | 0:4ceb1cf167e9 | 96 | |
Rhyme | 0:4ceb1cf167e9 | 97 | void myISR(void) |
Rhyme | 0:4ceb1cf167e9 | 98 | { |
Rhyme | 0:4ceb1cf167e9 | 99 | uint8_t mode ; |
Rhyme | 0:4ceb1cf167e9 | 100 | newEvent = NONE_DETECTED ; |
Rhyme | 0:4ceb1cf167e9 | 101 | |
Rhyme | 0:4ceb1cf167e9 | 102 | if (is31) { |
Rhyme | 0:4ceb1cf167e9 | 103 | mode = is31->getMode() ; |
Rhyme | 0:4ceb1cf167e9 | 104 | switch(mode) { |
Rhyme | 0:4ceb1cf167e9 | 105 | case 0x00: // MODE_MOTION: |
Rhyme | 0:4ceb1cf167e9 | 106 | newEvent = MOTION_DETECTED ; |
Rhyme | 0:4ceb1cf167e9 | 107 | break ; |
Rhyme | 0:4ceb1cf167e9 | 108 | case 0x01: // MODE_PROXIMITY: |
Rhyme | 0:4ceb1cf167e9 | 109 | newEvent = PROXIMITY_DETECTED ; |
Rhyme | 0:4ceb1cf167e9 | 110 | break ; |
Rhyme | 0:4ceb1cf167e9 | 111 | default: |
Rhyme | 0:4ceb1cf167e9 | 112 | printf("Unknown mode\n") ; |
Rhyme | 0:4ceb1cf167e9 | 113 | break ; |
Rhyme | 0:4ceb1cf167e9 | 114 | } |
Rhyme | 0:4ceb1cf167e9 | 115 | } |
Rhyme | 0:4ceb1cf167e9 | 116 | } |
Rhyme | 0:4ceb1cf167e9 | 117 | |
Rhyme | 0:4ceb1cf167e9 | 118 | int main(void) { |
Rhyme | 0:4ceb1cf167e9 | 119 | int event_count = 0 ; |
Rhyme | 0:4ceb1cf167e9 | 120 | tty = new vt100() ; |
Rhyme | 0:4ceb1cf167e9 | 121 | tty->cls() ; |
Rhyme | 0:4ceb1cf167e9 | 122 | |
Rhyme | 0:4ceb1cf167e9 | 123 | tty->locate(25, 1) ; |
Rhyme | 0:4ceb1cf167e9 | 124 | printf("<<< %s >>>", board) ; |
Rhyme | 0:4ceb1cf167e9 | 125 | |
Rhyme | 0:4ceb1cf167e9 | 126 | tty->locate(25, 10) ; |
Rhyme | 0:4ceb1cf167e9 | 127 | printf("\n") ; |
Rhyme | 0:4ceb1cf167e9 | 128 | |
Rhyme | 0:4ceb1cf167e9 | 129 | myInt.fall(&myISR) ; |
Rhyme | 0:4ceb1cf167e9 | 130 | |
Rhyme | 0:4ceb1cf167e9 | 131 | is31 = new IS31SE5000(PIN_SDA, PIN_SCL, IS31SE5000_I2C_ADDRESS) ; |
Rhyme | 0:4ceb1cf167e9 | 132 | is31->motionMode() ; |
Rhyme | 0:4ceb1cf167e9 | 133 | is31->activate() ; |
Rhyme | 0:4ceb1cf167e9 | 134 | tty->locate(25, 3) ; |
Rhyme | 0:4ceb1cf167e9 | 135 | printf("Motion Detect Mode\n") ; |
Rhyme | 0:4ceb1cf167e9 | 136 | tty->locate(25, 10) ; |
Rhyme | 0:4ceb1cf167e9 | 137 | printf("Proximity Mode \n") ; |
Rhyme | 0:4ceb1cf167e9 | 138 | tty->locate(23, 3) ; |
Rhyme | 0:4ceb1cf167e9 | 139 | printf("*\n") ; |
Rhyme | 0:4ceb1cf167e9 | 140 | |
Rhyme | 0:4ceb1cf167e9 | 141 | while(1) { |
Rhyme | 0:4ceb1cf167e9 | 142 | if (newEvent != NONE_DETECTED) { |
Rhyme | 0:4ceb1cf167e9 | 143 | event_count++ ; |
Rhyme | 0:4ceb1cf167e9 | 144 | switch(newEvent) { |
Rhyme | 0:4ceb1cf167e9 | 145 | case MOTION_DETECTED: |
Rhyme | 0:4ceb1cf167e9 | 146 | reportMotion(is31, 25, 5) ; |
Rhyme | 0:4ceb1cf167e9 | 147 | if (event_count > 5) { |
Rhyme | 0:4ceb1cf167e9 | 148 | tty->locate(23, 3) ; |
Rhyme | 0:4ceb1cf167e9 | 149 | printf(" ") ; |
Rhyme | 0:4ceb1cf167e9 | 150 | tty->locate(23, 10) ; |
Rhyme | 0:4ceb1cf167e9 | 151 | printf("*\n") ; |
Rhyme | 0:4ceb1cf167e9 | 152 | is31->proximityMode() ; |
Rhyme | 0:4ceb1cf167e9 | 153 | event_count = 0 ; |
Rhyme | 0:4ceb1cf167e9 | 154 | } |
Rhyme | 0:4ceb1cf167e9 | 155 | break ; |
Rhyme | 0:4ceb1cf167e9 | 156 | case PROXIMITY_DETECTED: |
Rhyme | 0:4ceb1cf167e9 | 157 | reportProximity(is31, 25, 12) ; |
Rhyme | 0:4ceb1cf167e9 | 158 | if (event_count > 5) { |
Rhyme | 0:4ceb1cf167e9 | 159 | tty->locate(23, 10) ; |
Rhyme | 0:4ceb1cf167e9 | 160 | printf(" ") ; |
Rhyme | 0:4ceb1cf167e9 | 161 | tty->locate(23, 3) ; |
Rhyme | 0:4ceb1cf167e9 | 162 | printf("*\n") ; |
Rhyme | 0:4ceb1cf167e9 | 163 | is31->motionMode() ; |
Rhyme | 0:4ceb1cf167e9 | 164 | event_count = 0 ; |
Rhyme | 0:4ceb1cf167e9 | 165 | } |
Rhyme | 0:4ceb1cf167e9 | 166 | break ; |
Rhyme | 0:4ceb1cf167e9 | 167 | default: |
Rhyme | 0:4ceb1cf167e9 | 168 | printf("Unknown event 0x%02X\n", newEvent) ; |
Rhyme | 0:4ceb1cf167e9 | 169 | break ; |
Rhyme | 0:4ceb1cf167e9 | 170 | } |
Rhyme | 0:4ceb1cf167e9 | 171 | newEvent = NONE_DETECTED ; |
Rhyme | 0:4ceb1cf167e9 | 172 | } |
Rhyme | 0:4ceb1cf167e9 | 173 | wait(0.1) ; |
Rhyme | 0:4ceb1cf167e9 | 174 | } |
Rhyme | 0:4ceb1cf167e9 | 175 | } |