Índice:

HALO: Handy Arduino Lamp Rev1.0 W / NeoPixels: 9 etapas (com imagens)
HALO: Handy Arduino Lamp Rev1.0 W / NeoPixels: 9 etapas (com imagens)

Vídeo: HALO: Handy Arduino Lamp Rev1.0 W / NeoPixels: 9 etapas (com imagens)

Vídeo: HALO: Handy Arduino Lamp Rev1.0 W / NeoPixels: 9 etapas (com imagens)
Vídeo: DIY HALO Lamp Rev1.0 - Powered by Arduino Nano, 15+ Color Modes 2024, Junho
Anonim
Image
Image
HALO: Handy Arduino Lamp Rev1.0 W / NeoPixels
HALO: Handy Arduino Lamp Rev1.0 W / NeoPixels
HALO: Handy Arduino Lamp Rev1.0 W / NeoPixels
HALO: Handy Arduino Lamp Rev1.0 W / NeoPixels

Neste instrutível, mostrarei como construir o HALO, ou Handy Arduino Lamp Rev1.0.

HALO é uma lâmpada simples, alimentada por Arduino Nano. Tem uma pegada total de cerca de 2 "por 3" e uma base de madeira pesada para extrema estabilidade. O pescoço flexível e 12 NeoPixels superbrilhantes permitem iluminar facilmente todos os detalhes em qualquer superfície. O HALO possui dois botões de pressão para alternar entre os diferentes modos de luz, dos quais há 15 pré-programados. Devido ao uso do Arduino Nano como processador, é possível reprogramá-lo com recursos adicionais. O único potenciômetro é usado para ajustar o brilho e / ou a velocidade na qual um modo é exibido. Uma construção metálica simples torna a HALO uma lâmpada muito durável, adequada para uso em qualquer oficina. A facilidade de uso é combinada com o regulador de força onboard do Nano, de modo que o HALO pode ser alimentado por USB ou pelo conector de cilindro padrão de 5 mm na parte traseira.

Espero ver muitas pessoas utilizando essas lâmpadas em um futuro próximo, porque existem tantas possibilidades que se abrem com este design. Por favor, deixe um voto no Concurso de Microcontroladores se você gostar ou se achar útil de alguma forma, eu realmente aprecio.

Antes de entrarmos neste Instructable, gostaria de agradecer brevemente a todos os meus seguidores e a qualquer pessoa que já comentou, colocou como favorito ou votou em qualquer um dos meus projetos. Graças a vocês, meu Cardboard instructable se tornou um grande sucesso, e agora, ao digitar isso atingindo cerca de 100 seguidores, um grande marco na minha opinião. Eu realmente aprecio todo o apoio que recebo de vocês quando coloco meu Ible, e quando se trata disso, eu não estaria onde estou hoje sem vocês. Com isso dito, obrigado a todos!

NOTA: Ao longo deste Instructable existem frases em negrito. Essas são as partes importantes de cada etapa e não devem ser ignoradas. Não sou eu gritando ou sendo grosseiro intencionalmente, estou simplesmente tentando uma nova técnica de escrita para enfatizar melhor o que precisa ser feito. Se você não gosta e prefere como eu costumava escrever meus passos, deixe-me saber nos comentários e irei voltar ao meu antigo estilo.

Etapa 1: coleta de materiais

Materiais de coleta
Materiais de coleta
Materiais de coleta
Materiais de coleta
Materiais de coleta
Materiais de coleta
Materiais de coleta
Materiais de coleta

Quantas vezes tenho que dizer isso? Tenha sempre o que precisa e a garantia de que será capaz de construir algo até o fim.

Observação: alguns desses são links de afiliados (marcados com "al"). Receberei uma pequena propina se você comprar por meio deles, sem nenhum custo adicional para você. Obrigado se você comprar pelos links

Partes:

1x Arduino Nano Nano - al

1x potenciômetro giratório de 10k 5 potenciômetros de pacote de 10k - al

1x jack barril de 5 mm (o meu é reciclado de um Arduino Uno frito) Jack de barril fêmea (5 pack) - al

