check program for VL53L0X_simple library
Dependencies: VL53L0X_simple TextLCD
Please refer below page.
/users/kenjiArai/notebook/vl53l0x-tof-sensor/
main.cpp@0:da0fdf120892, 2018-02-04 (annotated)
- Committer:
- kenjiArai
- Date:
- Sun Feb 04 02:45:35 2018 +0000
- Revision:
- 0:da0fdf120892
- Child:
- 1:45891160ccab
check program for VL53L0X_simple library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 0:da0fdf120892 | 1 | /* |
kenjiArai | 0:da0fdf120892 | 2 | * Mbed Application program |
kenjiArai | 0:da0fdf120892 | 3 | * Time-of-Flight ranging and gesture detection sensor / STMicro VL53L0X |
kenjiArai | 0:da0fdf120892 | 4 | * http://www.st.com/ja/imaging-and-photonics-solutions/vl53l0x.html |
kenjiArai | 0:da0fdf120892 | 5 | * |
kenjiArai | 0:da0fdf120892 | 6 | * 1) AKIZUKI AE-VL53L0X |
kenjiArai | 0:da0fdf120892 | 7 | * http://akizukidenshi.com/catalog/g/gM-12590/ |
kenjiArai | 0:da0fdf120892 | 8 | * 2) SWITCH SCIENCE Pololu VL53L0X (POLOLU-2490) |
kenjiArai | 0:da0fdf120892 | 9 | * https://www.switch-science.com/catalog/2869/ |
kenjiArai | 0:da0fdf120892 | 10 | * 3) SWITCH SCIENCE VL53L0X (SSCI-028943) |
kenjiArai | 0:da0fdf120892 | 11 | * https://www.switch-science.com/catalog/2894/ |
kenjiArai | 0:da0fdf120892 | 12 | * 4) Strawberry Linux |
kenjiArai | 0:da0fdf120892 | 13 | * https://strawberry-linux.com/catalog/items?code=15310 |
kenjiArai | 0:da0fdf120892 | 14 | * |
kenjiArai | 0:da0fdf120892 | 15 | * ---- Tested AE-VL53L0X BOARD and handmade circuit ---- |
kenjiArai | 0:da0fdf120892 | 16 | * Tested on below Mbed boards and works fine on mbed 2.0 |
kenjiArai | 0:da0fdf120892 | 17 | * Nucleo-F303K8 |
kenjiArai | 0:da0fdf120892 | 18 | * Nucleo-F334R8, -F401RE, -F411RE, -F446RE |
kenjiArai | 0:da0fdf120892 | 19 | * Nucleo-L053R8, -L073RZ, -L152RE, -L476RG |
kenjiArai | 0:da0fdf120892 | 20 | * FRDM-K64F |
kenjiArai | 0:da0fdf120892 | 21 | * TY51822r3 |
kenjiArai | 0:da0fdf120892 | 22 | * Run also on mbed-os5 (Tested on Nucleo-F446RE) |
kenjiArai | 0:da0fdf120892 | 23 | * |
kenjiArai | 0:da0fdf120892 | 24 | * Copyright (c) 2018 Kenji Arai / JH1PJL |
kenjiArai | 0:da0fdf120892 | 25 | * http://www.page.sannet.ne.jp/kenjia/index.html |
kenjiArai | 0:da0fdf120892 | 26 | * http://mbed.org/users/kenjiArai/ |
kenjiArai | 0:da0fdf120892 | 27 | * Created: January 21st, 2018 |
kenjiArai | 0:da0fdf120892 | 28 | * Revised: Feburary 4th, 2018 |
kenjiArai | 0:da0fdf120892 | 29 | */ |
kenjiArai | 0:da0fdf120892 | 30 | |
kenjiArai | 0:da0fdf120892 | 31 | // Include -------------------------------------------------------------------- |
kenjiArai | 0:da0fdf120892 | 32 | #include "mbed.h" |
kenjiArai | 0:da0fdf120892 | 33 | #include "TextLCD.h" |
kenjiArai | 0:da0fdf120892 | 34 | #include "VL53L0X.h" |
kenjiArai | 0:da0fdf120892 | 35 | |
kenjiArai | 0:da0fdf120892 | 36 | // Definition ----------------------------------------------------------------- |
kenjiArai | 0:da0fdf120892 | 37 | #define USE_LCD 1 |
kenjiArai | 0:da0fdf120892 | 38 | |
kenjiArai | 0:da0fdf120892 | 39 | // Constructor ---------------------------------------------------------------- |
kenjiArai | 0:da0fdf120892 | 40 | DigitalOut myled(LED1); |
kenjiArai | 0:da0fdf120892 | 41 | Serial pc(USBTX, USBRX); |
kenjiArai | 0:da0fdf120892 | 42 | #if 1 |
kenjiArai | 0:da0fdf120892 | 43 | //I2C i2c(P0_30, P0_7); // only for TY51822r3 |
kenjiArai | 0:da0fdf120892 | 44 | I2C i2c(I2C_SDA, I2C_SCL); |
kenjiArai | 0:da0fdf120892 | 45 | VL53L0X sensor(i2c, D9); // XSHUT = NC |
kenjiArai | 0:da0fdf120892 | 46 | #else |
kenjiArai | 0:da0fdf120892 | 47 | //VL53L0X sensor(I2C_SDA, I2C_SCL, D9); // use XShut pin |
kenjiArai | 0:da0fdf120892 | 48 | VL53L0X sensor(I2C_SDA, I2C_SCL, NC); // XSHUT = NC |
kenjiArai | 0:da0fdf120892 | 49 | #endif |
kenjiArai | 0:da0fdf120892 | 50 | #if USE_LCD |
kenjiArai | 0:da0fdf120892 | 51 | TextLCD_I2C_N lcd(&i2c, 0x7c, TextLCD::LCD8x2); // LCD(Akizuki AQM0802A) |
kenjiArai | 0:da0fdf120892 | 52 | #endif |
kenjiArai | 0:da0fdf120892 | 53 | Timer t; |
kenjiArai | 0:da0fdf120892 | 54 | |
kenjiArai | 0:da0fdf120892 | 55 | // RAM ------------------------------------------------------------------------ |
kenjiArai | 0:da0fdf120892 | 56 | |
kenjiArai | 0:da0fdf120892 | 57 | // ROM / Constant data -------------------------------------------------------- |
kenjiArai | 0:da0fdf120892 | 58 | char *const msg0 = "\r\nVL53L0X is running correctly!!\r\n"; |
kenjiArai | 0:da0fdf120892 | 59 | char *const msg1 = "\r\nVL53L0X -> something is wrong!!\r\n"; |
kenjiArai | 0:da0fdf120892 | 60 | char *const msg2 = "#,"; |
kenjiArai | 0:da0fdf120892 | 61 | char *const msg3 = "d[mm]=,"; |
kenjiArai | 0:da0fdf120892 | 62 | char *const msg4 = "d[mm]=,error,"; |
kenjiArai | 0:da0fdf120892 | 63 | char *const msg5 = "VL53[mS]=, "; |
kenjiArai | 0:da0fdf120892 | 64 | char *const msg6 = "all[mS]=, "; |
kenjiArai | 0:da0fdf120892 | 65 | |
kenjiArai | 0:da0fdf120892 | 66 | // Function prototypes -------------------------------------------------------- |
kenjiArai | 0:da0fdf120892 | 67 | |
kenjiArai | 0:da0fdf120892 | 68 | //------------------------------------------------------------------------------ |
kenjiArai | 0:da0fdf120892 | 69 | // Control Program |
kenjiArai | 0:da0fdf120892 | 70 | //------------------------------------------------------------------------------ |
kenjiArai | 0:da0fdf120892 | 71 | int main() |
kenjiArai | 0:da0fdf120892 | 72 | { |
kenjiArai | 0:da0fdf120892 | 73 | int status = VL53L0X_ERROR_NONE; |
kenjiArai | 0:da0fdf120892 | 74 | uint32_t data; |
kenjiArai | 0:da0fdf120892 | 75 | uint32_t count = 0; |
kenjiArai | 0:da0fdf120892 | 76 | uint32_t tm_sensor; |
kenjiArai | 0:da0fdf120892 | 77 | uint32_t tm_all_work; |
kenjiArai | 0:da0fdf120892 | 78 | |
kenjiArai | 0:da0fdf120892 | 79 | #if USE_LCD |
kenjiArai | 0:da0fdf120892 | 80 | lcd.locate(0, 0); |
kenjiArai | 0:da0fdf120892 | 81 | // 12345678 |
kenjiArai | 0:da0fdf120892 | 82 | lcd.puts("12345678"); |
kenjiArai | 0:da0fdf120892 | 83 | lcd.locate(0, 1); |
kenjiArai | 0:da0fdf120892 | 84 | // 12345678 |
kenjiArai | 0:da0fdf120892 | 85 | lcd.puts(" JH1PJL "); |
kenjiArai | 0:da0fdf120892 | 86 | lcd.setCursor(TextLCD_Base::CurOff_BlkOff); |
kenjiArai | 0:da0fdf120892 | 87 | lcd.setContrast(0x19); |
kenjiArai | 0:da0fdf120892 | 88 | wait(2.0f); |
kenjiArai | 0:da0fdf120892 | 89 | #endif |
kenjiArai | 0:da0fdf120892 | 90 | status = sensor.set_mode(range_long_distance_33ms_200cm); |
kenjiArai | 0:da0fdf120892 | 91 | //status = sensor.set_mode(range_hi_accurate_200ms_120cm); |
kenjiArai | 0:da0fdf120892 | 92 | //status = sensor.set_mode(range_hi_speed_20ms_120cm); |
kenjiArai | 0:da0fdf120892 | 93 | if (status == VL53L0X_ERROR_NONE) { |
kenjiArai | 0:da0fdf120892 | 94 | pc.printf(msg0); |
kenjiArai | 0:da0fdf120892 | 95 | } else { |
kenjiArai | 0:da0fdf120892 | 96 | pc.printf(msg1); |
kenjiArai | 0:da0fdf120892 | 97 | } |
kenjiArai | 0:da0fdf120892 | 98 | while(true) { |
kenjiArai | 0:da0fdf120892 | 99 | t.reset(); |
kenjiArai | 0:da0fdf120892 | 100 | t.start(); |
kenjiArai | 0:da0fdf120892 | 101 | //myled = !myled; |
kenjiArai | 0:da0fdf120892 | 102 | status = sensor.get_distance(&data); |
kenjiArai | 0:da0fdf120892 | 103 | tm_sensor = t.read_ms(); |
kenjiArai | 0:da0fdf120892 | 104 | if (status == VL53L0X_ERROR_NONE) { |
kenjiArai | 0:da0fdf120892 | 105 | pc.printf("%s%5d,%s%5d,", msg2, count++, msg3, data); |
kenjiArai | 0:da0fdf120892 | 106 | } else { |
kenjiArai | 0:da0fdf120892 | 107 | pc.printf("%s%5d,%s", msg2, count++, msg4); |
kenjiArai | 0:da0fdf120892 | 108 | } |
kenjiArai | 0:da0fdf120892 | 109 | #if USE_LCD |
kenjiArai | 0:da0fdf120892 | 110 | if ((count % 4) == 0){ |
kenjiArai | 0:da0fdf120892 | 111 | lcd.locate(0, 0); |
kenjiArai | 0:da0fdf120892 | 112 | lcd.printf(" %5d ", data); |
kenjiArai | 0:da0fdf120892 | 113 | lcd.locate(0, 1); |
kenjiArai | 0:da0fdf120892 | 114 | lcd.printf(" %5d ", count); |
kenjiArai | 0:da0fdf120892 | 115 | } |
kenjiArai | 0:da0fdf120892 | 116 | #endif |
kenjiArai | 0:da0fdf120892 | 117 | pc.printf("%s%d,%s%d\r\n", msg5, tm_sensor, msg6, tm_all_work); |
kenjiArai | 0:da0fdf120892 | 118 | tm_all_work = t.read_ms(); |
kenjiArai | 0:da0fdf120892 | 119 | if (tm_all_work < 99){ |
kenjiArai | 0:da0fdf120892 | 120 | wait_ms(100 - tm_all_work); |
kenjiArai | 0:da0fdf120892 | 121 | } |
kenjiArai | 0:da0fdf120892 | 122 | } |
kenjiArai | 0:da0fdf120892 | 123 | } |