![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
V1 test
Dependencies: mbed X_NUCLEO_53L0A1
Diff: main.cpp
- Revision:
- 0:7fa8f6402b51
- Child:
- 1:b594314c402b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Nov 29 13:30:11 2018 +0000 @@ -0,0 +1,66 @@ +#include "mbed.h" +#include "XNucleo53L0A1.h" +#include <stdio.h> + +#define VL53L0_I2C_SDA D14 +#define VL53L0_I2C_SCL D15 + +static XNucleo53L0A1 *board=NULL; + +DigitalOut led1(LED1); + +InterruptIn button1(USER_BUTTON); +volatile bool button1_pressed = false; // Used in the main loop +volatile bool button1_enabled = true; // Used for debouncing +Timeout button1_timeout; // Used for debouncing + +// Enables button when bouncing is over +void button1_enabled_cb(void) +{ + button1_enabled = true; +} + +// ISR handling button pressed event +void button1_onpressed_cb(void) +{ + if (button1_enabled) { // Disabled while the button is bouncing + button1_enabled = false; + button1_pressed = true; // To be read by the main loop + button1_timeout.attach(callback(button1_enabled_cb), 0.3); // Debounce time 300 ms + } +} + +int main() +{ + + //button1.mode(PullUp); // Activate pull-up + button1.fall(callback(button1_onpressed_cb)); // Attach ISR to handle button press event + + int idx = 0; // Just for printf below + int status; + uint32_t distance; + + DevI2C *device_i2c = new DevI2C(VL53L0_I2C_SDA, VL53L0_I2C_SCL); + + /* creates the 53L0A1 expansion board singleton obj */ + board = XNucleo53L0A1::instance(device_i2c, A2, D8, D2); + + /* init the 53L0A1 expansion board with default values */ + status = board->init_board(); + if (status) { + printf("Failed to init board!\r\n"); + return 0; + } + + while (1) { + status = board->sensor_centre->get_distance(&distance); + if (status == VL53L0X_ERROR_NONE) { + printf("Distance : %ld\r\n", distance); + } + if (button1_pressed) { // Set when button is pressed + button1_pressed = false; + printf("Button pressed %d\n", idx++); + led1 = !led1; + } + } +}