2x botões de pressão momentâneos de 2 pinos 10 pack SPST interruptor de botão - al

12x NeoPixels de um fio de 60 LED / medidor (qualquer equivalente, por exemplo, WS2812B, funcionará) Adafruit NeoPixels

Uma folha de alumínio de 0,5 mm

O pescoço flexível de um antigo isqueiro flex

O anel de cobertura superior de uma lâmpada LED "Stick and Click" para gabinetes LED para gabinetes - al

Uma pequena folha de compensado de 1/4 de polegada

Um peso de metal plano e pesado de dimensões (aproximadamente) 1,5 "por 2,5" por 0,25"

Fio elétrico de núcleo trançado

Ferramentas:

Pistola de cola quente e cola

Ferro de solda e solda

Furadeira sem fio e pequenas brocas de torção variadas

Canivete X-acto (ou um canivete)

Decapantes de arame

Alicate

Cortadores de fio / tesouras

Tesouras para serviços pesados

Se você não tem o peso de metal plano, também precisa de:

1 rolo de solda barata (não o material que você usará para soldar) Solda sem chumbo barata

Vela de álcool (ou um bico de Bunsen)

Um prato de aço endurecido pequeno que você não se importa em estragar (ou um pequeno cadinho se você tiver um)

Um tripé para o referido prato / cadinho (eu fiz o meu com fio de aço de calibre 12)

Um prato de argila (uma daquelas coisinhas que fica embaixo da panela)

Alguma folha de alumínio

NOTA: Se você tiver um kit de soldagem ou uma impressora 3D, pode não precisar de todas as ferramentas listadas aqui.

Etapa 2: Fazendo o Peso

Fazendo o Peso
Fazendo o Peso
Fazendo o Peso
Fazendo o Peso
Fazendo o Peso
Fazendo o Peso

Esta é uma etapa bastante difícil e você deve ter muito cuidado ao fazê-lo. Se você tem um peso de metal pesado ou um ímã de neodímio plano de cerca de 2,75 "por 1,75" por 0,25 ", eu recomendaria usá-lo (e o ímã permitiria até que você posicionasse a lâmpada lateralmente em superfícies de metal!).

Isenção de responsabilidade: não sou responsável por nenhuma lesão de sua parte, portanto, use o bom senso

Além disso, faça isso do lado de fora, sobre uma superfície de concreto, da qual você não se importará se ficar um pouco queimada (é apenas uma precaução). Não tenho fotos para esse processo porque uma câmera teria sido uma distração extra que eu não precisava ou não queria.

Primeiro, faça um pequeno molde de folha de alumínio ou argila úmida, com cerca de 2 3/4 polegadas por 1 3/4 polegadas por 1/4 polegadas nas dimensões internas. Pode ser uma forma ovóide como a minha ou um retângulo. Use várias camadas de papel alumínio ou camadas grossas de argila.

Coloque o molde no prato de cerâmica e encha o molde e a bandeja com água fria.

Pegue sua vela de álcool apagada / bico de bunsen e coloque o prato / cadinho de aço no tripé para que a chama aqueça o centro do prato (quando aceso). Antes de acender o queimador, certifique-se de ter pelo menos 1 par de alicates ou tenazes para metais em mãos, se não 2.

É uma boa ideia usar luvas de couro, mangas compridas, calças compridas, sapatos fechados e proteção para os olhos durante as próximas etapas

Enrole e quebre um punhado de solda barata do carretel e coloque no prato de aço, em seguida, acenda o queimador. Espere até que a bobina derreta completamente, então comece a alimentar o resto da solda no prato em um ritmo moderado. Se a solda contiver qualquer colofônia, ela pode entrar em combustão espontânea com o calor, produzindo uma chama amarela clara e fumaça preta. Não se preocupe, isso já aconteceu comigo várias vezes e é perfeitamente normal.

Continue alimentando a solda no prato até que o resto esteja derretido.

Deixe as chamas da breu em combustão extinguirem-se completamente e use o alicate / pinça para agarrar o prato e girar suavemente o metal derretido dentro, mantendo-o cuidadosamente na chama.

