From 9c1a6d6538997fe1ea731f90a367658420828bf3 Mon Sep 17 00:00:00 2001 From: lexxnsk Date: Wed, 9 Apr 2025 13:24:50 +0200 Subject: [PATCH 1/2] fix for AJ-SR04M sensor When using AJ-SR04M sensor, pulseIn function always returns 0 when timeout value is about 5-10 thousands. I don't know why. --- usermods/Animated_Staircase/Animated_Staircase.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/usermods/Animated_Staircase/Animated_Staircase.cpp b/usermods/Animated_Staircase/Animated_Staircase.cpp index 2d2d27cf43..0437697a4e 100644 --- a/usermods/Animated_Staircase/Animated_Staircase.cpp +++ b/usermods/Animated_Staircase/Animated_Staircase.cpp @@ -152,8 +152,8 @@ class Animated_Staircase : public Usermod { delayMicroseconds(2); digitalWrite(signalPin, HIGH); delayMicroseconds(10); - digitalWrite(signalPin, LOW); - return pulseIn(echoPin, HIGH, maxTimeUs) > 0; + unsigned long duration = pulseIn(echoPin, HIGH, 30000); + return (duration > 0 && duration < maxTimeUs); } bool checkSensors() { @@ -564,4 +564,4 @@ const char Animated_Staircase::_togglePower[] PROGMEM = "toggle-on static Animated_Staircase animated_staircase; -REGISTER_USERMOD(animated_staircase); \ No newline at end of file +REGISTER_USERMOD(animated_staircase); From 55c69d0ef4008d3e37328b1482a41cf75a40d909 Mon Sep 17 00:00:00 2001 From: lexxnsk Date: Wed, 9 Apr 2025 14:52:49 +0200 Subject: [PATCH 2/2] fix: restore mistakenly deleted line --- usermods/Animated_Staircase/Animated_Staircase.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/usermods/Animated_Staircase/Animated_Staircase.cpp b/usermods/Animated_Staircase/Animated_Staircase.cpp index 0437697a4e..e477c64d8c 100644 --- a/usermods/Animated_Staircase/Animated_Staircase.cpp +++ b/usermods/Animated_Staircase/Animated_Staircase.cpp @@ -152,6 +152,7 @@ class Animated_Staircase : public Usermod { delayMicroseconds(2); digitalWrite(signalPin, HIGH); delayMicroseconds(10); + digitalWrite(signalPin, LOW); unsigned long duration = pulseIn(echoPin, HIGH, 30000); return (duration > 0 && duration < maxTimeUs); }