test program for IS31SE5000

Dependencies:   IS31SE5000 mbed vt100

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?

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