#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
// LCD setup
LiquidCrystal_I2C lcd(0x27, 16, 2); // 0x27 is the default I2C address for most LCDs
// Bluetooth setup
SoftwareSerial BTSerial(10, 11); // RX, TX for HC-05
// Ultrasonic Sensor Pins
#define TRIG_PIN1 22
#define ECHO_PIN1 23
#define TRIG_PIN2 24
#define ECHO_PIN2 25
void setup() {
// Initialize Serial Monitor
Serial.begin(9600);
// Initialize Bluetooth Serial
BTSerial.begin(9600);
// Initialize LCD
lcd.begin(16, 2); // 16 columns, 2 rows
lcd.print("System Ready");
// Initialize Ultrasonic Sensors
pinMode(TRIG_PIN1, OUTPUT);
pinMode(ECHO_PIN1, INPUT);
pinMode(TRIG_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
delay(1000);
lcd.clear();
}
void loop() {
// Read distances from sensors
int distance1 = readDistance(TRIG_PIN1, ECHO_PIN1);
int distance2 = readDistance(TRIG_PIN2, ECHO_PIN2);
// Simulate painting names based on coordinates
String panel1 = "Art Panel 1";
String panel2 = "Nature Panel 2";
// Display data on LCD
lcd.setCursor(0, 0);
lcd.print(panel1 + ": " + String(distance1) + "cm ");
lcd.setCursor(0, 1);
lcd.print(panel2 + ": " + String(distance2) + "cm ");
// Send data via Bluetooth
BTSerial.println(panel1 + " - X: " + String(distance1) + " Y: 10");
BTSerial.println(panel2 + " - X: " + String(distance2) + " Y: 20");
delay(1000);
}
// Function to read distance from Ultrasonic Sensor
int readDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2; // Convert to cm
return distance;
}