Sweep a servo according to Proximity sensor measure
Dependencies: Servo X_NUCLEO_6180XA1 mbed
Fork of HelloWorld_6180XA1 by
Diff: main.cpp
- Revision:
- 27:2afb9baf718f
- Parent:
- 26:e19e6cb2e6bb
- Child:
- 30:c8efec21544f
--- a/main.cpp Wed Nov 04 08:22:02 2015 +0000 +++ b/main.cpp Thu Nov 05 17:34:29 2015 +0100 @@ -29,10 +29,9 @@ //int start, end; //DigitalOut pin(PA_15); -DevI2C device_i2c(VL6180X_I2C_SDA, VL6180X_I2C_SCL); -static X_NUCLEO_6180XA1 *board=X_NUCLEO_6180XA1::Instance(&device_i2c); - +static X_NUCLEO_6180XA1 *board=NULL; MeasureData_t data_sensor_top; +OperatingMode operating_mode, prev_operating_mode; /* flags that handle interrupt request */ bool flag_sensor_top=false, flag_stop_measure=false; @@ -51,7 +50,7 @@ } void DisplayRefresh(OperatingMode op_mode) -{ +{ char str[5]; if(op_mode==range_continuous_interrupt) @@ -82,33 +81,66 @@ } } +OperatingMode CheckSlider(int measure) +{ + if(measure==RANGE) + return range_continuous_interrupt; + else if(measure==ALS) + return als_continuous_interrupt; +} + +void StartPrintMessage(OperatingMode op_mode) +{ + if(op_mode==range_continuous_interrupt) + printf("\nStarted range continuous interrupt measure\n\r"); + else if(prev_operating_mode==als_continuous_interrupt) + printf("\nStarted als continuous interrupt measure\n\r"); +} + +void StopPrintMessage(OperatingMode op_mode) +{ + if(op_mode==range_continuous_interrupt) + printf("Stopped range continuous interrupt measure\n\r"); + else if(prev_operating_mode==als_continuous_interrupt) + printf("Stopped als continuous interrupt measure\n\r"); +} + +void Bye() +{ + int i; + char str[5]; + + for(i=0;i<200;i++) + { + sprintf(str,"%s","BYE"); + board->display->DisplayString(str, strlen(str)); + } +} + int main() { - OperatingMode operating_mode, prev_operating_mode; + DevI2C device_i2c(VL6180X_I2C_SDA, VL6180X_I2C_SCL); + board=X_NUCLEO_6180XA1::Instance(&device_i2c); /* user button used to stop measurements in interrupt mode */ InterruptIn stop_button(USER_BUTTON); STMPE1600DigiIn measure_type(device_i2c, GPIO_11); int status, measure; - char str[5]; //device_i2c.frequency(400000); //change i2c frequncy from 100kHz to 400kHz pc.baud(115200); //change the printf baudrate status=board->InitBoard(); if(status) - printf("Failed to init the board!\n\r"); + printf("Failed to init board!\n\r"); stop_button.rise(&StopMeasureIRQ); measure=measure_type; - if(measure==RANGE) - operating_mode=range_continuous_interrupt; - else if(measure==ALS) - operating_mode=als_continuous_interrupt; + operating_mode=CheckSlider(measure); status=board->sensor_top->StartMeasurement(operating_mode, SensorTopIRQ, NULL, NULL); - prev_operating_mode=operating_mode; if(!status) { - printf("\nStart measurement\n\r"); + prev_operating_mode=operating_mode; + StartPrintMessage(operating_mode); while(1) { if(flag_sensor_top) @@ -120,48 +152,29 @@ if(flag_stop_measure) { status=board->sensor_top->StopMeasurement(prev_operating_mode); - if(status) - printf("Failed to stop measurement!\n\r"); - else - printf("Measurement stopped!\n\r"); + if(!status) + StopPrintMessage(prev_operating_mode); printf("\nProgram stopped!\n\n\r"); break; } measure=measure_type; - if(measure==RANGE) - operating_mode=range_continuous_interrupt; - else if(measure==ALS) - operating_mode=als_continuous_interrupt; + operating_mode=CheckSlider(measure); if(operating_mode!=prev_operating_mode) { DisplayRefresh(prev_operating_mode); status=board->sensor_top->StopMeasurement(prev_operating_mode); + if(!status) + StopPrintMessage(prev_operating_mode); prev_operating_mode=operating_mode; - if(status) - printf("Failed to stop measurement!\n\r"); - else - printf("Measurement stopped!\n\r"); status=board->sensor_top->StartMeasurement(operating_mode, SensorTopIRQ, NULL, NULL); - if(status) - { - printf("\nFailed to start measurement!\n\r"); - break; - } - else - printf("\nStart measurement\n\r"); + if(!status) + StartPrintMessage(operating_mode); } else DisplayRefresh(operating_mode); } } - else - printf("\nFailed to start measurement!\n\r"); - - for(status=0;status<200;status++) - { - sprintf(str,"%s","CIAO"); - board->display->DisplayString(str, strlen(str)); - } + Bye(); delete board; }