Depois de ter certeza de que toda a solda está completamente liquefeita e em uma boa temperatura quente, rápida e cuidadosamente remova-a da chama e despeje-a no molde. Haverá um som de assobio alto e vapor enquanto parte da água é vaporizada e o resto é forçado para fora do molde para ser substituído por solda derretida.

Deixando a solda esfriar, desligue o queimador / apague a vela e coloque o prato de aço em um lugar seguro para esfriar. Você pode despejar água fria sobre a solda de resfriamento para acelerar o resfriamento e endurecê-la ainda mais. (A água fria faz com que o exterior resfrie mais rápido do que o interior, criando tensão interna que torna o metal mais duro e rígido, semelhante a uma gota do Príncipe Rupert.) Você também pode jogar água sobre o prato de metal, mas isso fará com que ele se torne quebradiço, especialmente se feito várias vezes.

Depois que a solda esfriar completamente (cerca de 20 minutos para ser seguro), remova-a do molde de alumínio.

O meu ficou mais grosso de um lado do que do outro, então usei um martelo para nivelar e achatar as bordas (resultando no formato que você vê nas fotos). Em seguida, lixei levemente em água corrente para polir e deixei de lado para depois.

Etapa 3: Construindo a Caixa de Eletrônicos, Etapa 1

Construindo a caixa de eletrônicos, etapa 1
Construindo a caixa de eletrônicos, etapa 1
Construindo a caixa de eletrônicos, etapa 1
Construindo a caixa de eletrônicos, etapa 1
Construindo a caixa de eletrônicos, etapa 1
Construindo a caixa de eletrônicos, etapa 1
Construindo a caixa de eletrônicos, etapa 1
Construindo a caixa de eletrônicos, etapa 1

Essas são as partes do shell que abrigará o Nano, montará a interface e é basicamente o que mantém a lâmpada HALO unida. Eu fiz o meu com meu 0,5mm de alumínio e cola quente, mas se você tiver uma impressora 3D (algo que venho tentando comprar para minha loja há algum tempo), fiz uma versão. STL no Tinkercad que anexei aqui para você download. Como eu mesmo não tenho uma impressora, não consegui testar a impressão do modelo para ver se tudo imprime corretamente, mas acho que não teria problema se você adicionasse as estruturas de suporte adequadas ao divisor. Você também pode copiar e editar o arquivo de origem aqui se precisar ou quiser um design ou estética ligeiramente diferente.

As dimensões foram, na verdade, derivadas do peso do metal que lancei para mim mesmo com a solda, não do tamanho da eletrônica, mas ficou muito bom de qualquer maneira e as dimensões são ótimas.

As imagens mostram uma ordem de operação ligeiramente diferente da que escreverei aqui, porque desenvolvi um método aprimorado com base nos resultados do meu método original.

Se você está montando a partir de uma folha de metal como eu, aqui está o que você precisa fazer:

Etapa 1: Placas Faciais

Corte duas formas semicirculares idênticas com cerca de 1,5 "de altura e 3" de largura. (Eu usei os meus com a mão livre, então eles se parecem um pouco com a frente de uma juke box).

Em uma das duas placas, faça os três furos para os botões e o potenciômetro. Os meus tinham cada um 1/4 de polegada de diâmetro. Eles podem ter qualquer layout, mas eu prefiro que meu potenciômetro seja ligeiramente levantado no centro, com os botões de cada lado formando um triângulo isósceles. Ao perfurar, sempre faço um pequeno orifício piloto antes de ir para a broca de tamanho necessário, isso ajuda a centralizar os orifícios e os torna um pouco mais limpos.

Etapa 2: tampa arqueada

Curve-se sobre um pedaço de alumínio para se ajustar à curva de uma das placas frontais e marque o comprimento adequado da borda.

Corte uma tira com este comprimento e cerca de 5 cm de largura e forme um arco que corresponda à forma da curva das placas faciais de cada lado.

