#include <Arduino.h>
// Definições de Entradas
#define PINO_BOTAO_START 0 // Botão amarelo
#define PINO_SENSOR_PRESENCA 1 // Botão cinza
#define PINO_BOTAO_LIGA 2 // Botão verde
#define PINO_BOTAO_DESLIGA 3 // Botão vermelho
#define PINO_TERMO_PAR_FACA 26 // Azul escuro
#define PINO_TERMO_PAR_ESTUFA 27 // Azul claro
// Saídas
#define PINO_SAIDA_CIL_CORTE_SOLDA 9 // LED azul_FLUORESCENTE
#define PINO_SAIDA_MOTOR_esteira 10 // LED amarelo
#define PINO_SAIDA_CIL_EMPURRADOR 12 // LED azul
#define PINO_SAIDA_VENTILADOR 13 // LED laranja
#define PINO_SAIDA_AQUECER_FACA 14 // LED vermelho
#define PINO_SAIDA_AQUECER_ESTUFA 15 // LED verde
#define LED_TEMP_OK 11 // LED indicador de temperatura OK
//#define PINO_SAIDA_SINALIZACAO 12 // LED azul adicional
int liga = 0; // Variável auxiliar de controle
void setup() {
Serial.begin(115200);
Serial.println("Prova de Conceito: Leitura de termo par faca com o Raspberry Pi Pico W");
pinMode(PINO_SAIDA_CIL_CORTE_SOLDA, OUTPUT);
pinMode(PINO_SAIDA_MOTOR_esteira , OUTPUT);
pinMode(PINO_SAIDA_CIL_EMPURRADOR, OUTPUT);
pinMode(PINO_SAIDA_VENTILADOR, OUTPUT);
pinMode(PINO_SAIDA_AQUECER_FACA, OUTPUT);
pinMode(PINO_SAIDA_AQUECER_ESTUFA, OUTPUT);
pinMode(LED_TEMP_OK, OUTPUT);
//pinMode(PINO_SAIDA_SINALIZACAO, OUTPUT);
// Ligar as saídas quando o programa inicia
digitalWrite(PINO_SAIDA_CIL_CORTE_SOLDA, LOW);
digitalWrite(PINO_SAIDA_MOTOR_esteira, LOW);
digitalWrite(PINO_SAIDA_CIL_EMPURRADOR, LOW);
digitalWrite(PINO_SAIDA_VENTILADOR, LOW);
digitalWrite(PINO_SAIDA_AQUECER_FACA, LOW);
digitalWrite(PINO_SAIDA_AQUECER_ESTUFA, LOW);
digitalWrite(LED_TEMP_OK, LOW);
//digitalWrite(PINO_SAIDA_SINALIZACAO, LOW);
}
void loop() {
// Leitura do termopar / temperatura
int valor_Faca = analogRead(PINO_TERMO_PAR_FACA);
float tensao_Faca = (valor_Faca * 3.3) / 1023.0;
float temperatura_Faca = (tensao_Faca - 0.5) * 100.0; // Convertendo para temperatura em graus Celsius
// Imprimir a temperatura
Serial.print("Temperatura do Termo Par da Faca: ");
Serial.print(temperatura_Faca);
Serial.println("°C");
// Verificar se a entrada 2 (PINO_BOTAO_LIGA) foi acionada
if (digitalRead(PINO_BOTAO_LIGA) == LOW && liga == 0) {
// Se o botão pressionado e a saída desligada
liga = 1; // Liga
digitalWrite(PINO_SAIDA_MOTOR_esteira, HIGH);
digitalWrite(PINO_SAIDA_VENTILADOR, HIGH);
digitalWrite(PINO_SAIDA_AQUECER_FACA, HIGH);
digitalWrite(PINO_SAIDA_AQUECER_ESTUFA, HIGH);
digitalWrite(LED_TEMP_OK, HIGH);
sleep_ms(200); //500
}
else if (digitalRead(PINO_BOTAO_DESLIGA) == LOW && liga == 1) {
// Se o botão pressionado e a saída ligada
liga = 0; // Desliga
digitalWrite(PINO_SAIDA_MOTOR_esteira, LOW);
digitalWrite(PINO_SAIDA_VENTILADOR, LOW);
digitalWrite(PINO_SAIDA_AQUECER_FACA, LOW);
digitalWrite(PINO_SAIDA_AQUECER_ESTUFA, LOW);
sleep_ms(200); //500
}
// Verificar temperatura esta entre 100e 200ºC,se sim, liga led rosa: temp ok!!!
if (temperatura_Faca >= 100 && temperatura_Faca <= 200) {
digitalWrite(LED_TEMP_OK, HIGH); // Aciona o LED indicador de temperatura OK
} else {
digitalWrite(LED_TEMP_OK, LOW); // Desliga o LED indicador de temperatura OK
}
// temp.esta entre 100°C e 200°C e a entrada 0 (PINO_BOTAO_START) foi acionada
if (temperatura_Faca >= 100 && temperatura_Faca <= 200 && digitalRead(PINO_BOTAO_START) == LOW) {
digitalWrite(PINO_SAIDA_CIL_EMPURRADOR, HIGH); // Liga a saída 12
} //else {
// digitalWrite(PINO_SAIDA_CIL_EMPURRADOR, LOW); // Desliga a saída 12
// }
// Verificar se a entrada 1 (PINO_SENSOR_PRESENCA) foi acionada
if (digitalRead(PINO_SENSOR_PRESENCA) == LOW && digitalRead(PINO_SAIDA_CIL_EMPURRADOR) == HIGH) {
digitalWrite(PINO_SAIDA_CIL_EMPURRADOR, LOW); // Desliga a saída 12
digitalWrite(PINO_SAIDA_MOTOR_esteira, LOW);
//sleep_ms(500); // delay 1 segundo 1000
digitalWrite(PINO_SAIDA_CIL_CORTE_SOLDA, HIGH); // Liga saída 9
sleep_ms(3000); // depois de 3 segundos 5000
digitalWrite(PINO_SAIDA_CIL_CORTE_SOLDA, LOW); // Desliga saída 9
sleep_ms(200); // delay 1 segundo 1000
digitalWrite(PINO_SAIDA_MOTOR_esteira, HIGH);
}
}