Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: HCSR04 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;
}
