#include <Adafruit_NeoPixel.h> // Inclui a biblioteca Adafruit NeoPixel
#define POT A0
#define PIN 2 // Pino de entrada na fita de LEDs
#define NUMPIXELS 8 // Quantidade de pixels na fita de LEDs
// Cria um objeto NeoPixel
Adafruit_NeoPixel np1p = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(9600); // Inicializa a comunicação serial
pinMode(POT, INPUT); // Configura o pino do echo como entrada
// Inicializa a biblioteca NeoPixel
np1p.begin();
// Limpa a cor da fita de LEDs
np1p.fill(0x000000, 0, NUMPIXELS); // Cor (preto), Primeiro LED, Quantidade de LEDs
// Atualiza a fita de LEDs
np1p.show();
}
void loop() {
int leitura = analogRead(A0);
// Exibe a distância no monitor serial
Serial.print("bateria: ");
Serial.println(leitura);
// Atualiza a animação de luzes da fita de LEDs com base na distância medida
updateLEDs(leitura);
delay(50); // Aguarda 1 segundo antes da próxima leitura
}
// Função para atualizar a animação de luzes da fita de LEDs
void updateLEDs(float distance) {
// Define as cores baseadas na distância medida
uint32_t color;
// Calcula a quantidade de LEDs acesos com base na distância
int num_leds_on = map(distance, 0, 1023, 0, NUMPIXELS);
// Liga os LEDs gradualmente à medida que a distância diminui
for (int i = 0; i < NUMPIXELS; i++) {
if (i < num_leds_on) {
color = np1p.Color(255, 0, 0); // seta todos os LEDs aceso é vermelho
} else {
color = np1p.Color(0, 0, 0); // desliga todos os LEDs
}
np1p.setPixelColor(i, color);
}
// Atualiza a fita de LEDs
np1p.show();
}