Adapting for the new WLED release: (#2802)
Removed longPressMacro call Fix debug calls Fix typos
This commit is contained in:
parent
3c36030977
commit
c47972d500
@ -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
|
||||||
```
|
```
|
@ -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,19 +21,19 @@
|
|||||||
#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
|
||||||
#define VL53L0X_DELAY_MS 100 // how often to get data from sensor
|
#define VL53L0X_DELAY_MS 100 // how often to get data from sensor
|
||||||
#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 {
|
||||||
@ -47,7 +46,7 @@ class UsermodVL53L0XGestures : public Usermod {
|
|||||||
bool wasMotionBefore = false;
|
bool wasMotionBefore = false;
|
||||||
bool isLongMotion = false;
|
bool isLongMotion = false;
|
||||||
unsigned long motionStartTime = 0;
|
unsigned long motionStartTime = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
@ -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;
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user