Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Nota: para compilar, retirar os pinos D0 (RX) e D1 (TX) e só tornar a ligá-los depois que já tiver carregado o programa.
- */
- #include <Wire.h>
- #include <avr/wdt.h>
- #include "DHT.h"
- #define dht_pin A3 //Pino DATA do Sensor ligado na porta Analogica A5
- #define DHTTYPE DHT11
- DHT dht(dht_pin, DHTTYPE);
- //Endereco I2C do MPU6050
- const int MPU=0x68;
- //Variaveis para armazenar valores dos sensores
- int AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
- const int firesensor = A1;
- const int trembsensor = 7;
- const int smokesensor = 6;
- #define pot A0 //Define pot como A0
- int potvalor; //Cria variável para armazenar o valor do potenciômetro
- void setup()
- {
- wdt_disable();//desabilita o watchdog
- Serial.begin(9600);
- pinMode(firesensor, INPUT);
- pinMode(trembsensor, INPUT);
- pinMode(smokesensor, INPUT);
- Wire.begin();
- Wire.beginTransmission(MPU);
- Wire.write(0x6B);
- //Inicializa o MPU-6050
- Wire.write(0);
- Wire.endTransmission(true);
- // Aguarda 1 seg antes de acessar as informações do sensor
- delay(1000);
- dht.begin();
- }
- void loop()
- {
- Serial.println("---------------");
- float h = dht.readHumidity();
- float t = dht.readTemperature();
- // Mostra os valores lidos, na serial
- Serial.print("Temperatura: ");
- Serial.print(t);
- Serial.println(" C ");
- Serial.print("Umidade do ar: ");
- Serial.print(h);
- Serial.println(" %");
- // mpu
- Wire.beginTransmission(MPU);
- Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H)
- Wire.endTransmission(false);
- //Solicita os dados do sensor
- Wire.requestFrom(MPU,14,true);
- //Armazena o valor dos sensores nas variaveis correspondentes
- AcX=Wire.read()<<8|Wire.read(); //0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
- AcY=Wire.read()<<8|Wire.read(); //0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
- AcZ=Wire.read()<<8|Wire.read(); //0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
- Tmp=Wire.read()<<8|Wire.read(); //0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
- GyX=Wire.read()<<8|Wire.read(); //0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
- GyY=Wire.read()<<8|Wire.read(); //0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
- GyZ=Wire.read()<<8|Wire.read(); //0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
- if(AcY<10000) {
- Serial.println("AVISO: QUEDA DETECTADA!");
- } else {
- Serial.println("Posicionamento padrão.");
- }
- // erro do MPU
- if((AcY==-1 && AcX==-1 && AcZ==-1 && GyX==-1 && GyY==-1 && GyZ==-1) || (AcY==0 && AcX==0 && AcZ==0 && GyX==0 && GyY==0 && GyZ==0)) {
- Serial.println("Sensores em estado de erro. Favor reconectar. A reinicializar...");
- wdt_enable(WDTO_2S); // ativa o watchdog para resetar em 2 segundos.
- while(1); // entra em loop até resetar...
- }
- // end mpu
- // sensores adicionais
- if(digitalRead(smokesensor)) {
- Serial.println("AVISO: ALTA CONCENTRAÇÃO DE INFLAMÁVEL");
- } else {
- Serial.println("Gases atmosféricos em valores padrão.");
- }
- if(digitalRead(trembsensor)) {
- Serial.println("AVISO: MOVIMENTAÇÃO INCOMUM!");
- } else {
- Serial.println("Movimentação padrão.");
- }
- potvalor = analogRead(A0); //Lê o potenciômetro e armazena na variável potvalor
- potvalor = map(potvalor, 0, 1014, 0, 2000);
- if(analogRead(firesensor)>potvalor) {
- Serial.println("AVISO: CHAMAS DETECTADAS!");
- } else {
- Serial.println("Nenhuma chama detectada.");
- }
- // Nao diminuir muito o valor abaixo
- // O ideal e a leitura a cada 2 segundos
- delay(2000);
- }
Add Comment
Please, Sign In to add comment