Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Jeg ønsket å bygge en slags interaktive hagelys for bakgården min. Tanken var at når noen gikk en vei, ville det sette i gang en animasjon i den retningen du gikk. Jeg begynte med Dollar General $ 1.00 sollys
Trinn 1: Gut Solor Lights
Det første trinnet var å tømme lysene for å gjøre plass til mer morsomme ting. Jeg begynte med å kutte ut den originale LED -en og batteriet. Sørg for å lagre disse delene, da de vil være nyttige i et annet prosjekt. Jeg fjernet også kromkuppelen som var på undersiden av sollyset og limte den på toppen som sett på bilder
Trinn 2: Installere bedre lys
for ledet brukte jeg vanntett ws2811b som du finner her
www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…
Jeg planla opprinnelig å sette PIR -sensorene inne i sollysene. men dette viste seg å være noe problematisk fordi sensoren i utgangspunktet ikke kunne se forbi plasten. den må ha en form for UV -filtrering. så jeg valgte noe mer som dette
www.thingiverse.com/thing:2590216
Trinn 3: Koding
Hvis du vil at lysene ikke skal bruke sensor eller bare kjøre hele tiden, er det bare å lete etter stedet som er kommentert som "endring av flagget" og sett det til eter 1 eller 0, jeg vil legge til flere bilder når jeg fullfører dette for meg selv så det er fremdeles et arbeid som pågår, men jeg synes det er for pent å ikke dele med en gang. takk for at du så
ugyldig oppsett () {
// legg oppsettskoden her for å kjøre en gang: FastLED.addLeds (leds, NUM_LEDS); Serial.begin (9600); pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); }
void loop () {
Serial.println (FlagState);
if (FlagState == 0) {ForwardLeds (); } if (FlagState == 1) {RevLeds (); } if (FlagState == 2) {Waiting (); }}
void ForwardLeds () {
FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Hvit; leds [FirstLed] = CRGB:: Hvit; forsinkelse (750); FastLED.show (); Serial.print ("hvitt pass"); Serial.print (i); Serial.println ("av 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Blå; leds [FirstLed] = CRGB:: Blå; forsinkelse (250); FastLED.show (); Serial.print ("Blue Pass"); Serial.print (i); Serial.println ("av 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Lilla; leds [FirstLed] = CRGB:: Lilla; forsinkelse (250); FastLED.show (); Serial.print ("Red Pass"); Serial.print (i); Serial.println ("av 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Svart; leds [FirstLed] = CRGB:: Svart; forsinkelse (250); FastLED.show (); Serial.print ("Slå av led"); Serial.print (i); Serial.println ("av 8"); } FlagState = 2; // endring av flaggstatus} ugyldig RevLeds () {Serial.println ("omvendt"); FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Hvit; leds [FirstLed] = CRGB:: Hvit; forsinkelse (750); FastLED.show (); Serial.print ("White pass"); Serial.print (i); Serial.println ("av 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Blå; leds [FirstLed] = CRGB:: Blå; forsinkelse (250); FastLED.show (); Serial.print ("Blått pass"); Serial.print (i); Serial.println ("av 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Lilla; leds [FirstLed] = CRGB:: Lilla; forsinkelse (250); FastLED.show (); Serial.print ("Rødt pass"); Serial.print (i); Serial.println ("av 8"); }
FirstLed = 8;
LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Svart; leds [FirstLed] = CRGB:: Svart; forsinkelse (250); FastLED.show (); Serial.print ("Slå av LED"); Serial.print (i); Serial.println ("av 8"); } FlagState = 2; // endring av flaggetilstand} void Waiting () {buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); if (buttonState1 == HIGH) {Serial.println ("fremover utløst"); FlagState = 0; } annet hvis (buttonState2 == HIGH) {Serial.println ("Rev utløst"); FlagState = 1; } Serial.println ("loop ferdig ventet"); }