#include <Adafruit_NeoPixel.h>
#include <Ultrasonic.h>
#define LED_PIN 4
#define ECHO_PIN 2
#define TRIG_PIN 3
#define NUMPIXELS 16
// Cria um pixel
Adafruit_NeoPixel np1p = Adafruit_NeoPixel(NUMPIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);
// Inicializa o sensor ultrassonico
Ultrasonic ultrasonic(TRIG_PIN, ECHO_PIN);
void setup()
{
//Inicializa a serial
Serial.begin(9600);
//Initicializa a bilbioteca NeoPixel
np1p.begin();
//Limpa os LEDs
np1p.fill(0x000000, 0, 16); //Cor, Primeiro, Quantidade
//Atualiza os pixels
np1p.show();
}
void loop()
{
int led_level, distance;
// Lê a distância para o objeto
distance = ultrasonic.read();
// O programa começa a sinalizar a proximidade do objeto a partir de 100cm
while(distance <= 100)
{
// A constante 6.25 é o coefiente de ajuste de escala de 0-100 para 0-16
led_level = distance / 6.25;
// A divisão retorna zero se distance < 7. Para contornar isso completamos os LEDs caso dis. < 7
if(distance < 7)
{
np1p.fill(0x00FF00, 0, 16);
np1p.show();
}
// Caso contrário, o preenchimento dos LEDs acompanham a escala 0-16 conforme variação de dis.
else
{
np1p.fill(0x00FF000, 0, 16);
np1p.fill(0x000000, 0, led_level);
np1p.show();
}
// Atualiza a leitura de distância
distance = ultrasonic.read();
delay(100);
}
// Caso distance > 100, apaga todos os LEDs
np1p.fill(0x000000, 0, 16);
np1p.show();
}