#include <Ultrasonic.h>
#define PIN_TRIG_EXT 5
#define PIN_ECHO_EXT 4
#define PIN_TRIG_INT 2
#define PIN_ECHO_INT 3
#define PIN_MOTOR_N1 10
#define PIN_MOTOR_N2 9
#define PIN_LED_VERDE 6
#define PIN_LED_VERMELHO 8
#define PIN_BOTAO 7
Ultrasonic SENSOR_EXT(PIN_TRIG_EXT, PIN_ECHO_EXT);
Ultrasonic SENSOR_INT(PIN_TRIG_INT, PIN_ECHO_INT);
bool APERTADO, ACESSO = true;
float DISTANCIA_EXT, DISTANCIA_INT;
void setup() {
pinMode(PIN_BOTAO, INPUT_PULLUP);
pinMode(PIN_LED_VERDE, OUTPUT);
pinMode(PIN_LED_VERMELHO, OUTPUT);
pinMode(PIN_MOTOR_N1, OUTPUT);
pinMode(PIN_MOTOR_N2, OUTPUT);
}
void loop() {
APERTADO = !digitalRead(PIN_BOTAO);
DISTANCIA_EXT = SENSOR_EXT.read();
DISTANCIA_INT = SENSOR_INT.read();
if (APERTADO == true){
digitalWrite(PIN_LED_VERMELHO, HIGH);
digitalWrite(PIN_LED_VERDE, LOW);
ACESSO = false;
}else{
digitalWrite(PIN_LED_VERMELHO, LOW);
digitalWrite(PIN_LED_VERDE, HIGH);
ACESSO = true;
}
if (DISTANCIA_EXT < 10 and ACESSO == true){
delay(1000);
MOTOR_ANTI();
delay(700);
MOTOR_HORARIO();
}else{
MOTOR_PARADO();
}
if (DISTANCIA_INT < 10 and ACESSO == true){
delay(1000);
MOTOR_ANTI();
delay(700);
MOTOR_HORARIO();
}else{
MOTOR_PARADO();
}
}
void MOTOR_HORARIO(){
digitalWrite(PIN_MOTOR_N1, HIGH);
digitalWrite(PIN_MOTOR_N2, LOW);
delay(32);
MOTOR_PARADO();
}
void MOTOR_ANTI(){
digitalWrite(PIN_MOTOR_N1, LOW);
digitalWrite(PIN_MOTOR_N2, HIGH);
delay(32);
MOTOR_PARADO();
}
void MOTOR_PARADO(){
digitalWrite(PIN_MOTOR_N1, LOW);
digitalWrite(PIN_MOTOR_N2, LOW);
}
SENSOR INTERNO
SENSOR EXTERNO
MOTORES
Sentido anti-horário
Sentido horário