test program for IS31SE5000

Dependencies:   IS31SE5000 mbed vt100

Committer:
Rhyme
Date:
Thu May 11 07:30:54 2017 +0000
Revision:
2:d4dce142c3aa
Parent:
1:dc5f47cbc29f
Comments in main.cpp moved from /** to /* to avoid too wordy document display

Who changed what in which revision?

UserRevisionLine numberNew 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 }