#include "HX711.h" // Biblioteca HX711
#define DOUT 27 // HX711 DATA OUT = pino A0 do Arduino
#define CLK 14 // HX711 SCK IN = pino A1 do Arduino
HX711 balanca; // define instancia balança HX711
float calibration_factor = 70330.00;
float peso = 0;
const int adulto = 33; // Variável para adultos
int buzzer = 26; // Variável para o Buzzer
int Led = 13; // Variável para o Led
int estadoadulto = 0;// Criação das variáveis:
int AlertaTempAlta = 26; // Define o pino 26 para o alerta de temperatura alta
#include <DHT.h>; //INCLUSÃO DE BIBLIOTECA
#define DHTPIN 4 //PINO DIGITAL UTILIZADO PELO DHT22
#define DHTTYPE DHT22 //DEFINE O MODELO DO SENSOR (DHT22 / AM2302)
DHT dht(DHTPIN, DHTTYPE); //PASSA OS PARÂMETROS PARA A FUNÇÃO
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
#include <Wire.h>
byte Grau[] = {
B00110,
B01001,
B01001,
B00110,
B00000,
B00000,
B00000,
B00000
};
byte Gota[] = {
B00100,
B01110,
B11111,
B10111,
B10001,
B01110,
B00000,
B00000
};
byte Termometro[] = {
B00100,
B01010,
B01010,
B01010,
B01010,
B10011,
B10111,
B01110
};
byte Peso[] = {
B00000,
B00000,
B00000,
B01110,
B10111,
B11101,
B11011,
B01110
};
void setup() {
lcd.begin(20,4);
dht.begin(); //INICIALIZA A FUNÇÃO
delay(2000); //INTERVALO DE 2 SEGUNDO ANTES DE INICIAR
Serial.begin(115200);
balanca.begin(DOUT, CLK); // inicializa a balança
Serial.println("Balança com HX711 - celula de carga 50 Kg");
Serial.println("Pressione t para Tara"); // imprime no monitor serial
balanca.set_scale(calibration_factor); // ajusta fator de calibração
balanca.tare();
pinMode(buzzer, OUTPUT); // Define o buzzer como uma variável de saída:
pinMode(adulto, INPUT); // Define os botões como variáveis de entrada:
pinMode (Led, OUTPUT); //Define o Led de alerta
pinMode(AlertaTempAlta, OUTPUT); // Define o pino de alerta de temperatura alta como saida
//Cria o caractere customizado com o simbolo do grau
lcd.createChar(1, Grau);
lcd.createChar(2, Gota);
lcd.createChar(3, Termometro);
lcd.createChar(4, Peso);
}
void loop() {
float t = dht.readTemperature();
lcd.setCursor (7,0);
lcd.print("LIGADO");
lcd.setCursor(1,1);
lcd.write(byte(2));
lcd.print(" Umidade: "); //IMPRIME O TEXTO NA SERIAL
lcd.print(dht.readHumidity()); //IMPRIME NA SERIAL O VALOR DE UMIDADE MEDIDO
lcd.print("%"); //IMPRIME O TEXTO NA SERIAL
lcd.setCursor(1,2);
lcd.write(byte(3));
lcd.print(" Temperatura: "); //IMPRIME O TEXTO NA SERIAL
lcd.print(dht.readTemperature(),0); //IMPRIME NA SERIAL O VALOR DE UMIDADE MEDIDO E REMOVE A PARTE DECIMAL
lcd.write(byte(1));
lcd.print("C"); //IMPRIME O TEXTO NA SERIAL
delay(2000); //INTERVALO DE 2 SEGUNDOS * NÃO DIMINUIR ESSE VALOR
lcd.setCursor(1,3);
lcd.write(byte(4));
lcd.print(" Peso: ");
lcd.print(balanca.get_units(10));
peso = balanca.get_units(5);
lcd.print("Kg "); //IMPRIME O TEXTO NA SERIAL
delay(100);
Serial.print("Peso: "); // imprime no monitor serial
Serial.print(balanca.get_units(), 3); // imprime peso na balança com 3 casas decimais
Serial.println(" kg"); // imprime no monitor serial
delay(100) ;
estadoadulto = digitalRead(adulto); // Lê o estado do botão:
if ((estadoadulto == LOW)&&(t>=26)&&(peso>=5.000))
{
// Desativa o buzzer:
digitalWrite(buzzer, HIGH);
digitalWrite(Led,HIGH);
delay(100);
digitalWrite(Led,LOW);
digitalWrite (buzzer, LOW);
}
if ((peso>=5.000)&&(estadoadulto == LOW))
{
lcd.clear();
delay (500);
lcd.setCursor (2,0);
lcd.print("CRIANCA ESQUECIDA");
lcd.setCursor (1,2);
lcd.print("ALARME TOCARA EM");
lcd.setCursor (1,3);
lcd.print("SEGUNTOS");
// Aciona o Buzzer e o Led:
digitalWrite(Led,HIGH);
delay(1000);
digitalWrite(Led,LOW);
delay(1000);
digitalWrite(Led,HIGH);
delay(1000);
digitalWrite(Led,LOW);
delay(1000);
digitalWrite(Led,HIGH);
delay(1000);
digitalWrite(Led,LOW);
delay(1000);
digitalWrite(Led,HIGH);
delay(2600);
digitalWrite(buzzer, HIGH);
delay (500);
digitalWrite(buzzer, LOW);
digitalWrite(Led,LOW);
lcd.clear();
}
}