/*Programa:Piso Sensorial de Segurança, Sensor célula de carga (ultrasônico), Buzzer e Led
Autores: Evilyn Santos, Gabriela Rosa.
Entradas a conectar: ECHO-9|
Saídas a conectar: LEDs: VD-3|AM-6|VM-7|TRIGGER-10|SDA|SCL
Revisão: 11/08/2023*/
#include "HX711.h"
HX711 scale;
#define mi 330 //Define variavel mi como frequência de 330 Hz
#define DO 262 //Define variavel do como frequência de 262 Hz
#define re 294 //Define variavel ré como frequência de 294 Hz
#define VD 13 //Define variavel VD associado a Sala Vazia e a Trabalhadores no Local
#define AM 6 //Define variavel AM
#define VM 12 //Define variavel VM associado a Emergencia
#define Buzzer 11 //Define variavel Buzzer associado ao pino 13
#define button 10 //Define button como botão associado ao pino 12
bool BOT = false; //Define a variavel BOT como booleana
int tara = 21000;
int peso;
int valor;
int kg;
int segundo = 1; //Define variavel segundo igual a 1
unsigned long millisTarefa1 = millis();
unsigned long millisTarefa2 = millis();
void setup() //Inicia a função setup
{ //Abertira da função setup
Serial.begin(9600); //Inicia porta/monitor serial com taxa padrão de 9600 bps
Serial.println("INICIALIZANDO PISO SENSORIAL"); //Imprime no monitor serial o texto entre aspas duplas
delay(1000);
Serial.println("Escala do sensor:21000");
pinMode(VD, OUTPUT); //Define modo de opereção do pino 3 como saida
pinMode(AM, OUTPUT); //Define o modo de operação do pino 6 como saida
pinMode(VM, OUTPUT); //Define o modo de operação do pino 7 como saida
pinMode(Buzzer, OUTPUT); //Define o modo de operação do pino 10 como saida
pinMode(12, INPUT_PULLUP); //Define modo de operação do pino 12 como entrada com pull-up
// Inicia comunicação na porta serial
Serial.begin(9600);
scale.begin(A1, A0);
} //Fechamento da função setup
void loop()
{ //Abertura da função loop
int kg;
peso= scale.get_value();
kg= peso;
if (digitalRead(A0)==0 && digitalRead(A1)==1) { //Serial faz a varredura continua, valor zero "Sala vazia"
//Abertura da estrutura if (condicional)
digitalWrite(VD, HIGH); //Coloca a variável digital VD em nível lógico alto
digitalWrite(VM, LOW); //Coloca a variável digital VM em nível lógico baixo
Serial.print("Sala vazia: "); //Imprime no monitor serial o texto entre aspas duplas
Serial.print(kg/420); //Imprime no monitor serial o texto entre aspas duplas
Serial.println(" KG");
delay(500);
} //Fechamento da estrutura if (condicional)
if (digitalRead(A0) > 1 && digitalRead(A1)>1 && digitalRead(A0) <= 0 && digitalRead(A1) <= 0) //serial detecta alguma alteração, valor diferente de zero mas ainda não atingiu o pico "Trabalhadores no local"
{ //Abertura da estrutura if (condicional)
digitalWrite(VM, LOW); //Coloca a variável digital VM em nível lógico baixo
digitalWrite(VD, HIGH); //Coloca a variável digital VD em nível lógico alto
Serial.print("Trabalhador No Local: "); //Imprime no monitor serial o texto entre aspas duplas
Serial.print(kg/420+420); //Imprime no monitor serial o texto entre parênteses
Serial.println(" KG");
delay(5000);
}
if (digitalRead(A0)>150 && BOT==false) //Compara se a condição A0 e maior que o valor e se o botão está desligado
{ //Abertura da estrutura if (condicional)
digitalWrite(VD, LOW); //Coloca a variável digital VD em nível lógico baixo
digitalWrite(VM, HIGH); //Coloca a variável digital VD em nível lógico alto
delay(1000);
digitalWrite(VM, LOW); //Coloca a variável digital VD em nível lógico baixo
delay(1000);
Serial.println("CONTAGEM REGRESSIVA 15S: "); //Imprime no monitor serial o texto entre aspas duplas
Serial.print(kg/420); //Imprime no monitor serial o texto entre parênteses
Serial.println(" KG");
/* falta arrumar a contagem regressiva*/
int cont; //Declara variavel inteira como cont
//Inicio da contagem regressiva de 15 segundos
for (cont = 15; cont >= 0; cont--) //Inicia estrutura de repetição for (inicio, condição, incremento)
{ //Abertura da estrutura for (repetição)
if (digitalRead(10)==HIGH )
{ // Compara se a condição BOT e nivel logico alto
// noTone(11);
delay(10);
BOT = true;
}
Serial.println(cont);
delay(500);
digitalWrite(VM, HIGH); //Coloca a variável digital VM em nível lógico alto
delay(300);
digitalWrite(VM, LOW); //Coloca a variável digital VM em nível lógico baixo
delay(300);
tone(13, mi); //Executa a função tone no pino 13 utilizando o vetor melodia
delay(200);
if(cont == 0 && digitalRead (BOT)==HIGH){ //Compara a variavel cont é igual a 0 e se o botão esta ligado
break;}
}
}
}