Simple Ranging Example, using Expansion Board Sensor, driven via Interrupts.

Dependencies:   mbed X_NUCLEO_53L1A1_mbed

Committer:
JerrySzczurak
Date:
Tue Apr 09 10:10:36 2019 +0000
Revision:
14:d3904b05aad6
Parent:
10:891e10d3b4a6
Child:
17:e7a6fd6d3c97
CPP hello world working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
johnAlexander 0:ce8359133ae6 1 #include "mbed.h"
JerrySzczurak 14:d3904b05aad6 2 #include "XNucleo53L1A1.h"
JerrySzczurak 14:d3904b05aad6 3 #include "vl53L1x_I2c.h"
johnAlexander 0:ce8359133ae6 4 #include <stdio.h>
johnAlexander 0:ce8359133ae6 5
JerrySzczurak 14:d3904b05aad6 6 /* This VL53L1X Expansion board test application performs a range measurement in polling mode
johnAlexander 4:c8932fb926d6 7 on the onboard embedded top sensor. */
johnAlexander 0:ce8359133ae6 8
JerrySzczurak 14:d3904b05aad6 9 #define VL53L1_I2C_SDA D14
JerrySzczurak 14:d3904b05aad6 10 #define VL53L1_I2C_SCL D15
johnAlexander 1:3483e701ec59 11
johnAlexander 0:ce8359133ae6 12
JerrySzczurak 14:d3904b05aad6 13 /**
JerrySzczurak 14:d3904b05aad6 14 * Expander 0 i2c address[7..0] format
JerrySzczurak 14:d3904b05aad6 15 */
JerrySzczurak 14:d3904b05aad6 16 #define I2cExpAddr0 134 // (0x43*2)
JerrySzczurak 14:d3904b05aad6 17 /**
JerrySzczurak 14:d3904b05aad6 18 * Expander 1 i2c address[7..0] format
JerrySzczurak 14:d3904b05aad6 19 */
JerrySzczurak 14:d3904b05aad6 20 #define I2cExpAddr1 132 // (0x42*2)
JerrySzczurak 14:d3904b05aad6 21
JerrySzczurak 14:d3904b05aad6 22 /**
JerrySzczurak 14:d3904b05aad6 23 * GPIO monitor pin state register
JerrySzczurak 14:d3904b05aad6 24 * 16 bit register LSB at lowest offset (little endian)
JerrySzczurak 14:d3904b05aad6 25 */
JerrySzczurak 14:d3904b05aad6 26 #define GPMR 0x10
JerrySzczurak 14:d3904b05aad6 27 /**
JerrySzczurak 14:d3904b05aad6 28 * STMPE1600 GPIO set pin state register
JerrySzczurak 14:d3904b05aad6 29 * 16 bit register LSB at lowest offset (little endian)
JerrySzczurak 14:d3904b05aad6 30 */
JerrySzczurak 14:d3904b05aad6 31 #define GPSR 0x12
JerrySzczurak 14:d3904b05aad6 32 /**
JerrySzczurak 14:d3904b05aad6 33 * STMPE1600 GPIO set pin direction register
JerrySzczurak 14:d3904b05aad6 34 * 16 bit register LSB at lowest offset
JerrySzczurak 14:d3904b05aad6 35 */
JerrySzczurak 14:d3904b05aad6 36 #define GPDR 0x14
JerrySzczurak 14:d3904b05aad6 37
JerrySzczurak 14:d3904b05aad6 38 static XNucleo53L1A1 *board=NULL;
JerrySzczurak 14:d3904b05aad6 39 Serial pc(SERIAL_TX, SERIAL_RX);
JerrySzczurak 14:d3904b05aad6 40
johnAlexander 0:ce8359133ae6 41 /*=================================== Main ==================================
johnAlexander 0:ce8359133ae6 42 =============================================================================*/
johnAlexander 0:ce8359133ae6 43 int main()
johnAlexander 0:ce8359133ae6 44 {
JerrySzczurak 14:d3904b05aad6 45 int status;
JerrySzczurak 14:d3904b05aad6 46
JerrySzczurak 14:d3904b05aad6 47 printf("Hello world!\r\n");
johnAlexander 3:b3f70617a6b3 48
JerrySzczurak 14:d3904b05aad6 49 vl53L1X_DevI2C *dev_I2C = new vl53L1X_DevI2C(VL53L1_I2C_SDA, VL53L1_I2C_SCL);
JerrySzczurak 14:d3904b05aad6 50
JerrySzczurak 14:d3904b05aad6 51 printf("I2C device created!\r\n");
johnAlexander 9:9733cfdb0a18 52
johnAlexander 7:c8087e7333b8 53 /* creates the 53L0A1 expansion board singleton obj */
JerrySzczurak 14:d3904b05aad6 54 board = XNucleo53L1A1::instance(dev_I2C, A2, D8, D2);
JerrySzczurak 14:d3904b05aad6 55 printf("board created!\r\n");
johnAlexander 3:b3f70617a6b3 56
johnAlexander 7:c8087e7333b8 57 /* init the 53L0A1 expansion board with default values */
johnAlexander 7:c8087e7333b8 58 status = board->init_board();
johnAlexander 9:9733cfdb0a18 59 if (status) {
Davidroid 10:891e10d3b4a6 60 printf("Failed to init board!\r\n");
JerrySzczurak 14:d3904b05aad6 61 // return 0;
johnAlexander 7:c8087e7333b8 62 }
JerrySzczurak 14:d3904b05aad6 63 printf("board initiated! - %d\r\n", status);
JerrySzczurak 14:d3904b05aad6 64
JerrySzczurak 14:d3904b05aad6 65 status = board->sensor_centre->VL53L1X_StartRanging();
JerrySzczurak 14:d3904b05aad6 66 printf("start ranging! - %d\r\n", status);
JerrySzczurak 14:d3904b05aad6 67 uint8_t ready = 0;
JerrySzczurak 14:d3904b05aad6 68 uint16_t distance_centre = 0;
JerrySzczurak 14:d3904b05aad6 69
JerrySzczurak 14:d3904b05aad6 70 while (1)
JerrySzczurak 14:d3904b05aad6 71 {
JerrySzczurak 14:d3904b05aad6 72 do {
JerrySzczurak 14:d3904b05aad6 73 board->sensor_centre->VL53L1X_CheckForDataReady(&ready);
JerrySzczurak 14:d3904b05aad6 74 } while (!ready);
johnAlexander 4:c8932fb926d6 75
JerrySzczurak 14:d3904b05aad6 76 board->sensor_centre->VL53L1X_GetRangeStatus(&ready);
JerrySzczurak 14:d3904b05aad6 77 board->sensor_centre->VL53L1X_GetDistance(&distance_centre);
JerrySzczurak 14:d3904b05aad6 78 //board->sensor_centre->VL53L1X_ClearInterrupt();
JerrySzczurak 14:d3904b05aad6 79 printf("%d\t", distance_centre);
JerrySzczurak 14:d3904b05aad6 80 }
johnAlexander 0:ce8359133ae6 81 }