LED NeoPixel Motion Sensor trappa belysning (2 / 6 steg)
Steg 2: Design och tester
Jag började designa min bygga genom att bestämma antalet pixlar som jag ville och hur jag ville att det skulle se ut. Jag hade några standard LED RGB remsor liggandes så jag experimenterade med dem och beslutsamt jag ville ha 35 pixlar på varje steg. Testet visade mig mängden ljusspridning som jag gillade. Antalet pixlar kommer att vara olika för varje setup. Bredden på min trappa är lite blyg av standard 3'.
När jag bestämt antalet pixlar, beställde jag ljus remsorna. Detta var överlägset den dyraste delen av hela bygger. WS2812B är en ganska ny teknik; Om du önskar, kan du gå med det billigare alternativet av en färg LED strip eller en RGB remsor. Med en enkel RGB remsa, kommer hela remsan dock av samma färg. Också, om du använder en annan remsa, din kod kommer att behöva ändras och kommer inte att fungera med min kod. Utöver färgalternativen haft med hjälp av en WS2812B LED strip förmånen att med endast 1 effekt på arduino.
Ursprungligen, jag planerade att använda vanliga remsor, som skulle ha krävt mig att använda 16 utgångar på arduino (1 för varje steg) eftersom jag ville ha lamporna till ljus upp steg för steg upp eller ner beroende på vilken motion sensor var utlöst. Dock på arduino UNO, det finns bara 6 PWM utgångar och arduino MEGA har endast 14 PWM utgångar. Så var detta en av de viktigaste begränsande faktorerna för varför jag valde WS2812B LED strips i stället för den traditionella RGB ljusa remsan. Den andra begränsande faktorn var om jag ville utnyttja alla 3 färger på var och en av de 16 band, som skulle innebära 16 * 3 = 48 kanaler/utgångar skulle behövas. Ha detta i åtanke när man utformar din bygga. Det finns andra tillgängliga styrenheter som stöder detta många kanaler, men i slutändan, det skulle kosta mer än bara att gå med WS2812B LED strip.
Lärande NeoPixel
Du borde ha gjort all forskning om WS2812B lysdioder om du tänker använda dem. Men medan du väntar på dina delar till skeppa in, det är en bra idé att bättra med dessa LED strips. Jag kommer att använda NeoPixel omväxlande med WS2812B lysdioder eftersom de är samma sak.
Eftersom jag har aldrig använt WS2812B lysdioder innan, behövde jag för att bekanta dig med NeoPixel biblioteket. Du kommer att behöva ladda ner biblioteket för Adafruit och importera den till Arduino kodning programvara. Nedan är två användbara länkar att få dig igång med med NeoPixels. (Jag antar du är lite bekant med Arduino och vet hur man importera bibliotek och göra skisser. Om inte, vänligen referera andra instructables eller youtube video på denna process).
Lär dig mer om NeoPixel bibliotek
Ovanstående länkar innehåller mycket noggrann beskrivning av hur du använder, kod och driva NeoPixels. De har även en testsekvenser, som jag inledningsvis används för att testa delen av LED se till det finns inga dåliga pixlar. Detta rekommenderas starkt så du kan byta produkten om det finns några dåliga pixlar. Eller du bara klippa dem ut och åter löda till önskad längd.
Det finns också många projekt människor tidigare har gjort med NeoPixels som är intressanta för referens.
Bifogade program, heter "test2," är ett testprogram som bara går igenom samma olika loopar. Jag använde den för att lära sig de olika funktionerna i LED strip och bekanta mig med några av kodning. Jag anser att detta program laddas ner från webbplatsen Adafruit. Jag tar inte äran för koden.
När jag var bekant med hur NeoPixels fungerade, fann jag en instructable som var mycket hjälpsam och liknar en bygga var jag planerar. Jag kommer att länka sitt instructable eftersom jag tycker det är också en bra referens att använda medan du planerar din bygga. Författaren går lite mer djupgående, och jag skulle vilja tacka honom för att ta tid att lägga upp den. Jag fann det mycket bra och var kompetent att anpassa sin kod.
Jag antar att du har vissa kunskaper om arduinos och ledningar så att hålla detta kortare, jag hoppa över vissa uppenbara detaljer. Också, som jag nämnt tidigare, varje bygga är unik så det inte är så enkelt som att bara kopiera detta instructable. Det beror också på vilken typ av delar du använder, så jag förväntar mig du göra lite forskning om vilka komponenter som du använder.
Instructable länk. Hans namn är Simon Jowett.
Småskalig provning
Okej, låt oss komma till småskaliga Bänktest. När jag fått ljus remsorna, skär jag dem i 35 pixel längder. En annan fördel med WS2812B LED ljus remsor är att de kan skäras varje pixel och fortfarande fungera korrekt i stället för varje 3 lysdioder med de traditionella LED strips. Jag använde en av de 35 pixel längderna för att testa några olika typer av effekter och skalas ner hela designen att utnyttja endast 35 pixlar. Så i teorin hade jag 6 trappor med 5 bildpunkter på varje steg.
Så jag ville enskilda remsorna av ljus på varje steg till ljus upp i ordning tenn som han rörelse är detektor utlöst. Granska den schematiska bifogas i detta steg för att se på uppbyggnaden av den övergripande bygget. Jag använder två PIR-sensorer som känner av om personen går upp eller ner för trappan. En LDR är en Light-Dependent Resistor, även känd som en fotomotstånd. Detta motstånd ändrar värden baserat på hur mycket ljus utsätts över resistorn. För närvarande är sensorn inte är ansluten, men jag planerar på att lägga till det snart att spara på drift kostnaden. Setup är för närvarande arbetar 24/7. (Sida notera: Jag har gjort några grundläggande beräkningar och medan det fungerar 24/7 det kostar runt $11 årligen). Du kan läsa mer om hur du lägger till en LDR till arduino använder andra instructables eller följa detta exempel. Kort sagt, ansluter du LDR till en analog port på arduino så du kan använda "analogRead()" kommando i din kod för att se värdet på motståndet.
Jag ska kortfattat förklara varför jag valde metoden loop tillbaka när du ansluter lampor istället för bara Kedjekoppling av dem. (du kan förstå bättre när du ser koden ytterligare i detta betänkande och jag kommer också att utveckla detta ämne) Kedjekoppling av lysdioderna kommer att resultera i en ZIG-ZAG ledde matrisen.
Så om jag vill köra ett basic-slinga för att driva upp alla lampor från början till slut, koden ser ut ungefär så här:
för (uint16_t n = 0; n < strip.numPixels(); n ++)
{
strip.setPixelColor (n, strip. Color(255,255,255));
}
Så här koden anger i princip färg för varje LED börjar på LED 0 till färg full ljusstyrka vit (255,255,255) och det fortsätter att göra detta samtidigt öka räknaren tills den når den sista LED (n < strip.numPixels()).
Observera, att tillämpa denna kod i seriekoppling situationen, LED strip först tänds från höger till vänster, sedan på då nästa steg vänster till höger och så vidare tills den når den sista LED. Så om du kan föreställa detta i huvudet, tänds det inte lysdioderna från samma sida på varje steg. Lysdioderna tänds i en sicksack rörelse. Det är därför jag rekommenderar starkt att använda lite extra tråd till tråd upp remsorna enligt min diagram. Detta kommer att förenkla kodning avsevärt!