Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Ciao, ho fatto qualche modifica al tuo codice;
- *
- * - il codice è "diviso in 2", la prima parte riguarda il gas, al seconda la temperatura. Vedi tu se modificare la seconda parte
- * sulla falsa riga della prima.
- * - ho tolto il delay in fondo e l'ho sostituito con dei timer, in questo modo Arduino non rimane fermo anon fare nulla per 2 secondi
- * ma continua a ciclare. Quando i timer scadono vengono eseguite le operazioni.
- * - ho aggiunto alcune variabili tra cui la tolleranza (tollGas) per evitare che ad ogni minima variazione (anche solo di 1)
- * venisse inviato il dato all'app.
- * - Verifica il pin del sensore DHT, ho messo il 9 perchè è il primo pin che mi è venuto in mente.
- */
- #include <SoftwareSerial.h>
- #include <neotimer.h>
- #include "DHT.h"
- //definisco pin RX e TX da Arduino verso modulo BT
- #define BT_TX_PIN 12
- #define BT_RX_PIN 11
- //definisco il pin del sensore MQ5
- #define PIN_SENSORE A0
- #define PIN_LED 8
- #define PIN_TERMO 9 // <------------------ da definire!!!
- #define DHTTYPE DHT11
- SoftwareSerial bt = SoftwareSerial(BT_RX_PIN, BT_TX_PIN);
- Neotimer timerGas(2000); // in millisecondi -> 2 secondi
- Neotimer timerTermo(2000); // in millisecondi -> 2 secondi
- DHT Termometro(PIN_TERMO, DHTTYPE); // Definizione termometro
- int datoGas;
- int datoGasPrec;
- int tollGas;
- int limiteGas;
- float Temperatura;
- void setup() {
- // pinMode(PIN_SENSORE, INPUT); // non è necessario definire come output un pin analogico
- //definisco modalità pin
- pinMode(BT_RX_PIN, INPUT);
- pinMode(BT_TX_PIN, OUTPUT);
- pinMode(PIN_LED, OUTPUT);
- bt.begin(9600); //inizializzo comunicazione Bluetooth
- Termometro.begin();
- timerGas.start();
- timerTermo.start();
- datoGasPrec = -1;
- tollGas = 10;
- limiteGas = 100;
- }
- void loop()
- {
- // ================== GESTIONE GAS ==================
- if(timerGas.done()) // quando il timer del gas è scaduto leggo il dato dal sensore
- {
- datoGas = analogRead(PIN_SENSORE);
- if ((datoGas >= (datoGasPrec+tollGas)) || (datoGas <= (datoGasPrec+tollGas))) //se diverso dall'ultima lettura(+ o - la tolleranza) lo invio al Bluetooth
- {
- if (datoGas >= limiteGas) // se maggiore o uguale del limite attivo la segnalazione
- {
- bt.print("ATTENZIONE GAS RILEVATO ");
- bt.println(datoGas);
- digitalWrite(PIN_LED, HIGH);
- }
- else // altrimenti comunico solo il valore
- {
- bt.print("AMBIENTE SICURO ");
- bt.println(datoGas);
- digitalWrite(PIN_LED, LOW);
- }
- datoGasPrec = datoGas; // memorizzo il valore precedente
- timerGas.start(); // riattivo il timer del gas
- }
- }
- // ================== GESTIONE TEMPERATURA ==================
- if(timerTermo.done()) // quando il timer della temperatura è scaduto
- {
- Temperatura = Termometro.readTemperature(); // leggo la temperatura
- if(isnan(Temperatura)) // se rivevo il valore "isnan" (sensore non comunica o è rotto)
- {
- bt.print("Sensore temperatura KO"); // segnalo la rottura del sensore
- }
- else
- {
- bt.print("Temperatura: "); // altrimenti invio la temperatura
- bt.println(Temperatura);
- }
- timerTermo.start(); // avvio nuovamente il timer
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement