Sample Program for Maker Faire Tokyo 2017
Dependencies: X_NUCLEO_6180XA1 mbed
Fork of HelloWorld_6180XA1 by
Diff: main.cpp
- Revision:
- 17:68515d0667af
- Parent:
- 16:fbf61b7c65ba
- Child:
- 18:6312be3b32d9
--- a/main.cpp Wed Oct 28 13:09:32 2015 +0000 +++ b/main.cpp Wed Oct 28 14:56:58 2015 +0000 @@ -16,7 +16,7 @@ //#define ALS_SINGLE_SHOT_POLLING //#define RANGE_CONTINUOUS_POLLING //#define ALS_CONTINUOUS_POLLING -//#define RANGE_CONTINUOUS_INTERRUPT +#define RANGE_CONTINUOUS_INTERRUPT //#define ALS_CONTINUOUS_INTERRUPT //#define INTERLEAVED_MODE_INTERRUPT //#define RANGE_CONTINUOUS_POLLING_LOW_THRESHOLD @@ -31,7 +31,6 @@ //#define ALS_CONTINUOUS_INTERRUPT_LOW_THRESHOLD //#define ALS_CONTINUOUS_INTERRUPT_HIGH_THRESHOLD //#define ALS_CONTINUOUS_INTERRUPT_OUT_OF_WINDOW -#define HAND_GESTURE /* timer and digital out pin used for debugging */ //Timer timer; @@ -41,7 +40,7 @@ DevI2C device_i2c(VL6180X_I2C_SDA, VL6180X_I2C_SCL); static X_NUCLEO_6180XA1 *board=X_NUCLEO_6180XA1::Instance(&device_i2c); -HmiBBGesture gesture_reco; +//HmiBBGesture gesture_reco; MeasureData_t data_sensor_top, data_sensor_bottom, data_sensor_left, data_sensor_right; @@ -268,99 +267,6 @@ printf("Failed to stop measurement!\n\r"); #endif -/* Hand Gesture test application */ -#ifdef HAND_GESTURE -#define ALS_DELAY 5000 - int gest_code, prev_gest_code, gest_duration; - char str[5]; - char valLeft[] = {'E'}; - char valRight[] = {'3'}; - char valTap[] = {'0'}; - unsigned int timeout = 10000; - - status_l=board->sensor_left->StartMeasurement(range_continuous_interrupt, SensorLeftIRQ, &data_sensor_left, NULL, NULL); - status_r=board->sensor_right->StartMeasurement(range_continuous_interrupt, SensorRightIRQ, &data_sensor_right, NULL, NULL); - status_t=board->sensor_top->StartMeasurement(als_continuous_polling, NULL, &data_sensor_top, NULL, NULL); - gesture_reco.Init(150, 100, 200, 60, 500); - if((!status_l)&&(!status_r)&&(!status_t)) - { - while(1) - { - if(flag_sensor_left) - { - flag_sensor_left=false; - status_l=board->sensor_left->HandleIRQ(range_continuous_interrupt, &data_sensor_left); - } - if(flag_sensor_right) - { - flag_sensor_right=false; - status_r=board->sensor_right->HandleIRQ(range_continuous_interrupt, &data_sensor_right); - } - if(data_sensor_left.range_mm>400) - data_sensor_left.range_mm=400; - if(data_sensor_right.range_mm>400) - data_sensor_right.range_mm=400; - gest_code=gesture_reco.Update(data_sensor_right.range_mm, data_sensor_left.range_mm, &gest_duration); - if(timeout==ALS_DELAY && gest_code==-1) - { - status=board->sensor_top->GetMeasurement(als_continuous_polling, &data_sensor_top); - if(!status_t) - printf("Light measure: %d lux\n\r",data_sensor_top.lux); - else - printf("Invalid light value!\n\r"); - } - switch(gest_code) - { - case -1: - timeout++; - if(timeout>=ALS_DELAY) - timeout=ALS_DELAY; - break; - case 0: //tap and start timer - if(gest_code!=prev_gest_code) - { - prev_gest_code=gest_code; - sprintf(str,"%s","0-"); - board->display->DisplayDigit(valTap, 1); - } - else - { - if(strcmp(str,"0-")==0) - { - sprintf(str,"-0"); - board->display->DisplayDigit(valTap, 2); - } - else - { - sprintf(str,"0-"); - board->display->DisplayDigit(valTap, 1); - } - } - timeout=0; - break; - case 1: //left to right - board->display->DisplayDigit(valRight, 3); - timeout=0; - break; - case 2: //right to left - board->display->DisplayDigit(valLeft, 0); - timeout=0; - break; - default: - printf("Errore!\n\r"); - } - } - } - else - printf("Failed to start measurement!\n\r"); - status_t=board->sensor_top->StopMeasurement(range_continuous_interrupt_low_threshold); - if(status_t) - printf("Failed to stop measurement!\n\r"); - status_t=board->sensor_top->StopMeasurement(als_continuous_interrupt); - if(status_t) - printf("Failed to stop measurement!\n\r"); -#endif - delete board; }