Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Jag ville bygga någon form av interaktiva gårdsljus för min bakgård. Tanken var att när någon gick ett sätt skulle det sätta igång en animation i den riktning du gick. Jag började med Dollar General $ 1.00 solbelysning
Steg 1: Gut Solor Lights
Det första steget var att tända lamporna för att ge plats för roligare saker. Jag började med att klippa ur den ursprungliga ledningen och batteriet. Var noga med att spara dessa delar eftersom de kommer att vara användbara i ett annat projekt. Jag tog också bort kromkupolen som var på undersidan av solskenet och limmade den på toppen som på bilderna
Steg 2: Installera bättre lampor
för LED använde jag vattentät ws2811b som finns här
www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…
Jag planerade ursprungligen att sätta PIR -sensorerna inuti solskenet. men detta visade sig vara något problematiskt eftersom sensorn i princip inte kunde se förbi plasten. det måste ha någon form av UV -filtrering. så jag valde något mer så här
www.thingiverse.com/thing:2590216
Steg 3: Kodning
om du vill att lamporna inte ska använda sensor eller bara springa hela tiden är det bara att leta efter platsen som kommenteras som "ändra flaggstatus" och ställa in den på eter 1 eller 0, jag lägger till fler bilder när jag slutför detta för mig själv så det är fortfarande ett pågående arbete men jag tycker att det är för snyggt för att inte dela direkt. tack för att du tittade
void setup () {
// lägg din installationskod här för att köra en gång: 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; för (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Vit; leds [FirstLed] = CRGB:: Vit; fördröjning (750); FastLED.show (); Serial.print ("white Pass"); Serial.print (i); Serial.println ("av 8"); } FirstLed = -1; LastLed = 16; för (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Blå; leds [FirstLed] = CRGB:: Blå; fördröjning (250); FastLED.show (); Serial.print ("Blue Pass"); Serial.print (i); Serial.println ("av 8"); } FirstLed = -1; LastLed = 16; för (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Lila; leds [FirstLed] = CRGB:: Lila; fördröjning (250); FastLED.show (); Serial.print ("Red Pass"); Serial.print (i); Serial.println ("av 8"); } FirstLed = -1; LastLed = 16; för (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Svart; leds [FirstLed] = CRGB:: Svart; fördröjning (250); FastLED.show (); Serial.print ("Stänga av LED"); Serial.print (i); Serial.println ("av 8"); } FlagState = 2; // ändra flaggstatus} ogiltiga RevLeds () {Serial.println ("i omvänd"); FirstLed = 8; LastLed = 7; för (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Vit; leds [FirstLed] = CRGB:: Vit; fördröjning (750); FastLED.show (); Serial.print ("White pass"); Serial.print (i); Serial.println ("av 8"); } FirstLed = 8; LastLed = 7; för (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Blå; leds [FirstLed] = CRGB:: Blå; fördröjning (250); FastLED.show (); Serial.print ("Blått pass"); Serial.print (i); Serial.println ("av 8"); } FirstLed = 8; LastLed = 7; för (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Lila; leds [FirstLed] = CRGB:: Lila; fördröjning (250); FastLED.show (); Serial.print ("Red pass"); Serial.print (i); Serial.println ("av 8"); }
FirstLed = 8;
LastLed = 7; för (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Svart; leds [FirstLed] = CRGB:: Svart; fördröjning (250); FastLED.show (); Serial.print ("Stänga av LED"); Serial.print (i); Serial.println ("av 8"); } FlagState = 2; // ändra flaggstatus} void Waiting () {buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); if (buttonState1 == HIGH) {Serial.println ("framåt utlöst"); FlagState = 0; } annars if (buttonState2 == HIGH) {Serial.println ("Rev utlöst"); FlagState = 1; } Serial.println ("loop slutad väntar"); }