Skip to content

Instantly share code, notes, and snippets.

@erenmustafaozdal
Created September 21, 2024 08:26
Show Gist options
  • Save erenmustafaozdal/8889a69a9b181dd95744fc4bc6e8548a to your computer and use it in GitHub Desktop.
Save erenmustafaozdal/8889a69a9b181dd95744fc4bc6e8548a to your computer and use it in GitHub Desktop.
#include <Wire.h>
#include <Adafruit_VL53L0X.h>
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
#define BUZZER_PIN 9
#define VIBRATION_PIN 10
#define WARNING_DISTANCE_1 60
#define WARNING_DISTANCE_2 40
#define DANGER_DISTANCE 20
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
pinMode(VIBRATION_PIN, OUTPUT);
Serial.begin(9600);
// Start the VL53L0X sensor
if (!lox.begin()) {
Serial.println(F("Failed to start VL53L0X"));
while (1); // Enter infinite loop in case of error
}
Serial.println(F("VL53L0X API Simple Range Test"));
// Play the C5 note on the buzzer for a whole note
tone(BUZZER_PIN, 523, 1000); // 523 Hz = C5, 1000 ms = whole note
// Turn the vibration motor on for 1 second, then off
digitalWrite(VIBRATION_PIN, HIGH);
delay(1000);
digitalWrite(VIBRATION_PIN, LOW);
}
// Alert function: Buzzer plays the C5 note for an eighth note, and the vibration motor vibrates
void uyari() {
tone(BUZZER_PIN, 523, 125); // 523 Hz = C5, 125 ms = eighth note
digitalWrite(VIBRATION_PIN, HIGH);
delay(125);
digitalWrite(VIBRATION_PIN, LOW);
}
void loop() {
VL53L0X_RangingMeasurementData_t measure;
// Take a measurement
lox.rangingTest(&measure, false);
// Check if the measurement is valid
if (measure.RangeStatus != 4) {
float distance = measure.RangeMilliMeter / 10.0;
Serial.print("Distance (cm): "); Serial.println(distance);
if (distance >= WARNING_DISTANCE_2 && distance < WARNING_DISTANCE_1) {
uyari();
delay(600); // Wait for 0.6 seconds
} else if (distance >= DANGER_DISTANCE && distance < WARNING_DISTANCE_2) {
uyari();
delay(300); // Wait for 0.3 seconds
} else if (distance < DANGER_DISTANCE) {
uyari(); // No waiting
}
} else {
Serial.println("Out of range");
}
}
Processing LilyPadUSB (platform: atmelavr; board: LilyPadUSB; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/LilyPadUSB.html
PLATFORM: Atmel AVR (5.0.0) > Arduino LilyPad USB
HARDWARE: ATMEGA32U4 8MHz, 2.50KB RAM, 28KB Flash
DEBUG: Current (simavr) External (simavr)
PACKAGES:
- framework-arduino-avr @ 5.2.0
- tool-avrdude @ 1.60300.200527 (6.3.0)
- toolchain-atmelavr @ 1.70300.191015 (7.3.0)
LDF: Library Dependency Finder -> https://BANNED/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 9 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Adafruit_VL53L0X @ 1.2.4+sha.23dc309
|-- Wire @ 1.0
Building in release mode
Compiling .pio\build\LilyPadUSB\src\main.cpp.o
Compiling .pio\build\LilyPadUSB\lib192\Wire\Wire.cpp.o
Compiling .pio\build\LilyPadUSB\lib192\Wire\utility\twi.c.o
Compiling .pio\build\LilyPadUSB\lib9ae\Adafruit_VL53L0X\Adafruit_VL53L0X.cpp.o
Compiling .pio\build\LilyPadUSB\lib9ae\Adafruit_VL53L0X\core\src\vl53l0x_api.cpp.o
Compiling .pio\build\LilyPadUSB\lib9ae\Adafruit_VL53L0X\core\src\vl53l0x_api_calibration.cpp.o
Compiling .pio\build\LilyPadUSB\lib9ae\Adafruit_VL53L0X\core\src\vl53l0x_api_core.cpp.o
Compiling .pio\build\LilyPadUSB\lib9ae\Adafruit_VL53L0X\core\src\vl53l0x_api_ranging.cpp.o
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_core.cpp: In function 'uint32_t VL53L0X_isqrt(uint32_t)':
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_core.cpp:124:23: warning: left shift count >= width of type [-Wshift-count-overflow]
uint32_t bit = 1 << 30;
^~
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_core.cpp: In function 'VL53L0X_Error VL53L0X_calc_sigma_estimate(VL53L0X_DEV, VL53L0X_RangingMeasurementData_t*, FixPoint1616_t*, uint32_t*)':
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_core.cpp:1716:22: warning: left shift count >= width of type [-Wshift-count-overflow]
pwMult *= ((1 << 16) - xTalkCorrection);
^~
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_core.cpp:1722:21: warning: left shift count >= width of type [-Wshift-count-overflow]
pwMult += (1 << 16);
^~
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_calibration.cpp: In function 'VL53L0X_Error VL53L0X_perform_xtalk_calibration(VL53L0X_DEV, FixPoint1616_t, FixPoint1616_t*)':
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_calibration.cpp:115:52: warning: left shift count >= width of type [-Wshift-count-overflow]
(FixPoint1616_t)((uint32_t)(sum_ranging << 16) / total_count);
^~
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_calibration.cpp:117:50: warning: left shift count >= width of type [-Wshift-count-overflow]
(FixPoint1616_t)((uint32_t)(sum_spads << 16) / total_count);
^~
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_calibration.cpp:159:18: warning: left shift count >= width of type [-Wshift-count-overflow]
((1 << 16) - (xTalkStoredMeanRange / xTalkCalDistanceAsInt));
^~
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_calibration.cpp: In function 'VL53L0X_Error VL53L0X_perform_offset_calibration(VL53L0X_DEV, FixPoint1616_t, int32_t*)':
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_calibration.cpp:240:52: warning: left shift count >= width of type [-Wshift-count-overflow]
(FixPoint1616_t)((uint32_t)(sum_ranging << 16) / total_count);
^~
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_calibration.cpp: In function 'VL53L0X_Error VL53L0X_get_offset_calibration_data_micro_meter(VL53L0X_DEV, int32_t*)':
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api_calibration.cpp:317:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (RangeOffsetRegister > cMaxOffset)
~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api.cpp: In function 'VL53L0X_Error VL53L0X_GetInterruptThresholds(VL53L0X_DEV, VL53L0X_DeviceModes, FixPoint1616_t*, FixPoint1616_t*)':
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api.cpp:2610:64: warning: left shift count >= width of type [-Wshift-count-overflow]
*pThresholdLow = (FixPoint1616_t)((0x00fff & Threshold16) << 17);
^~
.pio\libdeps\LilyPadUSB\Adafruit_VL53L0X\src\core\src\vl53l0x_api.cpp:2615:67: warning: left shift count >= width of type [-Wshift-count-overflow]
*pThresholdHigh = (FixPoint1616_t)((0x00fff & Threshold16) << 17);
^~
Compiling .pio\build\LilyPadUSB\lib9ae\Adafruit_VL53L0X\core\src\vl53l0x_api_strings.cpp.o
Compiling .pio\build\LilyPadUSB\lib9ae\Adafruit_VL53L0X\platform\src\vl53l0x_i2c_comms.cpp.o
Archiving .pio\build\LilyPadUSB\lib192\libWire.a
Compiling .pio\build\LilyPadUSB\lib9ae\Adafruit_VL53L0X\platform\src\vl53l0x_platform.cpp.o
Archiving .pio\build\LilyPadUSB\libFrameworkArduinoVariant.a
Compiling .pio\build\LilyPadUSB\FrameworkArduino\CDC.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\HardwareSerial0.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\HardwareSerial1.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\HardwareSerial2.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\HardwareSerial3.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\IPAddress.cpp.o
Archiving .pio\build\LilyPadUSB\lib9ae\libAdafruit_VL53L0X.a
Compiling .pio\build\LilyPadUSB\FrameworkArduino\PluggableUSB.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\Print.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\USBCore.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\WInterrupts.c.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\WString.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\abi.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\hooks.c.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\main.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\new.cpp.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring.c.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring_analog.c.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring_digital.c.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring_pulse.S.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\LilyPadUSB\libFrameworkArduino.a
Linking .pio\build\LilyPadUSB\firmware.elf
Checking size .pio\build\LilyPadUSB\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [===== ] 46.5% (used 1190 bytes from 2560 bytes)
Flash: [======== ] 76.2% (used 21838 bytes from 28672 bytes)
Building .pio\build\LilyPadUSB\firmware.hex
Configuring upload protocol...
AVAILABLE: avr109
CURRENT: upload_protocol = avr109
Looking for upload port...
Using manually specified: COM15
Forcing reset using 1200bps open/close on port COM15
Waiting for the new upload port...
Error: Couldn't find a board on the selected port. Check that you have the correct port selected. If it is correct, try pressing the board's reset button after initiating the upload.
*** [upload] Explicit exit, status 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment