From dc4d7b588661a8b8096a682ecbc9b06b88089bba Mon Sep 17 00:00:00 2001 From: John Shaver Date: Wed, 12 Dec 2018 12:23:44 -0800 Subject: [PATCH] Fine-tuned the breathing algorithm. --- runSchedule.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/runSchedule.js b/runSchedule.js index c58544b..ecdbaac 100644 --- a/runSchedule.js +++ b/runSchedule.js @@ -41,19 +41,25 @@ let render = setInterval(() => { if(ledRed.digitalRead()) { return ledRed.digitalWrite(0); } - return ledGreen.hardwarePwmWrite(HZ, getBrightness(Date.now())); + if(!ledGreen.digitalRead()) { + return ledGreen.digitalWrite(1); + } + //Commenting out. Probably don't need breathing on green leds + //return ledGreen.hardwarePwmWrite(HZ, getBrightness(Date.now())); break; } }, 50); function getBrightness(x) { - return Math.floor(breathingCurve(x, 3000, 1000000, 100000)); + return Math.floor(breathingCurve(x, 5000, 100000, 1000000)); } -function breathingCurve(x, interval = 3000, max, min) { - let t = (x)/interval; - let y = (Math.sin(t) + 1)/2; - return ((max-min) * y) + min; +function breathingCurve(x, interval = 3000, min, max) { + let t = x * Math.PI/(interval/2); + let y = Math.sin(t + Math.sin(t) * 0.2); + let untranslatedY = Math.sin(t + Math.sin(t) * 0.25); + y = (untranslatedY + 1)/2; + return y * (max - min) + min; } function splitAtMidnight(arr) {