#include <WiFi.h>
#include <HTTPClient.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Keypad.h>
#include <ESP32Servo.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* token = "b9GtyEaFyQ3xW1QtBofnCdCnj0yrOqyDKPDv1qoPc6F";
const int rows=4;
const int cols=4;
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
char keys[rows][cols] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
uint8_t colpins[cols] = {2, 0, 4, 16 };
uint8_t rowpins[rows] = {12, 14, 27, 26};
Servo servo_bin;
Keypad keypad = Keypad(makeKeymap(keys), rowpins, colpins, rows, cols);
const String passwod = "1234";
String input_passwod;
int i = 0;
void setup(){
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextColor(WHITE,BLACK);
display.setCursor(0,5);
display.clearDisplay();
display.setTextSize(3);
Serial.begin(115200);
input_passwod.reserve(32);
servo_bin.attach(33);
servo_bin.write(90);
WiFi.begin(ssid,passwod);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
void loop(){
char key = keypad.getKey();
if (WiFi.status() == WL_CONNECTED) {
Serial.println("เชื่อมต่อแล้วจ้า");
}
if (key) {
Serial.println(key);
display.print("*");
display.display();
input_passwod += key;
i=++i;
if (key == 'D') {
input_passwod = "";
display.clearDisplay();
display.display();
display.setCursor(0,5);
i = 0;
}
else if (i == 4) {
if (passwod == input_passwod) {
servo_bin.write(0);
Serial.println("รหัสถูกต้อง");
display.clearDisplay();
display.setCursor(0,25);
display.setTextSize(3);
display.print("Succeed");
display.display();
delay(6000);
servo_bin.write(90);
display.clearDisplay();
display.display();
display.setCursor(0,5);
sendLineNotify("ไอ้ควายฉลาดมาก");
} else {
Serial.println("รหัสไม่ถูกต้อง");
display.clearDisplay();
display.setCursor(23,25);
display.setTextSize(3);
display.print("Fail");
display.display();
delay(3000);
display.clearDisplay();
display.display();
display.setCursor(0,5);
sendLineNotify("โง่ฉิบหาย");
}
i = 0;
input_passwod = "";
} else {
display.clearDisplay();
display.display();
}
delay(100);
}
}
void sendLineNotify(String message) {
HTTPClient http;
http.begin("https://notify-api.line.me/api/notify");
http.addHeader("Authorization", "Bearer " + String(token));
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
String encodedMessage = "message=" + urlEncode(message);
int httpCode = http.POST(encodedMessage);
if (httpCode > 0) {
String response = http.getString();
// Serial.println(httpCode);
// Serial.println(response);
} else {
Serial.println("....");
}
http.end();
}
String urlEncode(String value) {
String encodedValue = "";
char c;
for (size_t i = 0; i < value.length(); i++) {
c = value.charAt(i);
if (isAlphaNumeric(c)) {
encodedValue += c;
} else {
encodedValue += String('%');
encodedValue += String(c, HEX);
}
}
return encodedValue;
}