#include <Adafruit_NeoPixel.h> // Inclui a biblioteca Adafruit NeoPixel
// Define os pinos do sensor ultrassônico
#define TRIGPIN 6
#define ECHOPIN 7
#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(TRIGPIN, OUTPUT); // Configura o pino do trigger como saída
pinMode(ECHOPIN, 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() {
// Limpa o pino de trigger
digitalWrite(TRIGPIN, LOW);
delayMicroseconds(2);
// Emite um pulso de 10 microssegundos no pino de trigger
digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGPIN, LOW);
// Lê a duração do pulso recebido no pino de echo
unsigned long duration = pulseIn(ECHOPIN, HIGH);
// Calcula a distância em centímetros
// O valor 0.034 é uma constante para converter o tempo em microssegundos para centímetros
float distance_cm = duration * 0.034 / 2;
// Exibe a distância no monitor serial
Serial.print("Distância: ");
Serial.print(distance_cm);
Serial.println(" cm");
// Atualiza a animação de luzes da fita de LEDs com base na distância medida
updateLEDs(distance_cm);
delay(1000); // 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, 400, 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(0, 0, 0); // LED aceso é vermelho
} else {
color = np1p.Color(255, 0, 0); // LED apagado é preto
}
np1p.setPixelColor(i, color);
}
// Atualiza a fita de LEDs
np1p.show();
}