Encontre o ponto central no topo da curva e faça um orifício para ajustar o pescoço flexível do isqueiro. Eu desloco o buraco para a parte traseira na minha porque minha lâmpada terá o pescoço inclinado para frente durante o uso, então eu queria adicionar um pouco de contrapeso a isso. Meu pescoço flexível tinha pouco mais de 1/4 de polegada de diâmetro, então usei uma broca de 1/4 de polegada (a maior ponta de torção que tenho, que tem menos de 3/4 de polegada) e apenas inclinei e torci cuidadosamente o broca para 'perfurar' o orifício até o encaixe do pescoço.

Agora que temos as peças para o shell, a próxima etapa é adicionar eletrônicos e montá-los!

Etapa 4: Construindo a Caixa de Eletrônicos, Etapa 2

Construindo a caixa de eletrônicos, etapa 2
Construindo a caixa de eletrônicos, etapa 2
Construindo a caixa de eletrônicos, etapa 2
Construindo a caixa de eletrônicos, etapa 2
Construindo a caixa de eletrônicos, etapa 2
Construindo a caixa de eletrônicos, etapa 2
Construindo a caixa de eletrônicos, etapa 2
Construindo a caixa de eletrônicos, etapa 2

Agora adicionamos os botões e o potenciômetro e colocamos tudo junto.

Etapa 1: botões e parafusos

Desaparafuse as porcas sextavadas de seus botões e potenciômetro. Deve haver um dispositivo de anel de aperto sob a porca, deixe-o no lugar.

Encaixe cada um dos componentes em seu respectivo orifício e, em seguida, aparafuse as porcas de volta para prendê-los no lugar. Aperte as porcas até o ponto em que você tenha certeza de que cada componente está completamente seguro.

Etapa 2. Flexionar o pescoço

Encaixe o pescoço flexível através do orifício na parte superior da peça curva. Cole com cola quente ou solde (se você tiver o equipamento) o pescoço firmemente no lugar.

Se estiver usando cola quente como eu, é uma boa ideia colar com muita cola em ambos os lados espalhados por uma grande área para evitar que a cola se descole mais tarde.

Etapa 3: montagem da casca (não se aplica à casca impressa em 3D)

Usando uma haste de solda ou cola quente, prenda as placas frontais frontal e traseira em seus respectivos lugares na tampa arqueada. Demorei algumas tentativas para a cola grudar e, como antes, o truque é usar bastante cola nos dois lados da junta, assim como no pescoço. Quanto maior for a área coberta pela cola, melhor ela irá aderir.

Agora que temos o shell, podemos prosseguir para adicionar todos os bits de circuito.

Etapa 5: Adicionando eletrônicos

Adicionando Eletrônicos
Adicionando Eletrônicos
Adicionando Eletrônicos
Adicionando Eletrônicos
Adicionando Eletrônicos
Adicionando Eletrônicos

E aqui está a parte divertida: Soldar! Nas últimas semanas, honestamente, fiquei um pouco cansado de soldar, porque tenho feito isso muito ultimamente para tentar terminar outro projeto que devo colocar em breve (fique de olho em uma nova versão radicalizada do meu display robótico plataformas), resultando na ruína de um ferro e na obtenção de outro … De qualquer forma, não há muito o que soldar aqui, então isso deve ser bastante simples.

Nota: Se o seu Nano já tiver cabeçalhos de pinos, eu recomendaria desoldá-los para este projeto, eles só vão atrapalhar.

Há um diagrama nas fotos acima, você pode acompanhá-lo se quiser.

Etapa 1: Interface

De cada uma das chaves, solde um fio de um único pino a um pino lateral do potenciômetro. Solde um fio deste mesmo pino lateral a um pino de aterramento no Nano.

Solde um fio do pino central do potenciômetro para A0 no Nano.

Solde um fio do pino desconectado de qualquer switch para A1 no Nano.

Solde um fio do pino desconectado no outro switch para A2 no Nano.

Nota: Não importa qual switch é qual, você pode alterá-los muito facilmente no código, além do fato de que um switch simplesmente faz o oposto do outro.

