Adapting for the new WLED release: (#2802)

Removed longPressMacro call
  Fix debug calls
  Fix typos
This commit is contained in:
Egor 2022-10-21 06:31:43 +07:00 committed by GitHub
parent 3c36030977
commit c47972d500
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 36 deletions

View File

@ -5,13 +5,12 @@ It can be useful for kitchen strips to avoid any touches.
- on/off - just swipe a hand below your sensor ("shortPressAction" is called and can be customized through WLED macros) - on/off - just swipe a hand below your sensor ("shortPressAction" is called and can be customized through WLED macros)
- brightness correction - keep your hand below sensor for 1 second to switch to "brightness" mode. - brightness correction - keep your hand below sensor for 1 second to switch to "brightness" mode.
Configure brightness by changing distance to the sensor (see parameters below for customization). Configure brightness by changing distance to the sensor (see parameters below for customization).
"macroLongPress" is also called here.
## Installation ## Installation
1. Attach VL53L0X sensor to i2c pins according to default pins for your board. 1. Attach VL53L0X sensor to i2c pins according to default pins for your board.
2. Add `-D USERMOD_VL53L0X_GESTURES` to your build flags at platformio.ini (plaformio_override.ini) for needed environment. 2. Add `-D USERMOD_VL53L0X_GESTURES` to your build flags at platformio.ini (plaformio_override.ini) for needed environment.
In my case, for example: `build_flags = ${common.build_flags_esp8266} -D RLYPIN=12 -D USERMOD_VL53L0X_GESTURES` In my case, for example: `build_flags = ${env.build_flags} -D USERMOD_VL53L0X_GESTURES`
3. Add "pololu/VL53L0X" dependency below to `lib_deps` like this: 3. Add "pololu/VL53L0X" dependency below to `lib_deps` like this:
```ini ```ini
lib_deps = ${env.lib_deps} lib_deps = ${env.lib_deps}
@ -21,15 +20,10 @@ lib_deps = ${env.lib_deps}
My entire `platformio_override.ini` for example (for nodemcu board): My entire `platformio_override.ini` for example (for nodemcu board):
```ini ```ini
[platformio] [platformio]
default_envs = nodemcu default_envs = nodemcuv2
[env:nodemcu] [env:nodemcuv2]
board = nodemcu build_flags = ${env.build_flags} -D USERMOD_VL53L0X_GESTURES
platform = ${common.platform_wled_default}
platform_packages = ${common.platform_packages}
board_build.ldscript = ${common.ldscript_4m1m}
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D RLYPIN=12 -D USERMOD_VL53L0X_GESTURES
lib_deps = ${env.lib_deps} lib_deps = ${env.lib_deps}
pololu/VL53L0X @ ^1.3.0 pololu/VL53L0X @ ^1.3.0
``` ```

View File

@ -3,14 +3,13 @@
* It can be useful for kitchen strips to avoid any touches. * It can be useful for kitchen strips to avoid any touches.
* - on/off - just swipe a hand below your sensor ("shortPressAction" is called and can be customized through WLED macros) * - on/off - just swipe a hand below your sensor ("shortPressAction" is called and can be customized through WLED macros)
* - brightness correction - keep your hand below sensor for 1 second to switch to "brightness" mode. * - brightness correction - keep your hand below sensor for 1 second to switch to "brightness" mode.
* Configure brightness by changing distance to the sensor (see parameters below for customization). Configure brightness by changing distance to the sensor (see parameters below for customization).
* "macroLongPress" is also called here.
* *
* Enabling this mod usermod: * Enabling this usermod:
* 1. Attach VL53L0X sensor to i2c pins according to default pins for your board. * 1. Attach VL53L0X sensor to i2c pins according to default pins for your board.
* 2. Add "-D USERMOD_VL53L0X_GESTURES" to your build flags at platformio.ini (plaformio_override.ini) for needed environment. * 2. Add `-D USERMOD_VL53L0X_GESTURES` to your build flags at platformio.ini (plaformio_override.ini) for needed environment.
* In my case, for example: build_flags = ${common.build_flags_esp8266} -D RLYPIN=12 -D USERMOD_VL53L0X_GESTURES * In my case, for example: `build_flags = ${env.build_flags} -D USERMOD_VL53L0X_GESTURES`
* 3. Add "pololu/VL53L0X" dependency to lib_deps like this: * 3. Add "pololu/VL53L0X" dependency below to `lib_deps` like this:
* lib_deps = ${env.lib_deps} * lib_deps = ${env.lib_deps}
* pololu/VL53L0X @ ^1.3.0 * pololu/VL53L0X @ ^1.3.0
*/ */
@ -22,11 +21,11 @@
#include <VL53L0X.h> #include <VL53L0X.h>
#ifndef VL53L0X_MAX_RANGE_MM #ifndef VL53L0X_MAX_RANGE_MM
#define VL53L0X_MAX_RANGE_MM 230 // max height in millimiters to react for motions #define VL53L0X_MAX_RANGE_MM 230 // max height in millimeters to react for motions
#endif #endif
#ifndef VL53L0X_MIN_RANGE_OFFSET #ifndef VL53L0X_MIN_RANGE_OFFSET
#define VL53L0X_MIN_RANGE_OFFSET 60 // minimal range in millimiters that sensor can detect. Used in long motions to correct brightnes calculation. #define VL53L0X_MIN_RANGE_OFFSET 60 // minimal range in millimeters that sensor can detect. Used in long motions to correct brightness calculation.
#endif #endif
#ifndef VL53L0X_DELAY_MS #ifndef VL53L0X_DELAY_MS
@ -34,7 +33,7 @@
#endif #endif
#ifndef VL53L0X_LONG_MOTION_DELAY_MS #ifndef VL53L0X_LONG_MOTION_DELAY_MS
#define VL53L0X_LONG_MOTION_DELAY_MS 1000 // how often to get data from sensor #define VL53L0X_LONG_MOTION_DELAY_MS 1000 // switch onto "long motion" action after this delay
#endif #endif
class UsermodVL53L0XGestures : public Usermod { class UsermodVL53L0XGestures : public Usermod {
@ -72,40 +71,34 @@ class UsermodVL53L0XGestures : public Usermod {
lastTime = millis(); lastTime = millis();
int range = sensor.readRangeSingleMillimeters(); int range = sensor.readRangeSingleMillimeters();
DEBUG_PRINTF(F("range: %d, brightness: %d"), range, bri); DEBUG_PRINTF("range: %d, brightness: %d\r\n", range, bri);
if (range < VL53L0X_MAX_RANGE_MM) if (range < VL53L0X_MAX_RANGE_MM)
{ {
if (!wasMotionBefore) if (!wasMotionBefore)
{ {
motionStartTime = millis(); motionStartTime = millis();
DEBUG_PRINTF(F("motionStartTime: %d"), motionStartTime); DEBUG_PRINTF("motionStartTime: %d\r\n", motionStartTime);
} }
wasMotionBefore = true; wasMotionBefore = true;
if (millis() - motionStartTime > VL53L0X_LONG_MOTION_DELAY_MS) //long motion if (millis() - motionStartTime > VL53L0X_LONG_MOTION_DELAY_MS) //long motion
{ {
DEBUG_PRINTF(F("long motion: %d"), motionStartTime); DEBUG_PRINTF("long motion: %d\r\n", motionStartTime);
if (!isLongMotion) if (!isLongMotion)
{ {
if (macroLongPress)
{
applyMacro(macroLongPress);
}
isLongMotion = true; isLongMotion = true;
} }
// set brightness according to range // set brightness according to range
bri = (VL53L0X_MAX_RANGE_MM - max(range, VL53L0X_MIN_RANGE_OFFSET)) * 255 / (VL53L0X_MAX_RANGE_MM - VL53L0X_MIN_RANGE_OFFSET); bri = (VL53L0X_MAX_RANGE_MM - max(range, VL53L0X_MIN_RANGE_OFFSET)) * 255 / (VL53L0X_MAX_RANGE_MM - VL53L0X_MIN_RANGE_OFFSET);
DEBUG_PRINTF(F("new brightness: %d"), bri); DEBUG_PRINTF("new brightness: %d", bri);
stateUpdated(1); stateUpdated(1);
} }
} else if (wasMotionBefore) { //released } else if (wasMotionBefore) { //released
long dur = millis() - motionStartTime;
if (!isLongMotion) if (!isLongMotion)
{ //short press { //short press
DEBUG_PRINTF(F("shortPressAction...")); DEBUG_PRINTLN(F("shortPressAction..."));
shortPressAction(); shortPressAction();
} }
wasMotionBefore = false; wasMotionBefore = false;

View File

@ -68,7 +68,6 @@
#endif #endif
#ifdef USERMOD_VL53L0X_GESTURES #ifdef USERMOD_VL53L0X_GESTURES
#include <Wire.h> //it's needed here to correctly resolve dependencies
#include "../usermods/VL53L0X_gestures/usermod_vl53l0x_gestures.h" #include "../usermods/VL53L0X_gestures/usermod_vl53l0x_gestures.h"
#endif #endif