#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <NewPing.h>
#include <WiFi.h>
#include <WiFiClientSecure.h>
#define TRIGGER_PIN 4
#define ECHO_PIN 2
#define BUTTON_PIN 5
#define MAX_DISTANCE 500
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* token = "ij3BTrbSEN804X54cvkb4h2FdneatPFXkENlWBrXlRp";
LiquidCrystal_I2C lcd(0x27, 16, 2);
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Wire.begin(21, 22);
lcd.begin(16, 2);
lcd.backlight();
pinMode(BUTTON_PIN, INPUT_PULLUP);
Serial.begin(115200);
Serial.println("Hello, Sornnaret009");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(10000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
lcd.setCursor(0, 0);
lcd.print("Hello, Sornnaret009");
delay(5000);
lcd.clear();
}
void loop() {
unsigned int distance = sonar.ping_cm();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print(" cm");
if (digitalRead(BUTTON_PIN) == LOW) {
sendToLineNotify(distance);
}
delay(500);
}
void sendToLineNotify(unsigned int distance) {
String message = "Distance: " + String(distance) + " cm";
WiFiClientSecure client;
client.setInsecure();
if (!client.connect("notify-api.line.me", 443)) {
Serial.println("Connection failed!");
return;
}
String request =
String("POST /api/notify HTTP/1.1\r\n") +
"Host: notify-api.line.me\r\n" +
"Authorization: Bearer " + token + "\r\n" +
"Content-Type: application/x-www-form-urlencoded\r\n" +
"Content-Length: " + String(message.length() + 8) + "\r\n\r\n" +
"message=" + message;
client.print(request);
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
break;
}
}
client.stop();
}