#include <NewPing.h> // Library sensor PING
uint8_t sensor = 2;
uint8_t led = 8;
uint8_t state = LOW; // by default, no motion detected
uint8_t pir = 0;
uint8_t trigPin = 11; // Trigger
uint8_t trigPin2 = 4; // Trigger 2 repel
uint8_t echoPin = 12; // Echo
uint8_t duration, cm, inches;
uint8_t MEASURE_LIMIT = 400;
bool DETECT;
uint8_t count;
double dist;
NewPing sonar(trigPin, echoPin, MEASURE_LIMIT); // Inisialisasi sensor
void setup() {
initPinMode();
}
void loop() {
dist = measureDistance();
delay(250);
//PIR
pir = digitalRead(sensor); // read sensor value
if (pir == HIGH && (dist >= MEASURE_LIMIT || dist <= 1)) { // check if the sensor detect rats
digitalWrite(led, HIGH); // turn LED ON
delay(100); // delay 100 milliseconds
digitalWrite(trigPin2, HIGH);
DETECT = true;
return;
}
if (!pir && DETECT) {
count++;
Serial.print("Rats detected!, "); Serial.println(count);
digitalWrite(led, LOW);
digitalWrite(trigPin2, LOW);
DETECT = false;
return;
}
// Wait for a second before repeating the loop
delay(1000);
}
double measureDistance() {
dist = sonar.ping_cm();
Serial.println(dist);
return constrain(dist, 0, MEASURE_LIMIT);
}
void initPinMode() {
//Define inputs and outputs
pinMode(trigPin, OUTPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT); // initalize LED as an output
pinMode(sensor, INPUT); // initialize sensor as an input
Serial.begin(9600); // initialize serial
}