Olá pessoal! Para quem já está em clima de carnaval, que tal customizar uma máscara para que você chame bastante a atenção no Baile de Máscaras ou no Bloco? Hoje vamos ensinar a montar a sua Colorful Mask, uma máscara com leds endereçáveis que brilha conforme a luminosidade ambiente!
A Colorful Mask, conforme outros projeto que você já deve ter visto por aqui, contém leds endereçáveis do modelo WS2812b. A diferença deste projeto será o sensor LDR, que dará cor aos leds conforme a luz que incide nele. Vamos aos materiais:
Lista de Material
- Placa Pro Mini
- 4 leds endereçáveis WS2812
- 1 sensor de luminosidade LDR 5mm
- 1 resistor 10kΩ
- 1 máscara de carnaval
- 1 conversor USB Serial
- 1 switch liga/desliga wearable
- fios coloridos (da mesma cor que a máscara)
- suporte de madeira ou alumínio (caso a máscara venha sem suporte)
- ferro de solda e estanho
- fita dupla face
- pistola de cola quente
- Carregador portátil ou bateria 3.7V
Circuito Máscara com Leds Endereçáveis
Temos a seguir o esquemático deste projeto:
PS: Lembrando que no lugar da bateria de Litium utilizaremos um Carregador portátil.
Programação
A seguir temos o código utilizado para o projeto:
#include "Adafruit_NeoPixel.h" #ifdef __AVR__ #include "avr/power.h" #endif #define PIN 2 // pino IN digital dos leds int qte = 4; // quantidade de leds = 4 // Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) // NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products) Adafruit_NeoPixel strip = Adafruit_NeoPixel(qte, PIN, NEO_GRB + NEO_KHZ800); //parametros // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input // and minimize distance between Arduino and first pixel. Avoid connecting // on a live circuit...if you must, connect GND first. int sensor; // declaraçao sensor luminosidade void setup() { // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket #if defined (__AVR_ATtiny85__) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // End of trinket special code strip.begin(); strip.show(); // Inicializando os leds } void loop() { // leitura do sensor e armazenamento na variavel sensor; sensor = analogRead(A0); if (sensor > 0 && sensor < 200) { theaterChase(strip.Color(255, 0, 0), 100); // vermelho por 100ms } else if (sensor >= 200 && sensor < 400) { theaterChase(strip.Color(255, 140, 0), 100); //laranja por 100 ms } else if (sensor >= 400 && sensor < 600) { theaterChase(strip.Color(0, 255, 0), 100); //verde por 100 ms } else if (sensor >= 600 && sensor < 800) { theaterChase(strip.Color(138, 43, 226), 100); //violeta por 100 ms } else if (sensor >= 800 & sensor < 900) { theaterChase(strip.Color(0, 0, 255), 100); // azul por 100ms } else if (sensor >= 900) { theaterChase(strip.Color(255, 0, 0), 100); //vermelho por 100ms delay(100); } } // efeito piscante void theaterChase(uint32_t c, uint8_t wait) { for (int j = 0; j < 10; j++) { //10 ciclos for (int q = 0; q < 3; q++) { for (uint16_t i = 0; i < strip.numPixels(); i = i + 3) { strip.setPixelColor(i + q, c); //turn every third pixel on } strip.show(); delay(wait); for (uint16_t i = 0; i < strip.numPixels(); i = i + 3) { strip.setPixelColor(i + q, 0); //turn every third pixel off } } } } // Input a value 0 to 255 to get a color value. // The colours are a transition r - g - b - back to r. uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if (WheelPos < 85) { return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos < 170) { WheelPos -= 85; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); }
Este código realiza a verificação da porta analógica A0 e conforme o nível de luminosidade, os leds piscam com cores diferentes. Para obter os níveis de cores, utilizei esta página para os níveis de cores RGB.
Grave o sketch utilizando o Conversor USB Serial. Caso tenha dúvidas como gravar, verifique o tutorial aqui.
Montagem da máscara
Para começar a montagem da máscara com leds endereçáveis, posicione os leds sobre a máscara e meça o tamanho dos fios entre um módulo e outro. Corte os fios e solde-os sobre a parte traseira de cada led, lembrando que serão três fios para cada parte. Também meça e corte os fios que sairão da placa Pro Mini.
Fixe a placa Pro Mini já soldada com fita dupla face sobre o cabo de apoio da máscara. Caso a máscara tenha vindo sem este cabo, utilize um pedaço de madeira fino ou um retalho de barra quadrada de alumínio.
Para o sensor de luminosidade foram utilizados um LDR, um resistor de 10k e três fios. Entorte os terminais do LDR e corte parte de um terminal, deixe o suficiente para soldar. Corte também parte do terminal do resistor. Emende uma extremidade do sensor a uma extremidade do resistor e entre eles solde um fio fino.
Corte as outras extremidades do LDR e resistor e solde fios finos de cada lado, o suficiente para alcançar a placa Pro mini. Coloque este conjunto sobre a parte da máscara que você desejar. Eu coloquei sobre o nariz, para quando tampasse visse as cores dos leds mudando. Com um pouco de cola quente, fixe o LDR e o resistor na máscara.
Para a alimentação do circuito, foi utilizado um Carregador portátil Power Bank com adaptações. Abra-o e desmonte-o, conforme imagem abaixo:
Nesta placa há um circuito que eleva a tensão de 3.7V da bateria azul para 5V e transfere para a saída USB (USB normal). Verifique com um multímetro nas extremidades do USB onde ficam os pinos VCC e GND na placa e solde dois fios de cores diferentes. Na outra extremidade dos fios, utilize parte de uma barra de pinos fêmea com dois pinos.
Remonte a placa com cuidado e faça um pequeno buraco para passagem dos dois fios soldados. Entre o VCC da placa e o carregador, solde o liga/desliga. Ou plugue diretamente o conector que montou após a saída do PowerBank nos pinos VCC e GND da placa.
ATENÇÃO: Não inverta esses fios na placa Pro Mini ou poderá queimar a placa, circuito ou carregador!
Teste o circuito e se os leds acendem e mudam de cor conforme a incidência de luz sobre o LDR.
Neste link há um vídeo que fiz durante os primeiros testes com a máscara.
Fique à vontade para fazer alterações no programa, personalizando a forma de acendimento dos leds. Lembrando que os leds endereçáveis podem funcionar individualmente, ou seja, você pode acender quantos e quais leds quiser.
Gostou do post da máscara com leds endereçáveis ? Deixe seu comentário logo abaixo.
Viva MakerHero tenho visto os seus blogs são bem interessantes e está postagem é exemplo disso. por tanto gostava de ter o seu e-mail ou número do telefone para alguns esclarecimentos eu escrevo de Moçambique e sou estudante de Eng.Electrónica..
Obrigada amigo de Moçambique!
Pode deixar suas dúvidas e comentários aqui mesmo, que na medida do possível iremos responder!
Grande abraço!