2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Eu queria construir algum tipo de iluminação de quintal interativa para meu quintal. A ideia era que, quando alguém caminhava por um lado, uma animação era ativada na direção em que você estava caminhando. Comecei com a Dollar General $ 1,00 luz solar
Etapa 1: destrua as luzes do Solor
O primeiro passo foi apagar as luzes para dar lugar a mais coisas divertidas. Comecei cortando o led original e a bateria. Não se esqueça de guardar essas peças, pois elas serão úteis em outro projeto. Eu também removi a cúpula cromada que estava na parte inferior da luz solar e colei na parte superior como pode ser visto nas fotos
Etapa 2: Instalando Better Lights
para o led, usei ws2811b à prova d'água, que pode ser encontrado aqui
www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…
Originalmente, planejei colocar os sensores PIR dentro das luzes solares. mas isso provou ser problemático porque o sensor basicamente não conseguia ver além do plástico. deve ter algum tipo de propriedade de filtragem UV. então optei por algo mais parecido com isso
www.thingiverse.com/thing:2590216
Etapa 3: codificação
se você quiser fazer as luzes não usarem sensor ou apenas correr o tempo todo, procure o local que está comentado como "alterando o estado do sinalizador" e configure-o para éter 1 ou 0 adicionarei mais fotos quando concluir isso para mim. ainda é um trabalho em andamento, mas acho que é muito legal não compartilhar imediatamente. obrigado por olhar
void setup () {
// coloque seu código de configuração aqui, para executar uma vez: 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; para (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Branco; leds [FirstLed] = CRGB:: Branco; atraso (750); FastLED.show (); Serial.print ("passagem branca"); Serial.print (i); Serial.println ("de 8"); } FirstLed = -1; LastLed = 16; para (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Azul; leds [FirstLed] = CRGB:: Azul; atraso (250); FastLED.show (); Serial.print ("Blue Pass"); Serial.print (i); Serial.println ("de 8"); } FirstLed = -1; LastLed = 16; para (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Roxo; leds [FirstLed] = CRGB:: Roxo; atraso (250); FastLED.show (); Serial.print ("Red Pass"); Serial.print (i); Serial.println ("de 8"); } FirstLed = -1; LastLed = 16; para (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: Preto; leds [FirstLed] = CRGB:: Preto; atraso (250); FastLED.show (); Serial.print ("LED apagando"); Serial.print (i); Serial.println ("de 8"); } FlagState = 2; // alterando o estado do sinalizador} void RevLeds () {Serial.println ("in reverse"); FirstLed = 8; LastLed = 7; para (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Branco; leds [FirstLed] = CRGB:: Branco; atraso (750); FastLED.show (); Serial.print ("Passe branco"); Serial.print (i); Serial.println ("de 8"); } FirstLed = 8; LastLed = 7; para (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Azul; leds [FirstLed] = CRGB:: Azul; atraso (250); FastLED.show (); Serial.print ("Blue pass"); Serial.print (i); Serial.println ("de 8"); } FirstLed = 8; LastLed = 7; para (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Roxo; leds [FirstLed] = CRGB:: Roxo; atraso (250); FastLED.show (); Serial.print ("Passe vermelho"); Serial.print (i); Serial.println ("de 8"); }
FirstLed = 8;
LastLed = 7; para (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: Preto; leds [FirstLed] = CRGB:: Preto; atraso (250); FastLED.show (); Serial.print ("Desligando o Led"); Serial.print (i); Serial.println ("de 8"); } FlagState = 2; // alterando o estado do sinalizador} void Waiting () {buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); if (buttonState1 == HIGH) {Serial.println ("encaminhamento acionado"); FlagState = 0; } else if (buttonState2 == HIGH) {Serial.println ("Rev disparado"); FlagState = 1; } Serial.println ("loop concluído em espera"); }