Corte um pedaço de arame 4 polegadas mais longo do que o pescoço flexível e descasque os dois lados. Usando um Sharpie, marque um lado com uma única linha.

Solde um fio no último pino lateral não conectado do potenciômetro, torça a extremidade não conectada deste fio junto com a extremidade não marcada do fio da última subetapa.

Solde esta extremidade unida a 5V no Nano.

Etapa 2: monitor e fios de alimentação

Corte 2 pedaços de fio 10 cm mais longos do que o pescoço flexível e descasque as duas pontas.

Usando um Sharpie, marque as extremidades de cada fio, um fio com 2 linhas e outro com 3.

Solde o fio com 2 linhas no pino digital 9 do Nano.

Em sua tomada cilíndrica de 5 mm, solde um fio do pino central (positivo) para Vin no Nano.

Solde outro fio em um pino lateral (terra / negativo) do conector cilíndrico.

Torça o fio comprido com 3 linhas em conjunto com o fio do pino lateral do conector do barril.

Solde esses fios ao pino GND aberto no Nano.

Isole as conexões com fita isolante ou cola quente quando necessário.

Passo 3: Corte de orifícios (apenas na versão de metal, se você imprimiu em 3D a capa, você ficará bem)

Usando uma broca e um X-acto ou Faca Utilitária, faça um furo cuidadosamente na lateral da tampa para a porta USB do Nano.

Faça outro orifício do tamanho da face do conector cilíndrico na parte de trás da tampa, de preferência mais próximo do lado oposto ao orifício para a porta USB.

Etapa 4: componentes de montagem

Passe os três fios longos pelo pescoço flexível e saia pelo outro lado.

Usando bastante cola quente, monte o macaco no lugar com os pinos voltados para a parte superior da tampa.

Novamente usando bastante cola quente, monte o Nano no lugar, com o botão reset voltado para baixo e a porta USB em seu slot. Fiz uma "ponte de cola quente" entre o macaco e o Nano, que faz com que cada um mantenha o outro firmemente no lugar.

Agora podemos prosseguir para fazer a base ponderada!

Etapa 6: Base Ponderada

Base Ponderada
Base Ponderada
Base Ponderada
Base Ponderada
Base Ponderada
Base Ponderada

Estou confiante em minhas habilidades de soldagem e tinha isso bem planejado, então fui em frente e adicionei a base antes de testar o código. Se você estiver menos confiante em suas habilidades, sugiro pular esta etapa e retornar a ela no final, quando souber que tudo está funcionando.

Se você fez a versão impressa em 3D, pode pular a primeira etapa e passar para a segunda.

Etapa 1: Madeira

Em uma folha de madeira compensada de 1/4 de polegada, corte uma base de cerca de 3 polegadas por 2 polegadas.

Lixe as bordas para alisá-las e remover as brocas.

Etapa 2: Peso

Em primeiro lugar, certifique-se de que o peso de sua escolha, seja um ímã, metal ou uma solda personalizada, se encaixa nas bordas da tampa de metal que fizemos. O meu era um pouco grande em uma direção, então cortei um pouco da lateral com um estilete. Se o seu não for o tipo em que você pode fazer isso, você pode ter que mexer em um design de base diferente.

Cole com cola quente o seu peso no centro da peça de madeira compensada, ou no caso do desenho impresso em 3D, na área central da "bandeja" que projetei para esse fim.

Etapa 3: Base

Encaixe a tampa de metal sobre o peso e centre-a na base de madeira. (No caso do design impresso em 3D, encaixe-o nas ranhuras pré-fabricadas.)

Certifique-se de que o peso não interfira com nenhum dos componentes eletrônicos

Use cola quente para fixar a base no lugar. Use o suficiente para garantir uma conexão firme.

Agora que nossa caixa de controle está totalmente pronta, vamos passar para as luzes.

Etapa 7: NeoPixel Halo Ring

NeoPixel Halo Ring
NeoPixel Halo Ring
NeoPixel Halo Ring
NeoPixel Halo Ring
NeoPixel Halo Ring
NeoPixel Halo Ring
NeoPixel Halo Ring
NeoPixel Halo Ring

