#include <VARSTEP_ultrasonic.h>
#include <LiquidCrystal_I2C.h>
class PIRSensor
{
public:
int outputPin;
PIRSensor(int outputPin)
{
outputPin = outputPin;
pinMode(outputPin, INPUT);
}
//--- millis() time when we last triggered, 0 means none
int getStatus() {
return digitalRead(outputPin);
}
};
#define PIR_SENSOR_PIN 4
#define DISTANCE_SENSOR_ECHO_PIN 2
#define DISTANCE_SENSOR_TRIG_PIN 3
#define LCD_ADDR 0x27
#define LCD_COLUMN_COUNT 20
#define LCD_ROW_COUNT 4
#define SERIAL_SPEED 9600
PIRSensor pirSensor(PIR_SENSOR_PIN);
VARSTEP_ultrasonic distanceSensor(DISTANCE_SENSOR_TRIG_PIN, DISTANCE_SENSOR_ECHO_PIN);
LiquidCrystal_I2C lcd(LCD_ADDR, LCD_COLUMN_COUNT, LCD_ROW_COUNT);
void setup()
{
Serial.begin(SERIAL_SPEED);
lcd.init();
lcd.backlight();
}
void loop() {
Serial.println(pirSensor.getStatus());
}
double distance_cm, distance_m;
void loop3() {
distance_cm = distanceSensor.distance_cm();
if (distance_cm == -1.0) {
Serial.println("No distance detected");
} else {
Serial.print("Distance: ");
Serial.print(distance_cm);
Serial.print("cm | ");
Serial.print(distance_m);
Serial.println("m");
}
delay(100); // We recommend 100ms minimum delay for good accuracy.
}
// void loop2()
// {
// cm = 0.0344 / 2 * readUltrasonicDistance(3, 2);
// inches = (cm / 2.54);
// /*
// Serial.print("Inches ");
// Serial.print(inches, 1);
// Serial.print("\t");
// Serial.print("cm ");
// Serial.println(cm, 1);
// */
// lcd.setCursor(0, 0);
// lcd.print("Inches");
// lcd.setCursor(4, 0);
// lcd.setCursor(12, 0);
// lcd.print("cm");
// lcd.setCursor(1, 1);
// lcd.print(inches, 1);
// lcd.setCursor(11, 1);
// lcd.print(cm, 1);
// lcd.setCursor(14, 1);
// delay(2000);
// lcd.clear();
// }