#include <Adafruit_NeoPixel.h>
#define PIN 2 //Pino de entrada no fita de leds
#define NUMPIXELS 16 //Quantidde de pixels
#define BUTTON_PIN 4
#define BAT_LEVEL A0
//Cria um pixel
Adafruit_NeoPixel np1p = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
// 1023 (resolução do adc) / 16 (resolução dos LEDs)
float levels[16] = {63, 126, 189, 252, 315, 378, 441, 504, 567, 630, 693, 756, 819, 882, 945, 1008};
void setup()
{
//Inicializa a serial
Serial.begin(9600);
//Initicializa a bilbioteca NeoPixel
np1p.begin();
//Limpa a cor
np1p.fill(0x000000, 0, 16);
//Atualiza o pixel
np1p.show();
// Configuração dos pinos
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(BAT_LEVEL, INPUT);
}
void loop()
{
// Declaração das variáveis auxiliares
int lastBit = 0;
float level = analogRead(A0);
int i;
// Laço para definir o último bit a ser aceso a partir do level (leitura de A0)
for(i = 0; i < 16; i++)
{
if(level <= levels[i] && level >= levels[i-1])
{
lastBit = i;
}
}
// Preenche todo o array de LEDs com preto
np1p.fill(0x000000, 0, 16);
// Preenche até o bit definido com a cor verde #00FF00
np1p.fill(0x00FF00, 0, lastBit);
np1p.show();
delay(100);
}