A inspiração para o nome desta lâmpada, esta peça é o halo NeoPixel que usaremos como fonte de iluminação. Esta peça em particular pode ser modificada ou substituída por qualquer NeoPixel ou anel de LED individualmente endereçável, se desejado.

Etapa 1: Solda

Corte uma tira de NeoPixels com 12 LEDs de comprimento.

Solde o pino GND ao fio do pescoço flexível que tem 3 linhas.

Solde o pino Din ao fio de 2 linhas.

Solde o pino de 5 V ao fio que tem 1 linha.

Etapa 2: teste as luzes

Baixe e instale a biblioteca Adafruit_NeoPixel e abra o código "strandtest".

Altere o PIN constante para 9.

Altere a linha onde a faixa é definida para que seja configurada para 12 LEDs.

Faça upload do código para o Nano e certifique-se de que todos os LEDs funcionem corretamente.

Substitua todos os LEDs com defeito por outros que estejam funcionando, até que toda a faixa funcione.

Etapa 3: toque

Pegue o anel superior de uma luz "Stick and Click" e corte todos os parafusos na borda interna.

Corte um pequeno entalhe na borda para os fios da tira.

Retire a tampa da fita adesiva na parte de trás dos NeoPixels (se houver) e cole-os dentro do anel, com uma das extremidades da tira exatamente no entalhe que fizemos.

Use cola quente para prender firmemente as bordas da tira

Depois que a cola esfriar completamente, teste os pixels novamente. Isso é para garantir que ninguém se preocupe com o calor e a ondulação (alguns dos meus estavam).

Etapa 4: montagem

Corte dois retângulos pequenos de 1/4 de polegada de madeira, aproximadamente da altura do anel e 1 2/3 vezes mais largo.

Cole-os paralelamente uns aos outros em cada lado dos fios do anel, preenchendo a lacuna e cobrindo os fios totalmente com cola.

Com cuidado, empurre o excesso de fio de volta para o pescoço flexível e, em seguida, cole os pedaços de madeira na extremidade do pescoço, usando bastante cola e preenchendo cuidadosamente todas as lacunas (sem preencher o pescoço com cola).

Etapa 6: Acabamento

Você pode pintar o anel e montar qualquer cor se quiser, eu preferi o acabamento prateado, então usei apenas um Sharpie para cobrir o logotipo que estava (irritantemente) impresso no anel. O mesmo vale para o resto da lâmpada.

Agora podemos prosseguir para terminar com o código final!

Etapa 8: Códigos e testes

Códigos e testes
Códigos e testes
Códigos e testes
Códigos e testes

Agora tudo o que precisamos fazer é programar a lâmpada e testá-la. Em anexo está a versão atual do código (rev1.0), testei esse código extensivamente e ele funciona muito bem. Estou trabalhando em um rev2.0 onde os botões são configurados como interrupções externas para que os modos possam ser alternados mais facilmente, mas esta versão tem bugs e ainda não está pronta para ser lançada. Com a versão atual, você tem que segurar o botão até que ele execute o loop Debounce e reconheça a mudança de estado, o que pode ser irritante em loops "Dinâmicos" mais longos. Abaixo está o código com algumas explicações escritas em (há as mesmas explicações na versão para download).

#include #ifdef _AVR_ #include #endif

# define PIN 9

#define POT A0 #define BUTTON1 A1 #define BUTTON2 A2

// Parâmetro 1 = número de pixels na faixa

// Parâmetro 2 = número do pino Arduino (a maioria são válidos) // Parâmetro 3 = sinalizadores de tipo de pixel, some conforme necessário: // NEO_KHZ800 800 KHz bitstream (a maioria dos produtos NeoPixel com LEDs WS2812) // NEO_KHZ400 400 KHz (clássico ' v1 '(não v2) FLORA pixels, drivers WS2811) // NEO_GRB Pixels são conectados para GRB bitstream (a maioria dos produtos NeoPixel) // NEO_RGB Pixels são conectados para RGB bitstream (v1 FLORA pixels, não v2) // NEO_RGBW Pixels são conectados para RGBW bitstream (produtos NeoPixel RGBW) Adafruit_NeoPixel halo = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800);

