Closed Kolk123 closed 5 years ago
Hallo Roy,
Klopt, ben Nederlander ?? Ik heb 2 PIRs die ik aangesloten heb op een raspberry pi. Ik meen dat de PIRs 3 volt afgeven, en die heb ik op ingang van de raspberry PI aangesloten. De raspberry zal per tree een relais aansturen. Is dit voldoende info, of moet ik even de specs van de PIR sensoren opzoeken morgen en met jou delen ?
Outlook voor Androidhttps://aka.ms/ghei36 downloaden
From: Kolk123 notifications@github.com Sent: Thursday, January 3, 2019 2:45:29 PM To: Vinz68/stairsJs Cc: Subscribed Subject: [Vinz68/stairsJs] Vraag (#1)
Ik heb een vraag. aan je naam te zien gok ik dat je nederlands bent. ik heb een trap met 16 ws2812b ledstrips a36 led per tree . mijn doel was om met een arduino mijn leds aan te sturen samen met 2 PIR sensoren. helaas krijg ik dit allemaal niet werkend. zou jij mij kunnen vertellen of jou software mij daarbij kan helpen? en op werkte trigger heb jij de sensoren aangesloten?
Groetjes Roy Kolk
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/Vinz68/stairsJs/issues/1, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMZfBb4t4pYkFOJncHuTs0BIZSaiY5pEks5u_gl5gaJpZM4ZoHS6.
Hallo Roy, weet niet zeker of dit jou het antwoord geeft waar je naar opzoek bent; maar hieronder de spec van de PIR die ik gebruikt heb.
Als je nog vragen hebt hoor ik het wel. Ik update mijn github repository ook gelijk even met de hardware componenten, dan heb ik gelijk alles op 1 plek.
Mocht het allemaal lukken met jou trap stuur dan eens een foto ! , vind ik leuk.
Groeten en succes met je project, Vincent.
[cid:image001.png@01D4A3B3.F75281C0][cid:image001.png@01D4A3B3.F75281C0][cid:image002.png@01D4A3B3.F75281C0][cid:image002.png@01D4A3B3.F75281C0]
Instructions for use:
From: Kolk123 notifications@github.com Sent: donderdag 3 januari 2019 14:45 To: Vinz68/stairsJs stairsJs@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Subject: [Vinz68/stairsJs] Vraag (#1)
Ik heb een vraag. aan je naam te zien gok ik dat je nederlands bent. ik heb een trap met 16 ws2812b ledstrips a36 led per tree . mijn doel was om met een arduino mijn leds aan te sturen samen met 2 PIR sensoren. helaas krijg ik dit allemaal niet werkend. zou jij mij kunnen vertellen of jou software mij daarbij kan helpen? en op werkte trigger heb jij de sensoren aangesloten?
Groetjes Roy Kolk
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/Vinz68/stairsJs/issues/1, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMZfBb4t4pYkFOJncHuTs0BIZSaiY5pEks5u_gl5gaJpZM4ZoHS6.
Dank je wel voor alle info!! helaas heb ik een digitale strip, en jou verlichting word aansgestuurd op relais. door o.a. jou info, heb ik nu wel de sensoren werkend gekregen. ik krijg alleen niet goed de aantal leds ingesteld. de laatste ledstrip werkt helaas niet. en ook ben ik niet goed in het coderen van een arduino. is nog even uitzoeken dus.
Groetjes roy
Hallo Roy, Ben blij dat je PIR sensoren werken. Jou led-strip, is dat zo’n NeoPixel, waarbij je per led aan/uit kan sturen ?
Ik heb ook een arduino waarmee ik dat ooit eens gedaan heb, en ik kon iets van 80 leds aansturen; en per led de kleur. Daarna had de arduino niet genoeg vermogen om de andere pixels aan te sturen; ik dacht toen dat 2de strip kapot was; maar ik kon 2de strip met 1ste omwisselen en toen kwam ik daarachter.
Hoop dat dit jou nog iets verder helpt (misschien vermogen probleem ?)
Coderen ben ik wel goed in dus als je prog kan sturen wil ik best even kijken of ik iets vreemds in zie. Suc6
Groeten, Vincent. Mail: Vin.van.beek@outlook.com
From: Kolk123 notifications@github.com Sent: zaterdag 5 januari 2019 09:51 To: Vinz68/stairsJs stairsJs@noreply.github.com Cc: Vincent van Beek vin.van.beek@outlook.com; State change state_change@noreply.github.com Subject: Re: [Vinz68/stairsJs] Vraag (#1)
Dank je wel voor alle info!! helaas heb ik een digitale strip, en jou verlichting word aansgestuurd op relais. door o.a. jou info, heb ik nu wel de sensoren werkend gekregen. ik krijg alleen niet goed de aantal leds ingesteld. de laatste ledstrip werkt helaas niet. en ook ben ik niet goed in het coderen van een arduino. is nog even uitzoeken dus.
Groetjes roy
— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHubhttps://github.com/Vinz68/stairsJs/issues/1#issuecomment-451638967, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMZfBWft9i5TKBpAzc2Ol8m9UUvdpwW8ks5vAGdzgaJpZM4ZoHS6.
Hoi vincent.
Het is idd een neopixel. Het rare is wel als ik een strandtest doe alles leds netjes werken zoals ze zouden moeten werken. Ik heb op dit moment de leds op 548 gezet. Dan werken 15 strips, en op strip 16 werken er dan 8. Ook de breath modes werkt perfect. Dan doen namelijk alle leds aan de buitenkant enkel op de 161 alleen de rechter kant. Als ik mijn leds nu zet naar 576 dan doet niks het meer. De trap start dan de breath modes en reageerd hij niet meer op de sensoren. Het lijkt dus wel of de software als het ware begrensd is.
Mocht je naar de code willen kijken heel graag. Ik heb 2 soorten geprobeerd. 1 van https://www.instructables.com/id/LED-Stair-Lighting/ En 1 van https://www.instructables.com/id/How-to-bling-up-a-boring-staircase/
De 1e krijg ik werkend tot 548 leds. De 2e maar tot een aantal leds. ( ik geloof 120).
Dit is de code die ik momenteel gebruik.
// Edit by Serge Niko June 2015
// Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(548, PIN, NEO_GRB + NEO_KHZ800);
// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input // and minimize distance between Arduino and first pixel. Avoid connecting // on a live circuit...if you must, connect GND first.
// Set up Variables unsigned long timeOut=60000; // timestamp to remember when the PIR was triggered. int downUp = 0; // variable to rememer the direction of travel up or down the stairs int alarmPinTop = 10; // PIR at the top of the stairs int alarmPinBottom =11; // PIR at the bottom of the stairs int alarmValueTop = HIGH; // Variable to hold the PIR status int alarmValueBottom = HIGH; // Variable to hold the PIR status int ledPin = 13; // LED on the arduino board flashes when PIR activated int LDRSensor = A0; // Light dependant resistor int LDRValue = 0; // Variable to hold the LDR value int colourArray[350]; // An array to hold RGB values int change = 100; // used in 'breathing' the LED's int breathe = 100; // used in 'breathing' the LED's
void setup() { strip.begin(); strip.setBrightness(20); //adjust brightness here strip.show(); // Initialize all pixels to 'off' Serial.begin (9600); // only requred for debugging pinMode(ledPin, OUTPUT); // initilise the onboard pin 13 LED as an indicator pinMode(alarmPinTop, INPUT_PULLUP); // for PIR at top of stairs initialise the input pin and use the internal restistor pinMode(alarmPinBottom, INPUT_PULLUP); // for PIR at bottom of stairs initialise the input pin and use the internal restistor delay (2000); // it takes the sensor 2 seconds to scan the area around it before it can //detect infrared presence.
}
void loop() {
if (timeOut+15700 < millis()) { // idle state - 'breathe' the top and bottom LED to show program is looping
uint32_t blue = (0, 0, breathe);
breathe = breathe + change;
strip.setPixelColor(0, blue);
strip.setPixelColor(35, blue);
strip.setPixelColor(36, blue);
strip.setPixelColor(71, blue);
strip.setPixelColor(72, blue);
strip.setPixelColor(107, blue);
strip.setPixelColor(108, blue);
strip.setPixelColor(143, blue);
strip.setPixelColor(144, blue);
strip.setPixelColor(179, blue);
strip.setPixelColor(180, blue);
strip.setPixelColor(215, blue);
strip.setPixelColor(216, blue);
strip.setPixelColor(251, blue);
strip.setPixelColor(252, blue);
strip.setPixelColor(287, blue);
strip.setPixelColor(288, blue);
strip.setPixelColor(323, blue);
strip.setPixelColor(324, blue);
strip.setPixelColor(359, blue);
strip.setPixelColor(360, blue);
strip.setPixelColor(395, blue);
strip.setPixelColor(396, blue);
strip.setPixelColor(431, blue);
strip.setPixelColor(432, blue);
strip.setPixelColor(467, blue);
strip.setPixelColor(468, blue);
strip.setPixelColor(503, blue);
strip.setPixelColor(504, blue);
strip.setPixelColor(539, blue);
strip.setPixelColor(540, blue);
strip.setPixelColor(575, blue);
strip.show();
if (breathe == 100 || breathe == 0) change = -change; // breathe the LED from 0 = off to 100 = fairly bright
if (breathe == 100 || breathe == 0); delay (100); // Pause at beginning and end of each breath
delay(10);
}
alarmValueTop = digitalRead(alarmPinTop); // Constantly poll the PIR at the top of the stairs
//Serial.println(alarmPinTop);
alarmValueBottom = digitalRead(alarmPinBottom); // Constantly poll the PIR at the bottom of the stairs
//Serial.println(alarmPinBottom);
if (alarmValueTop == HIGH && downUp != 2) { // the 2nd term allows timeOut to be contantly reset if one lingers at the top of the stairs before decending but will not allow the bottom PIR to reset timeOut as you decend past it.
timeOut=millis(); // Timestamp when the PIR is triggered. The LED cycle wil then start.
downUp = 1;
//clearStrip();
topdown(); // lights up the strip from top down
}
if (alarmValueBottom == HIGH && downUp != 1) { // the 2nd term allows timeOut to be contantly reset if one lingers at the bottom of the stairs before decending but will not allow the top PIR to reset timeOut as you decend past it.
timeOut=millis(); // Timestamp when the PIR is triggered. The LED cycle wil then start.
downUp = 2;
//clearStrip();
bottomup(); // lights up the strip from bottom up
}
if (timeOut+10000 < millis() && timeOut+15000 < millis()) { //switch off LED's in the direction of travel.
if (downUp == 1) {
colourWipeDown(strip.Color(0, 0, 0), 100); // Off
}
if (downUp == 2) {
colourWipeUp(strip.Color(0, 0, 0), 100); // Off
}
downUp = 0;
}
}
void topdown() { Serial.println ("detected top"); // Helpful debug message colourWipeDown(strip.Color(255, 255, 250), 25 ); // Warm White //for(int i=0; i<3; i++) { // Helpful debug indication flashes led on Arduino board twice digitalWrite(ledPin,HIGH); delay(200); digitalWrite(ledPin,LOW); delay(200); //} }
void bottomup() { Serial.println ("detected bottom"); // Helpful debug message colourWipeUp(strip.Color(255, 255, 250), 25); // Warm White //for(int i=0; i<3; i++) { // Helpful debug indication flashes led on Arduino board twice digitalWrite(ledPin,HIGH); delay(200); digitalWrite(ledPin,LOW); delay(200); //} }
// Fade light each step strip void colourWipeDown(uint32_t c, uint16_t wait) {
for (uint16_t k = 0; k < 16; k++){ int start = strip.numPixels()/16 *k; Serial.println(k);
for (uint16_t j = start; j < start + 36; j++){
strip.setPixelColor(j, c);
}
strip.show();
delay(wait); } }
void clearStrip(){ for (int l=0; l<strip.numPixels(); l++){ strip.setPixelColor(l, (0,0,0)); }
} // Fade light each step strip void colourWipeUp(uint32_t c, uint16_t wait) { for (uint16_t k = 16; k > 0; k--){ int start = strip.numPixels()/16 *k; Serial.println(k); //start = start-1; for (uint16_t j = start; j > start - 36; j--){ strip.setPixelColor(j-1, c); } strip.show(); delay(wait); }
}
Dank je wel alvast.
Groetjes Roy Kolk
Verzonden vanuit Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 voor Windows 10
Van: Vincent van Beek notifications@github.com Verzonden: Saturday, January 5, 2019 1:41:27 PM Aan: Vinz68/stairsJs CC: Kolk123; Author Onderwerp: Re: [Vinz68/stairsJs] Vraag (#1)
Hallo Roy, Ben blij dat je PIR sensoren werken. Jou led-strip, is dat zo’n NeoPixel, waarbij je per led aan/uit kan sturen ?
Ik heb ook een arduino waarmee ik dat ooit eens gedaan heb, en ik kon iets van 80 leds aansturen; en per led de kleur. Daarna had de arduino niet genoeg vermogen om de andere pixels aan te sturen; ik dacht toen dat 2de strip kapot was; maar ik kon 2de strip met 1ste omwisselen en toen kwam ik daarachter.
Hoop dat dit jou nog iets verder helpt (misschien vermogen probleem ?)
Coderen ben ik wel goed in dus als je prog kan sturen wil ik best even kijken of ik iets vreemds in zie. Suc6
Groeten, Vincent. Mail: Vin.van.beek@outlook.com
From: Kolk123 notifications@github.com Sent: zaterdag 5 januari 2019 09:51 To: Vinz68/stairsJs stairsJs@noreply.github.com Cc: Vincent van Beek vin.van.beek@outlook.com; State change state_change@noreply.github.com Subject: Re: [Vinz68/stairsJs] Vraag (#1)
Dank je wel voor alle info!! helaas heb ik een digitale strip, en jou verlichting word aansgestuurd op relais. door o.a. jou info, heb ik nu wel de sensoren werkend gekregen. ik krijg alleen niet goed de aantal leds ingesteld. de laatste ledstrip werkt helaas niet. en ook ben ik niet goed in het coderen van een arduino. is nog even uitzoeken dus.
Groetjes roy
— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHubhttps://github.com/Vinz68/stairsJs/issues/1#issuecomment-451638967, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMZfBWft9i5TKBpAzc2Ol8m9UUvdpwW8ks5vAGdzgaJpZM4ZoHS6.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/Vinz68/stairsJs/issues/1#issuecomment-451652411, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AdAlgz5mk6ac2zlgjHNZWzZLkrZvCSpnks5vAJ13gaJpZM4ZoHS6.
Hallo Roy,
Mijn bevindingen, zie onder…. (beetje lang antwoord, maar je moet het er zeker mee aan de praat krijgen !!, zo niet mail dan nog maar eens een keer naar vin.van.beek@outlook.commailto:vin.van.beek@outlook.com. ), en mocht je trap helemaal werken straks dan wil ik wel een foto of filmpje zien ☺ )
Hardware
576 leds X 60 mA = 35 Ampere !!. Als je een hoog ampere nodig hebt (meer dan 10 A bv) dan doe je er goed aan om dat over een paar voedingen te spreiden, bv door er 3 te kopen van bv. 10 A ; (vaak ook prijs gunstiger)
Ik zag in de 1ste link dat daar maar liefst een 5 Volt 60 Ampere voeding was gebruikt; dus kan best dat de strips veel power nodig hebben !.
* Voor de LED-strips gebruik jij alleen pin-5 toch ?
Kan haast niet anders, anders zou je maar 125 leds of zo kunnen aansturen want ik meen dat de Arduino een 3.3V regulated output van max. 150 mA heeft, maar hangt af van model van de Arduino ; dit kan je vast opzoeken in de specificatie via Google.
Als je teveel power uit de Arduino trekt dan zal ie ook niets doen.
Mogelijk is dit allemaal prima ; maar goed om even na te gaan weet ik uit ervaring; ik kon max
Je kan ook simpel testen of de power een probleem is door:
Software Leuk programma/idee heb je met die “breathe” functie erin. Lijkt mij erg cool om te zien werken ; en leuk ook dat je uiteindelijk met kleuren kan werken. Mijn trap is alweer meer dan jaar oud; en toen had je nog niet veel neopixel strips. Wel artikel/bestelnummer gebruik jij voor de ledstrips ? (zelfde als in artikel, de genoemde WS2812B LEDS)? Misschien later mijn trap eens mee updaten ; dit is zoveel cooler !
Als B / voeding goed is, dan nu het programma..
In je code zie ik:
i. Adafruit_NeoPixel strip = Adafruit_NeoPixel(548, PIN, NEO_GRB + NEO_KHZ800);
Ik neem aan dat dit je dit geprobeerd hebt met 576 zodat je alle pixels kan aansturen. Dit zal nog wel voor de test op 548 staan neem ik aan; maar moet op 576.
ii. De note over de laatste parameter “NEO_GRB…” zal je ook wel gelezen hebben:
‘…older NeoPixel strips you might need to change the third parameter’
Dit is dus ook een kandidaat om uit te zoeken / welke parameters allemaal mogelijk zijn; mogelijk heb jou strip een andere parameter nodig ; maar ik acht deze opmerking klein, want je kan aansturen…
* Ik denk dat je dezelfde functies/libraries gebruikt als ik voor de NeoPixel; dus ik heb je programma eens in mijn arduino geschoten…
Ik moest beetje aanpassen want had alleen 2 neopixel ringen van 60 pixels liggen, dus heb configureerbaar “tredes, ledstrips” en “leds per strip” als variabelen aangemaakt zodat ik kon spelen met 12 tredes/ledstrips van 10 leds each. En…..ik kreeg het programma eigenlijk niet goed aan de praat… Eenmaal als de sensor gezien werd dan bleef bij mij de leds aan, en de breathe functie kwam er dwars doorheen. Dus heb programma beetje ge-her-structureerd (sorry ben 25 jaar SW-Developer geweest), en na de nodige verbouwingen loopt het nu als een tierelier… ☺ .. hoop bij jou ook; probeer het eens, de source staat hier: https://github.com/Vinz68/NeoPixel-Stair
(maar ook onder aan deze mail)
Note er zit een “Tuning part” in, daar kan je snelheden in aanpassen waar nodig. Ik heb een redelijk nieuw/snel arduino board , dus mogelijk moet je de “change” wat hoger zetten, op 5 of 10
* Heel veel suc6 ermee, en hoor graag van je hoe je project afloopt !.,
// Copyright Roy en Vincent ☺
// Which pin on the Arduino is connected to the NeoPixels?
// How many NeoPixels are attached to the Arduino?
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
// Set up Variables unsigned long timeOut=0; // timestamp to remember when the PIR was triggered. unsigned long timeLoopStart=0; // timestamp to remember when loop has started. used to determine the end-delay (keeps loop running in same intervals) unsigned long timeTemp=0; // temp. var used in time calculations unsigned long timeDiff=0; // temp. var used in time calculations int downUp = 0; // variable to rememer the direction of travel up or down the stairs int alarmPinTop = 10; // PIR at the top of the stairs int alarmPinBottom =11; // PIR at the bottom of the stairs int alarmValueTop = HIGH; // Variable to hold the PIR status int alarmValueBottom = HIGH; // Variable to hold the PIR status int ledPin = 13; // LED on the arduino board flashes when PIR activated int LDRSensor = A0; // Light dependant resistor int LDRValue = 0; // Variable to hold the LDR value
//------------------------------------------------------------------------- // Tuning part for the Breathe effect en turn-on and turn-off speed //------------------------------------------------------------------------- int change = 2; // used in 'breathing' the LED's , make value smalle to make it smoother, or higher to make it faster int breathe = 25; // used in 'breathing' the LED's, start at range 5 int turnOnSpeed=30; // speed to turn on next led-strip, in msec between next strip int turnOffSpeed=100; // speed to turn on next led-strip, in msec between next strip int keepLedsOnTime=18000; // keep leds on for at least .. msec. int keepLedsOffTime=1500; // keep leds off for at least .. msec.
void setup() {
strip.begin(); // This initializes the NeoPixel library.
strip.setBrightness(35); // Adjust brightness here clearStrip(); // Initialize all pixels to 'off', and do strip.show()
//Serial.begin (9600); // only required for debugging
// Configure the used digital input & output pinMode(ledPin, OUTPUT); // initilise the onboard pin 13 LED as an indicator pinMode(alarmPinTop, INPUT_PULLUP); // for PIR at top of stairs initialise the input pin and use the internal restistor pinMode(alarmPinBottom, INPUT_PULLUP); // for PIR at bottom of stairs initialise the input pin and use the internal restistor
delay (2000); // it takes the sensor 2 seconds to scan the area around it before it can detect infrared presence. }
void loop() {
// register the current time (in msec, for later use to optimize the execution loop) timeLoopStart=millis();
alarmValueTop = digitalRead(alarmPinTop); // Constantly poll the PIR at the top of the stairs if ( (alarmValueTop == HIGH) && (downUp == 0) ) { // the 2nd term indicates that there is currently no activity (up or down) timeOut=millis(); // Timestamp when the PIR is triggered. The LED cycle wil then start. downUp = 1; colourWipeDown(strip.Color(255, 255, 250), turnOnSpeed ); // Warm White,led-light from top to down }
alarmValueBottom = digitalRead(alarmPinBottom); // Constantly poll the PIR at the bottom of the stairs if ( (alarmValueBottom == HIGH) && (downUp == 0)) { // the 2nd term indicates that there is currently no activity (up or down) timeOut=millis(); // Timestamp when the PIR is triggered. The LED cycle wil then start. downUp = 2; colourWipeUp(strip.Color(255, 255, 250), turnOnSpeed); // Warm White,led-light from bottom to top }
if ( (downUp!=0) && (timeOut+keepLedsOnTime < millis()) ) { //switch off LED's in the direction of travel. if (downUp == 1) { downUp = 3; // mode = turn off leds from top to down colourWipeDown(strip.Color(0, 0, 0), turnOffSpeed); // Off downUp=5; // Stairs are just turned off } if (downUp == 2) { downUp = 4; // mode = turn off leds from bottom to top colourWipeUp(strip.Color(0, 0, 0), turnOffSpeed); // Off downUp=5; // Stairs are just turned off } }
if (downUp==0) // Currently no activity on the stairs ? (in idle mode, not turned (or turning) on or off ?) handleBreathe(); // Then Enable the cool "breathe effect" of the led strip lights else if (downUp==5) { // eventually the stairs led lights will be turned of again (mode=5) delay(keepLedsOffTime); // allow small delay/pause and then activate the stairs again with the breathe and motion detection function downUp=0; // set to 0 to allow breathe/motion detection (-1 for debugging one run) }
}
void handleBreathe() {
// blue value changes breathe = breathe + change;
// breathe the LED from 20 = off to 100 = fairly bright, change values if needed if ( (breathe >= 100 || breathe <= 20) ) {
change = -change; // toggle the value to increase/decrease the breathe value
timeTemp = millis();
timeDiff = timeTemp - timeLoopStart;
// Program execution was shorter than 150 msec ? Then delay up to 150 msec, for a smooth breathe
// NOTE: shorten the 150-numbers to a lower (same) value when breath is to slow..
if (timeDiff < 150) {
delay(150-timeDiff); // Pause at beginning and end of each breath
}
else {
// Program execution was longer than 150 msec, so no delay needed
}
} else {
// Set outside leds to breathe-value
strip.setPixelColor(0, strip.Color(0,0,breathe));
strip.setPixelColor(35, strip.Color(0,0,breathe));
strip.setPixelColor(36, strip.Color(0,0,breathe));
strip.setPixelColor(71, strip.Color(0,0,breathe));
strip.setPixelColor(72, strip.Color(0,0,breathe));
strip.setPixelColor(107, strip.Color(0,0,breathe));
strip.setPixelColor(108, strip.Color(0,0,breathe));
strip.setPixelColor(143, strip.Color(0,0,breathe));
strip.setPixelColor(144, strip.Color(0,0,breathe));
strip.setPixelColor(179, strip.Color(0,0,breathe));
strip.setPixelColor(180, strip.Color(0,0,breathe));
strip.setPixelColor(215, strip.Color(0,0,breathe));
strip.setPixelColor(216, strip.Color(0,0,breathe));
strip.setPixelColor(251, strip.Color(0,0,breathe));
strip.setPixelColor(252, strip.Color(0,0,breathe));
strip.setPixelColor(287, strip.Color(0,0,breathe));
strip.setPixelColor(288, strip.Color(0,0,breathe));
strip.setPixelColor(323, strip.Color(0,0,breathe));
strip.setPixelColor(324, strip.Color(0,0,breathe));
strip.setPixelColor(359, strip.Color(0,0,breathe));
strip.setPixelColor(360, strip.Color(0,0,breathe));
strip.setPixelColor(395, strip.Color(0,0,breathe));
strip.setPixelColor(396, strip.Color(0,0,breathe));
strip.setPixelColor(431, strip.Color(0,0,breathe));
strip.setPixelColor(432, strip.Color(0,0,breathe));
strip.setPixelColor(467, strip.Color(0,0,breathe));
strip.setPixelColor(468, strip.Color(0,0,breathe));
strip.setPixelColor(503, strip.Color(0,0,breathe));
strip.setPixelColor(504, strip.Color(0,0,breathe));
strip.setPixelColor(539, strip.Color(0,0,breathe));
strip.setPixelColor(540, strip.Color(0,0,breathe));
strip.setPixelColor(575, strip.Color(0,0,breathe));
strip.show();
timeTemp = millis();
timeDiff = timeTemp - timeLoopStart;
// Program execution (timeDiff) was shorter than 25 msec ? Then delay up to 25 msec, for a smooth breathe
// NOTE: shorten the 25-numbers to a lower (same) value when breath is to slow..
if (timeDiff < 25) {
delay(25-timeDiff);
}
else {
// Program execution was longer than 25 msec, no delay needed
}
} }
// Fade light each step strip void colourWipeDown(uint32_t c, uint16_t wait) {
for (uint16_t k = 0; k < LEDSTRIPS; k++){
int start = (NUMPIXELS/LEDSTRIPS) *k;
Serial.println(k);
for (uint16_t j = start; j < start + LEDSPERSTRIP; j++){
strip.setPixelColor(j, c);
}
strip.show();
delay(wait);
} }
// Fade light each step strip void colourWipeUp(uint32_t c, uint16_t wait) {
for (uint16_t k = LEDSTRIPS; k > 0; k--){
int start = NUMPIXELS/LEDSTRIPS *k;
//Serial.println(k);
int x = start;
do
{
strip.setPixelColor(x-1, c);
x--;
} while (x > start - LEDSPERSTRIP);
strip.show();
delay(wait);
} }
void clearStrip(){ // All pixels off for (int l=0; l<NUMPIXELS; l++){ strip.setPixelColor(l, strip.Color(0,0,0)); }
strip.show(); // This sends the updated pixel's to the hardware. }
From: Kolk123 notifications@github.com Sent: zaterdag 5 januari 2019 13:50 To: Vinz68/stairsJs stairsJs@noreply.github.com Cc: Vincent van Beek vin.van.beek@outlook.com; State change state_change@noreply.github.com Subject: Re: [Vinz68/stairsJs] Vraag (#1)
Hoi vincent.
Het is idd een neopixel. Het rare is wel als ik een strandtest doe alles leds netjes werken zoals ze zouden moeten werken. Ik heb op dit moment de leds op 548 gezet. Dan werken 15 strips, en op strip 16 werken er dan 8. Ook de breath modes werkt perfect. Dan doen namelijk alle leds aan de buitenkant enkel op de 161 alleen de rechter kant. Als ik mijn leds nu zet naar 576 dan doet niks het meer. De trap start dan de breath modes en reageerd hij niet meer op de sensoren. Het lijkt dus wel of de software als het ware begrensd is.
Mocht je naar de code willen kijken heel graag. Ik heb 2 soorten geprobeerd. 1 van https://www.instructables.com/id/LED-Stair-Lighting/ En 1 van https://www.instructables.com/id/How-to-bling-up-a-boring-staircase/
De 1e krijg ik werkend tot 548 leds. De 2e maar tot een aantal leds. ( ik geloof 120).
Dit is de code die ik momenteel gebruik.
// Edit by Serge Niko June 2015
// Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(548, PIN, NEO_GRB + NEO_KHZ800);
// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input // and minimize distance between Arduino and first pixel. Avoid connecting // on a live circuit...if you must, connect GND first.
// Set up Variables unsigned long timeOut=60000; // timestamp to remember when the PIR was triggered. int downUp = 0; // variable to rememer the direction of travel up or down the stairs int alarmPinTop = 10; // PIR at the top of the stairs int alarmPinBottom =11; // PIR at the bottom of the stairs int alarmValueTop = HIGH; // Variable to hold the PIR status int alarmValueBottom = HIGH; // Variable to hold the PIR status int ledPin = 13; // LED on the arduino board flashes when PIR activated int LDRSensor = A0; // Light dependant resistor int LDRValue = 0; // Variable to hold the LDR value int colourArray[350]; // An array to hold RGB values int change = 100; // used in 'breathing' the LED's int breathe = 100; // used in 'breathing' the LED's
void setup() { strip.begin(); strip.setBrightness(20); //adjust brightness here strip.show(); // Initialize all pixels to 'off' Serial.begin (9600); // only requred for debugging pinMode(ledPin, OUTPUT); // initilise the onboard pin 13 LED as an indicator pinMode(alarmPinTop, INPUT_PULLUP); // for PIR at top of stairs initialise the input pin and use the internal restistor pinMode(alarmPinBottom, INPUT_PULLUP); // for PIR at bottom of stairs initialise the input pin and use the internal restistor delay (2000); // it takes the sensor 2 seconds to scan the area around it before it can //detect infrared presence.
}
void loop() {
if (timeOut+15700 < millis()) { // idle state - 'breathe' the top and bottom LED to show program is looping uint32_t blue = (0, 0, breathe); breathe = breathe + change; strip.setPixelColor(0, blue); strip.setPixelColor(35, blue); strip.setPixelColor(36, blue); strip.setPixelColor(71, blue); strip.setPixelColor(72, blue); strip.setPixelColor(107, blue); strip.setPixelColor(108, blue); strip.setPixelColor(143, blue); strip.setPixelColor(144, blue); strip.setPixelColor(179, blue); strip.setPixelColor(180, blue); strip.setPixelColor(215, blue); strip.setPixelColor(216, blue); strip.setPixelColor(251, blue); strip.setPixelColor(252, blue); strip.setPixelColor(287, blue); strip.setPixelColor(288, blue); strip.setPixelColor(323, blue); strip.setPixelColor(324, blue); strip.setPixelColor(359, blue); strip.setPixelColor(360, blue); strip.setPixelColor(395, blue); strip.setPixelColor(396, blue); strip.setPixelColor(431, blue); strip.setPixelColor(432, blue); strip.setPixelColor(467, blue); strip.setPixelColor(468, blue); strip.setPixelColor(503, blue); strip.setPixelColor(504, blue); strip.setPixelColor(539, blue); strip.setPixelColor(540, blue); strip.setPixelColor(575, blue); strip.show(); if (breathe == 100 || breathe == 0) change = -change; // breathe the LED from 0 = off to 100 = fairly bright if (breathe == 100 || breathe == 0); delay (100); // Pause at beginning and end of each breath delay(10);
}
alarmValueTop = digitalRead(alarmPinTop); // Constantly poll the PIR at the top of the stairs //Serial.println(alarmPinTop); alarmValueBottom = digitalRead(alarmPinBottom); // Constantly poll the PIR at the bottom of the stairs //Serial.println(alarmPinBottom);
if (alarmValueTop == HIGH && downUp != 2) { // the 2nd term allows timeOut to be contantly reset if one lingers at the top of the stairs before decending but will not allow the bottom PIR to reset timeOut as you decend past it. timeOut=millis(); // Timestamp when the PIR is triggered. The LED cycle wil then start. downUp = 1; //clearStrip(); topdown(); // lights up the strip from top down } if (alarmValueBottom == HIGH && downUp != 1) { // the 2nd term allows timeOut to be contantly reset if one lingers at the bottom of the stairs before decending but will not allow the top PIR to reset timeOut as you decend past it. timeOut=millis(); // Timestamp when the PIR is triggered. The LED cycle wil then start. downUp = 2; //clearStrip(); bottomup(); // lights up the strip from bottom up }
if (timeOut+10000 < millis() && timeOut+15000 < millis()) { //switch off LED's in the direction of travel. if (downUp == 1) { colourWipeDown(strip.Color(0, 0, 0), 100); // Off } if (downUp == 2) { colourWipeUp(strip.Color(0, 0, 0), 100); // Off } downUp = 0;
}
}
void topdown() { Serial.println ("detected top"); // Helpful debug message colourWipeDown(strip.Color(255, 255, 250), 25 ); // Warm White //for(int i=0; i<3; i++) { // Helpful debug indication flashes led on Arduino board twice digitalWrite(ledPin,HIGH); delay(200); digitalWrite(ledPin,LOW); delay(200); //} }
void bottomup() { Serial.println ("detected bottom"); // Helpful debug message colourWipeUp(strip.Color(255, 255, 250), 25); // Warm White //for(int i=0; i<3; i++) { // Helpful debug indication flashes led on Arduino board twice digitalWrite(ledPin,HIGH); delay(200); digitalWrite(ledPin,LOW); delay(200); //} }
// Fade light each step strip void colourWipeDown(uint32_t c, uint16_t wait) {
for (uint16_t k = 0; k < 16; k++){ int start = strip.numPixels()/16 *k; Serial.println(k);
for (uint16_t j = start; j < start + 36; j++){ strip.setPixelColor(j, c); } strip.show(); delay(wait); } }
void clearStrip(){ for (int l=0; l<strip.numPixels(); l++){ strip.setPixelColor(l, (0,0,0)); }
} // Fade light each step strip void colourWipeUp(uint32_t c, uint16_t wait) { for (uint16_t k = 16; k > 0; k--){ int start = strip.numPixels()/16 *k; Serial.println(k); //start = start-1; for (uint16_t j = start; j > start - 36; j--){ strip.setPixelColor(j-1, c); } strip.show(); delay(wait); }
}
Dank je wel alvast.
Groetjes Roy Kolk
Verzonden vanuit Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 voor Windows 10
Van: Vincent van Beek notifications@github.com<mailto:notifications@github.com> Verzonden: Saturday, January 5, 2019 1:41:27 PM Aan: Vinz68/stairsJs CC: Kolk123; Author Onderwerp: Re: [Vinz68/stairsJs] Vraag (#1)
Hallo Roy, Ben blij dat je PIR sensoren werken. Jou led-strip, is dat zo’n NeoPixel, waarbij je per led aan/uit kan sturen ?
Ik heb ook een arduino waarmee ik dat ooit eens gedaan heb, en ik kon iets van 80 leds aansturen; en per led de kleur. Daarna had de arduino niet genoeg vermogen om de andere pixels aan te sturen; ik dacht toen dat 2de strip kapot was; maar ik kon 2de strip met 1ste omwisselen en toen kwam ik daarachter.
Hoop dat dit jou nog iets verder helpt (misschien vermogen probleem ?)
Coderen ben ik wel goed in dus als je prog kan sturen wil ik best even kijken of ik iets vreemds in zie. Suc6
Groeten, Vincent. Mail: Vin.van.beek@outlook.commailto:Vin.van.beek@outlook.com
From: Kolk123 notifications@github.com<mailto:notifications@github.com> Sent: zaterdag 5 januari 2019 09:51 To: Vinz68/stairsJs stairsJs@noreply.github.com<mailto:stairsJs@noreply.github.com> Cc: Vincent van Beek vin.van.beek@outlook.com<mailto:vin.van.beek@outlook.com>; State change state_change@noreply.github.com<mailto:state_change@noreply.github.com> Subject: Re: [Vinz68/stairsJs] Vraag (#1)
Dank je wel voor alle info!! helaas heb ik een digitale strip, en jou verlichting word aansgestuurd op relais. door o.a. jou info, heb ik nu wel de sensoren werkend gekregen. ik krijg alleen niet goed de aantal leds ingesteld. de laatste ledstrip werkt helaas niet. en ook ben ik niet goed in het coderen van een arduino. is nog even uitzoeken dus.
Groetjes roy
— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHubhttps://github.com/Vinz68/stairsJs/issues/1#issuecomment-451638967, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMZfBWft9i5TKBpAzc2Ol8m9UUvdpwW8ks5vAGdzgaJpZM4ZoHS6.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/Vinz68/stairsJs/issues/1#issuecomment-451652411, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AdAlgz5mk6ac2zlgjHNZWzZLkrZvCSpnks5vAJ13gaJpZM4ZoHS6.
— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHubhttps://github.com/Vinz68/stairsJs/issues/1#issuecomment-451652918, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMZfBaCJ8SFc8SAvidfpoZwsdtK3dT_sks5vAJ9kgaJpZM4ZoHS6.
Ik heb een vraag. aan je naam te zien gok ik dat je nederlands bent. ik heb een trap met 16 ws2812b ledstrips a36 led per tree . mijn doel was om met een arduino mijn leds aan te sturen samen met 2 PIR sensoren. helaas krijg ik dit allemaal niet werkend. zou jij mij kunnen vertellen of jou software mij daarbij kan helpen? en op werkte trigger heb jij de sensoren aangesloten?
Groetjes Roy Kolk