Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Halusin rakentaa jonkinlaisia interaktiivisia pihavalaisimia takapihalleni. Ajatuksena oli, että kun joku käveli yhdellä tavalla, se käynnisti animaation kulkemasi suuntaan. Aloitin Dollar Generalin 1,00 dollarin aurinkovaloilla
Vaihe 1: Gut Solor Lights
Ensimmäinen askel oli sammuttaa valot, jotta hauskempaa tavaraa. Aloitin katkaisemalla alkuperäisen ledin ja akun. Muista tallentaa nämä osat, koska ne ovat hyödyllisiä toisessa projektissa. Poistin myös auringonvalon pohjassa olevan kromikupolin ja liimasin sen yläosaan kuvien mukaisesti
Vaihe 2: Asenna parempia valoja
ledille käytin vedenpitävää ws2811b, joka löytyy täältä
www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…
Suunnittelin alun perin PIR -antureiden asettamista aurinkovalojen sisään. mutta tämä osoittautui ongelmalliseksi, koska anturi ei käytännössä voinut nähdä muovin ohi. sillä on oltava jonkinlainen UV -suodatus. joten valitsin jotain tällaista
www.thingiverse.com/thing:2590216
Vaihe 3: Koodaus
jos haluat, että valot eivät käytä anturia tai vain juoksevat koko ajan, etsi vain paikka, joka on kommentoitu "muuttuvaksi lipputilaksi" ja aseta se eetteriksi 1 tai 0, lisään kuvia, kun suoritan tämän itselleni, joten se on vielä kesken, mutta mielestäni se on liian siisti olla jakamatta heti. kiitos kun katsoit
void setup () {
// laita asennuskoodi tähän, jotta se suoritetaan kerran: FastLED.addLeds (ledit, NUM_LEDS); Sarja.alku (9600); pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); }
void loop () {
Serial.println (FlagState);
if (FlagState == 0) {ForwardLeds (); } if (FlagState == 1) {RevLeds (); } if (FlagState == 2) {Odottaa (); }}
void ForwardLeds () {
FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; ledit [LastLed] = CRGB:: Valkoinen; ledit [FirstLed] = CRGB:: Valkoinen; viive (750); FastLED.show (); Serial.print ("valkoinen passi"); Sarjanjälki (i); Serial.println ("of 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; ledit [LastLed] = CRGB:: Sininen; ledit [FirstLed] = CRGB:: Sininen; viive (250); FastLED.show (); Serial.print ("Blue Pass"); Sarjanjälki (i); Serial.println ("of 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; ledit [LastLed] = CRGB:: Violetti; ledit [FirstLed] = CRGB:: Violetti; viive (250); FastLED.show (); Serial.print ("Red Pass"); Sarjanjälki (i); Serial.println ("of 8"); } FirstLed = -1; LastLed = 16; for (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; ledit [LastLed] = CRGB:: Musta; ledit [FirstLed] = CRGB:: Musta; viive (250); FastLED.show (); Serial.print ("LED -valojen sammuttaminen"); Sarjanjälki (i); Serial.println ("of 8"); } Lipputila = 2; // lipun tilan muuttaminen} void RevLeds () {Serial.println ("in reverse"); FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; ledit [LastLed] = CRGB:: Valkoinen; ledit [FirstLed] = CRGB:: Valkoinen; viive (750); FastLED.show (); Serial.print ("Valkoinen pass"); Sarjanjälki (i); Serial.println ("of 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; ledit [LastLed] = CRGB:: Sininen; ledit [FirstLed] = CRGB:: Sininen; viive (250); FastLED.show (); Serial.print ("Blue pass"); Sarjanjälki (i); Serial.println ("of 8"); } FirstLed = 8; LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; ledit [LastLed] = CRGB:: Violetti; ledit [FirstLed] = CRGB:: Violetti; viive (250); FastLED.show (); Serial.print ("Red pass"); Sarjanjälki (i); Serial.println ("of 8"); }
FirstLed = 8;
LastLed = 7; for (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; ledit [LastLed] = CRGB:: Musta; ledit [FirstLed] = CRGB:: Musta; viive (250); FastLED.show (); Serial.print ("Ledin sammuttaminen"); Sarjanjälki (i); Serial.println ("of 8"); } Lipputila = 2; // lipun tilan muuttaminen} void Waiting () {buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); if (buttonState1 == HIGH) {Serial.println ("eteenpäin laukaisu"); Lipputila = 0; } else if (buttonState2 == HIGH) {Serial.println ("Rev triggered"); Lipputila = 1; } Serial.println ("silmukka valmis odotus"); }