// E agora, uma mensagem de segurança de nossos amigos da Adafruit:

// IMPORTANTE: Para reduzir o risco de queima do NeoPixel, adicione um capacitor de 1000 uF entre

// condutores de alimentação de pixel, adicionar resistor de 300 - 500 Ohm na entrada de dados do primeiro pixel // e minimizar a distância entre o Arduino e o primeiro pixel. Evite conectar // em um circuito ativo … se necessário, conecte o GND primeiro.

// Variables

int buttonState1; int buttonState2; // a leitura atual do pino de entrada int lastButtonState1 = LOW; // a leitura anterior do pino de entrada int lastButtonState2 = LOW; modo int; // o modo de nossas luzes pode ser uma das 16 configurações (0 a 15) int brightVal = 0; // o brilho / velocidade, conforme definido pelo potenciômetro

// as seguintes variáveis são longas porque o tempo, medido em milissegundos, // rapidamente se tornará um número maior do que pode ser armazenado em um int. long lastDebounceTime = 0; // a última vez que o pino de saída foi alternado long debounceDelay = 50; // o tempo de debounce; aumentar se a saída piscar

void debounce () {

// lê o estado do switch em uma variável local: int reading1 = digitalRead (BUTTON1); leitura interna2 = leitura digital (BUTTON2); // Se um dos botões mudou, devido a ruído ou ao pressionar: if (reading1! = LastButtonState1 || reading2! = LastButtonState2) {// redefinir o temporizador de debouncing lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// se o estado do botão mudou definitivamente devido ao pressionamento / liberação: if (reading1! = buttonState1) {buttonState1 = reading1; // define como a leitura se for alterado if (buttonState1 == LOW) {// estes são definidos como modo de interruptores baixos ativos ++; if (modo == 16) {modo = 0; }}} if (reading2! = buttonState2) {buttonState2 = reading2; if (buttonState2 == LOW) {mode = mode - 1; if (modo == -1) {modo = 15; }}}} // salve a leitura para a próxima vez por meio do loop lastButtonState1 = reading1; lastButtonState2 = leitura2; }

void getBright () {// nosso código para ler o potenciômetro, dá um valor entre 0 e 255. Usado para definir o brilho em alguns modos e a velocidade em outros.

int potVal = analogRead (POT); BrightVal = mapa (potVal, 0, 1023, 0, 255); }

// Aqui estão nossos modos de cores. Alguns deles são derivados do exemplo do teste de teste, outros são originais.

// Preencha os pontos um após o outro com uma cor (colorwipe, derivado de strandtest)

void colorWipe (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i

// funções de arco-íris (também derivadas de strandtest)

void rainbow (uint8_t wait) {

uint16_t i, j;

para (j = 0; j <256; j ++) {para (i = 0; i

// Ligeiramente diferente, isso torna o arco-íris igualmente distribuído por toda a

void rainbowCycle (uint8_t wait) {uint16_t i, j;

for (j = 0; j <256 * 5; j ++) {// 5 ciclos de todas as cores na roda para (i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, Wheel (((i * 256 / halo.numPixels ()) + j) & 255)); } halo.show (); atrasar (esperar); }}

// Insira um valor de 0 a 255 para obter um valor de cor.

// As cores são uma transição r - g - b - de volta para r. uint32_t Wheel (byte WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return halo. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos - = 85; retornar halo. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos - = 170; retornar halo. Color (WheelPos * 3, 255 - WheelPos * 3, 0); }

void setup () {

// Isso é para Trinket 5V 16MHz, você pode remover essas três linhas se não estiver usando um Trinket #if definido (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Fim do código especial do trinket pinMode (POT, INPUT); pinMode (BUTTON1, INPUT_PULLUP); pinMode (BUTTON2, INPUT_PULLUP); pinMode (PIN, OUTPUT); Serial.begin (9600); // depurando coisas halo.begin (); halo.show (); // Inicializa todos os pixels para 'desligado'}

void loop () {

debounce ();

//Serial.println(mode); // mais depuração //Serial.println(lastButtonState1); //Serial.println(lastButtonState2);

if (modo == 0) {

getBright (); para (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, brightVal)); // define todos os pixels para branco} halo.show (); }; if (modo == 1) {getBright (); para (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, 0)); // define todos os pixels para vermelho} halo.show (); }; if (modo == 2) {getBright (); para (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, 0)); // define todos os pixels como verdes} halo.show (); }; if (modo == 3) {getBright (); para (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, 0, brightVal)); // define todos os pixels para azul} halo.show (); }; if (modo == 4) {getBright (); para (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, brightVal)); // define todos os pixels para ciano} halo.show (); }; if (modo == 5) {getBright (); para (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, brightVal)); // define todos os pixels para roxo / magenta} halo.show (); }; if (modo == 6) {getBright (); para (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, 0)); // define todos os pixels para laranja / amarelo} halo.show (); }; if (mode == 7) {// agora os modos dinâmicos getBright (); colorWipe (halo. Color (brightVal, 0, 0), 50); // Vermelho }; if (modo == 8) {getBright (); colorWipe (halo. Color (0, brightVal, 0), 50); // Verde }; if (modo == 9) {getBright (); colorWipe (halo. Color (0, 0, brightVal), 50); // Azul }; if (modo == 10) {getBright (); colorWipe (halo. Color (brightVal, brightVal, brightVal), 50); // Branco }; if (modo == 11) {getBright (); colorWipe (halo. Color (brightVal, brightVal, 0), 50); // laranja amarelo }; if (modo == 12) {getBright (); colorWipe (halo. Color (0, brightVal, brightVal), 50); // ciano}; if (modo == 13) {getBright (); colorWipe (halo. Color (brightVal, 0, brightVal), 50); // roxo / magenta}; if (mode == 14) {// os dois últimos são controle de velocidade, porque o brilho é dinâmico getBright (); arco-íris (brilhanteVal); }; if (modo == 15) {getBright (); rainbowCycle (brightVal); }; atraso (10); // permita que o processador descanse um pouco}

Etapa 9: O Grande Final

O Grande Final
O Grande Final

E agora temos uma pequena lâmpada fantástica e superclara!

Você pode modificá-lo ainda mais a partir daqui ou deixá-lo como está. Você pode alterar o código ou até mesmo escrever um novo inteiramente. Você pode ampliar a base e adicionar baterias. Você pode adicionar um ventilador. Você pode adicionar mais NeoPixels. A lista de tudo que você pode fazer com isso é quase infinita. Digo "quase" porque tenho quase certeza de que ainda não temos a tecnologia para converter isso em um mini gerador de portal (infelizmente), mas, além de coisas assim, o único limite é a sua imaginação (e até certo ponto, como descobri recentemente, as ferramentas em sua oficina). Mas se você não tem as ferramentas, não deixe que isso o impeça, se você realmente quer fazer algo, sempre há uma maneira.

Isso é parte do objetivo deste projeto, provar a mim mesmo (e em menor medida, ao mundo) que posso fazer coisas úteis que outras pessoas também gostariam, mesmo que tudo o que eu tenha seja uma verdadeira pilha de lixo velho e descartado componentes e uma caixa de suprimentos Arduino.

Vou parar por aqui, porque acho que este acabou muito bem. Se você tiver alguma sugestão de melhoria ou alguma dúvida sobre meus métodos, por favor, deixe um comentário abaixo. Se você fez isso, tire uma foto, todos nós queremos ver!

Por favor, não se esqueça de votar se você gosta disso!

Como sempre, esses são os projetos de Dangerously Explosive, sua missão para toda a vida, "Construir com ousadia o que você quer construir e muito mais!"

Você pode encontrar o resto dos meus projetos aqui.

Obrigado pela leitura e feliz trabalho!

Recomendado: