#include <LiquidCrystal.h>
int leds[] = {14,15,16,17,18,19,20};
bool sleds[] = {LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW};
int sonarTrig = 10;
int sonarEcho = 9;
int buzina = 13;
int som[] = {0, 232};
bool momentoSom = LOW;
int currentTime, previousTime = 0;
int currentTimeS, previousTimeS = 0;
LiquidCrystal lcd(8,7,6,5,4,3);
void setup() {
for(int i = 0; i < 8; i++) {pinMode(leds[i], OUTPUT);} // Iniciando os LEDS
pinMode(sonarTrig, OUTPUT);
pinMode(sonarEcho, INPUT);
pinMode(buzina, OUTPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("Distancia : ");
}
int distance(){
int distancia, tempo;
digitalWrite(sonarTrig, 0);
digitalWrite(sonarTrig, 1);
digitalWrite(sonarTrig, 0);
tempo = pulseIn(sonarEcho, 1); // velocidade metros/microssegundos
distancia = tempo/58.2;
Serial.println(distancia);
return distancia;
}
void piscarLeds(int ini, int f, int interval) {
apagarLeds(ini, f);
currentTime = millis();
if((currentTime - previousTime) >= interval) {
previousTime = currentTime;
for(int i = ini; i < f; i ++) {
sleds[i] = !sleds[i];
digitalWrite(leds[i], sleds[i]);
}
}
}
void apagarLeds(int ini, int f) {
for(int i = 0; i < 9; i++) {
if(i < ini || i >= f) {
sleds[i] = LOW;
digitalWrite(leds[i], sleds[i]);
}
}
}
void mostrarLcd(int distancia) {
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(distancia);
}
void loop() {
// put your main code here, to run repeatedly:
int distancia = distance();
mostrarLcd(distancia);
//Serial.println(distancia);
if(distancia < 30) {
piscarLeds(0, 2, 500);
tone(buzina, 232);
//tocar(0);
}else if(distancia < 100) {
piscarLeds(2,5, 1000);
currentTimeS = millis();
if((currentTimeS - previousTimeS) >= 500) {
previousTimeS = currentTimeS;
if(momentoSom == 1) tone(buzina, 232);
else noTone(buzina);
momentoSom = !momentoSom;
}
}else {
piscarLeds(5, 8, 0);
noTone(buzina);
}
//delay(1000);
}