2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Želel sem zgraditi nekakšne interaktivne dvoriščne luči za svoje dvorišče. Zamisel je bila, da bi nekdo, ko je hodil v eno smer, sprožil animacijo v smeri, v kateri ste hodili. Začel sem s solarnimi svetilkami Dollar General za 1,00 USD
1. korak: Odstranite sončne luči
Prvi korak je bil ugasniti luči, da bi naredili prostor za bolj zabavne stvari. Začel sem z izrezovanjem originalnega LED -a in baterije. Ne pozabite shraniti teh delov, saj bodo uporabni v drugem projektu. Odstranil sem tudi kromirano kupolo, ki je bila na dnu sončne svetlobe, in jo prilepil na vrh, kot je prikazano na fotografijah
2. korak: Namestitev boljših luči
za LED sem uporabil vodotesen ws2811b, ki ga najdete tukaj
www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…
Sprva sem nameraval postaviti senzorje PIR v sončne luči. vendar se je to izkazalo za nekaj problematičnega, ker senzor v bistvu ni videl mimo plastike. mora imeti nekakšno lastnost UV filtriranja. zato sem se odločil za kaj več takega
www.thingiverse.com/thing:2590216
3. korak: Kodiranje
če želite, da luči ne uporabljajo senzorja ali pa samo tečejo ves čas, samo poiščite mesto, ki je komentirano kot "spreminjanje stanja zastave", in ga nastavite na eter 1 ali 0, ko bom to dokončal, bom dodal več slik, zato še vedno poteka, vendar se mi zdi preveč čeden, da ga ne bi delil takoj. hvala za ogled
void setup () {
// tukaj vstavite nastavitveno kodo, ki jo želite zagnati enkrat: FastLED.addLeds (LED, 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 ++; LED [LastLed] = CRGB:: Bela; LED diode [FirstLed] = CRGB:: Bela; zamuda (750); FastLED.show (); Serial.print ("bela karta"); Serial.print (i); Serial.println ("od 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; LED [LastLed] = CRGB:: Modra; LED diode [FirstLed] = CRGB:: Modra; zamuda (250); FastLED.show (); Serial.print ("Blue Pass"); Serial.print (i); Serial.println ("od 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; LED [LastLed] = CRGB:: Vijolična; LED diode [FirstLed] = CRGB:: Vijolična; zamuda (250); FastLED.show (); Serial.print ("Red Pass"); Serial.print (i); Serial.println ("od 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; LED [LastLed] = CRGB:: Črna; LED diode [FirstLed] = CRGB:: Črna; zamuda (250); FastLED.show (); Serial.print ("Izklop LED"); Serial.print (i); Serial.println ("od 8"); } FlagState = 2; // spreminjanje stanja zastave} void RevLeds () {Serial.println ("v obratni smeri"); FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; LED diode [LastLed] = CRGB:: Bela; LED diode [FirstLed] = CRGB:: Bela; zamuda (750); FastLED.show (); Serial.print ("White pass"); Serial.print (i); Serial.println ("od 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; LED [LastLed] = CRGB:: Modra; LED diode [FirstLed] = CRGB:: Modra; zamuda (250); FastLED.show (); Serial.print ("Blue pass"); Serial.print (i); Serial.println ("od 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; LED [LastLed] = CRGB:: Vijolična; LED diode [FirstLed] = CRGB:: Vijolična; zamuda (250); FastLED.show (); Serial.print ("Red pass"); Serial.print (i); Serial.println ("od 8"); }
FirstLed = 8;
LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; LED diode [LastLed] = CRGB:: Črna; LED diode [FirstLed] = CRGB:: Črna; zamuda (250); FastLED.show (); Serial.print ("Izklop LED"); Serial.print (i); Serial.println ("od 8"); } FlagState = 2; // spreminjanje stanja zastave} void Waiting () {buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalno branje (buttonPin2); if (buttonState1 == HIGH) {Serial.println ("naprej sproženo"); FlagState = 0; } else if (buttonState2 == HIGH) {Serial.println ("Rev sprožen"); FlagState = 1; } Serial.println ("zanka končana čakanje"); }