#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#define SERVO 9
#define Sensor A0
#define PIN_TRIG 3
#define PIN_ECHO 2
#define BUZZER_TEMP 1 //Buzzer para temperatua fora da faixa
#define BUZZER_STOP 4 //Buzzer para alerta de esteira parada
#define LED_TEMP 5 // LED para temperarura fora da faixa
#define LED_STOP 6 //LED para alerta de esteira parada
const float BETA = 3950;
LiquidCrystal_I2C lcd(0x27,16,2);
Servo s; //Variavel servo
float pos = 0.0;//onde posição do braço será armazenada (em graus)
float step = 1.0;//variavel usada para o passo de posição do braço
void setup() {
lcd.init();
lcd.backlight();
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
pinMode(BUZZER_TEMP, OUTPUT);
pinMode(BUZZER_STOP, OUTPUT);
pinMode(LED_TEMP, OUTPUT);
pinMode(LED_STOP, OUTPUT);
pinMode(1, INPUT_PULLUP); // Defina o pino 1 como um botão de pressão no modo pullup
pinMode(4, INPUT_PULLUP); // Defina o pino 4 como um botão de pressão no modo pullup
s.attach(9); // Fixe o braço no pino 9
s.write(pos); // Inicializar a posição do braço para 0 (mais à esquerda)
}
void loop(){
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
int duration = pulseIn(PIN_ECHO, HIGH);
int distance = duration / 58;
// sensor de temperatura
int analogValue = analogRead(Sensor);
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
pos = map(celsius, 0, 33, 0, 100);
s.write(pos);
if (distance < 10) { // VERIFICAR ESTEIRA PARADA
tone(4,262,250);
digitalWrite(LED_STOP, HIGH);
lcd.setCursor(0, 1);
lcd.print("Esteira PARADA!");
} else{
digitalWrite(LED_STOP, LOW);
lcd.setCursor(0, 1);
lcd.print("Esteira ATIVA!");
}
//verificar temperatura alta
if (celsius > 33) {
tone(1,262,250);
digitalWrite(LED_TEMP, HIGH);
} else {
digitalWrite(LED_TEMP, LOW);
}
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.setCursor(12,0);
lcd.print(celsius);
lcd.print("C");
delay(500);
}