Ranging with the Time-of-Flight (ToF) sensors on the X-NUCLEO-53L1A1 expansion board, and 2 Satellite boards connected to the expansion board.
Dependencies: mbed X_NUCLEO_53L1A1_mbed
main.cpp@14:d3904b05aad6, 2019-04-09 (annotated)
- 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?
User | Revision | Line number | New 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 | } |