Tutorial Wearable: Máscara com leds endereçáveis 2

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!

Máscara com leds endereçáveis

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

Circuito Máscara com Leds Endereçáveis

Temos a seguir o esquemático deste projeto:

Circuito Neopixel Mask

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:

Powerbank

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!

Detalhe Arduino

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.

Detalhe led endereçável

Gostou do post da máscara com leds endereçáveis ? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

2 Comentários

  1. 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..

    1. 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!