jesobreira

trab lab fisica

Oct 12th, 2016
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.48 KB | None | 0 0
  1. /*
  2.  * Nota: para compilar, retirar os pinos D0 (RX) e D1 (TX) e só tornar a ligá-los depois que já tiver carregado o programa.
  3.  */
  4.  
  5. #include <Wire.h>
  6. #include <avr/wdt.h>
  7. #include "DHT.h"
  8.  
  9. #define dht_pin A3 //Pino DATA do Sensor ligado na porta Analogica A5
  10.  
  11. #define DHTTYPE DHT11
  12.  
  13. DHT dht(dht_pin, DHTTYPE);
  14.  
  15. //Endereco I2C do MPU6050
  16. const int MPU=0x68;  
  17. //Variaveis para armazenar valores dos sensores
  18. int AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
  19.  
  20. const int firesensor = A1;
  21. const int trembsensor = 7;
  22. const int smokesensor = 6;
  23.  
  24. #define pot A0 //Define pot como A0
  25.  
  26. int potvalor; //Cria variável para armazenar o valor do potenciômetro
  27.  
  28. void setup()
  29. {
  30.   wdt_disable();//desabilita o watchdog
  31.  
  32.   Serial.begin(9600);
  33.  
  34.   pinMode(firesensor, INPUT);
  35.   pinMode(trembsensor, INPUT);
  36.   pinMode(smokesensor, INPUT);
  37.  
  38.   Wire.begin();
  39.   Wire.beginTransmission(MPU);
  40.   Wire.write(0x6B);
  41.    
  42.   //Inicializa o MPU-6050
  43.   Wire.write(0);
  44.   Wire.endTransmission(true);
  45.  
  46.   // Aguarda 1 seg antes de acessar as informações do sensor
  47.   delay(1000);
  48.   dht.begin();
  49. }
  50.  
  51. void loop()
  52. {
  53.   Serial.println("---------------");
  54.   float h = dht.readHumidity();
  55.   float t = dht.readTemperature();
  56.  
  57.   // Mostra os valores lidos, na serial
  58.   Serial.print("Temperatura: ");
  59.   Serial.print(t);
  60.   Serial.println(" C ");
  61.   Serial.print("Umidade do ar: ");
  62.   Serial.print(h);
  63.   Serial.println(" %");
  64.  
  65.   // mpu
  66.   Wire.beginTransmission(MPU);
  67.   Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
  68.   Wire.endTransmission(false);
  69.   //Solicita os dados do sensor
  70.   Wire.requestFrom(MPU,14,true);  
  71.   //Armazena o valor dos sensores nas variaveis correspondentes
  72.   AcX=Wire.read()<<8|Wire.read();  //0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)    
  73.   AcY=Wire.read()<<8|Wire.read();  //0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
  74.   AcZ=Wire.read()<<8|Wire.read();  //0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
  75.   Tmp=Wire.read()<<8|Wire.read();  //0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
  76.   GyX=Wire.read()<<8|Wire.read();  //0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
  77.   GyY=Wire.read()<<8|Wire.read();  //0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
  78.   GyZ=Wire.read()<<8|Wire.read();  //0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
  79.  
  80.   if(AcY<10000) {
  81.     Serial.println("AVISO: QUEDA DETECTADA!");
  82.   } else {
  83.     Serial.println("Posicionamento padrão.");
  84.   }
  85.  
  86.   // erro do MPU
  87.   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)) {
  88.     Serial.println("Sensores em estado de erro. Favor reconectar. A reinicializar...");
  89.     wdt_enable(WDTO_2S); // ativa o watchdog para resetar em 2 segundos.
  90.     while(1); // entra em loop até resetar...
  91.   }
  92.   // end mpu
  93.  
  94.   // sensores adicionais
  95.   if(digitalRead(smokesensor)) {
  96.     Serial.println("AVISO: ALTA CONCENTRAÇÃO DE INFLAMÁVEL");
  97.   } else {
  98.     Serial.println("Gases atmosféricos em valores padrão.");
  99.   }
  100.   if(digitalRead(trembsensor)) {
  101.     Serial.println("AVISO: MOVIMENTAÇÃO INCOMUM!");
  102.   } else {
  103.     Serial.println("Movimentação padrão.");
  104.   }
  105.  
  106.  
  107.   potvalor = analogRead(A0); //Lê o potenciômetro e armazena na variável potvalor  
  108.   potvalor = map(potvalor, 0, 1014, 0, 2000);
  109.   if(analogRead(firesensor)>potvalor) {
  110.     Serial.println("AVISO: CHAMAS DETECTADAS!");
  111.   } else {
  112.     Serial.println("Nenhuma chama detectada.");
  113.   }
  114.  
  115.   // Nao diminuir muito o valor abaixo
  116.   // O ideal e a leitura a cada 2 segundos
  117.   delay(2000);
  118. }
Add Comment
Please, Sign In to add comment