![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
V1 test
Dependencies: mbed X_NUCLEO_53L0A1
main.cpp
- Committer:
- lcouturier
- Date:
- 2018-11-29
- Revision:
- 0:7fa8f6402b51
- Child:
- 1:b594314c402b
File content as of revision 0:7fa8f6402b51:
#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; } } }