// Pines
int Trig = 10, Echo = 11;
// Variables
int distancia, dist1 = 30, dist2 = 80;
// Luces
struct Luz
{ int pin ; // Numero de pin
int estado ; // Estado On off
} ;
Luz luz1, luz2, luz3, luz4;
void inicio(){
luz1.pin = 5;
luz2.pin = 6;
luz3.pin = 7;
luz4.pin = 8;
luz1.estado =0;
luz2.estado =0;
luz3.estado =0;
luz4.estado =0;
digitalWrite(luz1.pin, luz1.estado);
digitalWrite(luz2.pin, luz2.estado);
digitalWrite(luz3.pin, luz3.estado);
digitalWrite(luz4.pin, luz4.estado);
}
void lecturaSensor(int *pTrig, int *pEcho, int *dist){
int dur;
digitalWrite(*pTrig, LOW);
delay(1);
digitalWrite(*pTrig, HIGH);
delay(0.01);
digitalWrite(*pTrig, LOW);
dur = pulseIn(*pEcho, HIGH);
*dist = (dur/2)*0.034;
delay(10);
}
void setup()
{
pinMode(luz1.pin, OUTPUT);
pinMode(luz2.pin, OUTPUT);
pinMode(luz3.pin, OUTPUT);
pinMode(luz4.pin, OUTPUT);
pinMode(Echo, INPUT);
pinMode(Trig, OUTPUT);
Serial.begin(9600);
inicio();
}
void loop()
{
// Sensor ultrasonico
lecturaSensor(&Trig, &Echo, &distancia);
if((distancia >= 330) || (distancia <= 0)){
Serial.println("----------------");
}
else{
Serial.print(distancia);
Serial.println(" cm ");
}
delay(100);
if(distancia <=dist2){
digitalWrite(luz1.pin, 1);
digitalWrite(luz2.pin, 1);
if (distancia <= dist1){
digitalWrite(luz3.pin, 1);
digitalWrite(luz4.pin, 1);
}
else{
digitalWrite(luz3.pin, 0);
digitalWrite(luz4.pin, 0);
}
}
else{
digitalWrite(luz1.pin, 0);
digitalWrite(luz2.pin, 0);
digitalWrite(luz3.pin, 0);
digitalWrite(luz4.pin, 0);
}
}
// Tips de ayuda
// https://www.prometec.net/punteros/
// https://www.prometec.net/struct/
// https://www.wexterhome.com/curso-arduino/crear-funciones-en-arduino/
// https://ismtabo.gitbooks.io/cpp_tutorial/content/referencias-y-punteros/punteros-como-argumentos.html