97 lines
2.6 KiB
C++
97 lines
2.6 KiB
C++
#include <SoftwareSerial.h>
|
|
#include <DHT.h>
|
|
|
|
SoftwareSerial mySerial(2, 3);
|
|
|
|
const int pinSensorApi = A1; // Pin sensor api
|
|
const int pinSensorGas = A2; // Pin sensor gas
|
|
const int pinBuzzer = 11; // Pin buzzer
|
|
const int pinDHT = 7; // Pin sensor DHT
|
|
#define DHTTYPE DHT11 // Tipe sensor DHT (DHT11, DHT21, DHT22)
|
|
DHT dht(pinDHT, DHTTYPE);
|
|
int nilaiSensorApi = 0;
|
|
int nilaiSensorGas = 0;
|
|
char c;
|
|
String data;
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
mySerial.begin(115200);
|
|
pinMode(pinSensorApi, INPUT);
|
|
pinMode(pinSensorGas, INPUT);
|
|
pinMode(pinBuzzer, OUTPUT);
|
|
dht.begin();
|
|
}
|
|
|
|
void loop() {
|
|
while (mySerial.available() > 0) {
|
|
delay(10);
|
|
c = mySerial.read();
|
|
data += c;
|
|
}
|
|
|
|
if (data.length() > 0) {
|
|
Serial.println(data);
|
|
data = "";
|
|
}
|
|
|
|
nilaiSensorApi = analogRead(pinSensorApi);
|
|
// Inversi nilai sensor api
|
|
int nilaiSensorApiInverted = 1023 - nilaiSensorApi;
|
|
// Serial.print("Nilai Sensor Api: ");
|
|
// Serial.println(nilaiSensorApiInverted);
|
|
|
|
nilaiSensorGas = analogRead(pinSensorGas);
|
|
// Serial.print("Nilai Sensor Gas: ");
|
|
// Serial.println(nilaiSensorGas);
|
|
|
|
float suhu = dht.readTemperature();
|
|
// Serial.print("Suhu: ");
|
|
// Serial.println(suhu);
|
|
|
|
if (suhu > 57) { // Sesuaikan nilai ambang sesuai kebutuhan
|
|
mySerial.print(" SUHU TINGGI ");
|
|
Serial.println(" SUHU TINGGI ");
|
|
|
|
// Bunyi buzzer 5 kali
|
|
for (int i = 0; i < 3; i++) {
|
|
digitalWrite(pinBuzzer, HIGH);
|
|
delay(500); // Buzzer ON selama 500 ms
|
|
digitalWrite(pinBuzzer, LOW);
|
|
delay(500); // Buzzer OFF selama 500 ms
|
|
}
|
|
}
|
|
|
|
if (nilaiSensorApiInverted > 800) { // Sesuaikan nilai ambang sesuai kebutuhan
|
|
mySerial.print(" API TERDETEKSI ");
|
|
Serial.println(" API TERDETEKSI ");
|
|
|
|
// Bunyi buzzer 3 kali
|
|
for (int i = 0; i < 3; i++) {
|
|
digitalWrite(pinBuzzer, HIGH);
|
|
delay(500); // Buzzer ON selama 500 ms
|
|
digitalWrite(pinBuzzer, LOW);
|
|
delay(500); // Buzzer OFF selama 500 ms
|
|
}
|
|
}
|
|
|
|
if (nilaiSensorGas > 100) { // Sesuaikan nilai ambang sesuai kebutuhan
|
|
mySerial.print(" GAS BERBAHAYA TERDETEKSI ");
|
|
Serial.println(" GAS BERBAHAYA TERDETEKSI ");
|
|
|
|
// Bunyi buzzer 5 kali
|
|
for (int i = 0; i < 3; i++) {
|
|
digitalWrite(pinBuzzer, HIGH);
|
|
delay(500); // Buzzer ON selama 500 ms
|
|
digitalWrite(pinBuzzer, LOW);
|
|
delay(500); // Buzzer OFF selama 500 ms
|
|
}
|
|
}
|
|
|
|
// Kirim data sensor ke ESP8266
|
|
data = "Sensor Api: " + String(nilaiSensorApiInverted) + " Sensor Gas: " + String(nilaiSensorGas) + " Suhu: " + String(suhu);
|
|
mySerial.println(data);
|
|
|
|
delay(1000); // Mengirim data setiap 1 detik
|
|
}
|