#include <WiFi.h>
#include <HX711.h>
#include <LiquidCrystal.h>
#include "ThingSpeak.h"
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber =2447206 ;
const char* myApiKey = "S0ARKZEQQRKA25VC";
const char* server = "api.thingspeak.com";
const int DT = 23; // دبوس البيانات من HX711
const int SCK_ESP32= 22;
int rs = 12, en = 13, d4 = 2, d5 = 4, d6 = 5, d7 = 19;
HX711 scale;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
WiFiClient client;
int mins = 0;
int seconds = 0;
bool timer_running = false;
unsigned long timer_start_time = 0;
void setup() {
Serial.begin(115200);
Serial.begin(9600);
lcd.begin(16, 2);
scale.begin(DT,SCK_ESP32);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected !");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
lcd.setCursor(4, 0);
lcd.print("Bedsentry");
// قراءة قيمة الوزن بالجرامات
float value_weight = scale.get_units() * 1000;
ThingSpeak.writeField(myChannelNumber, 1, value_weight, myApiKey);
// إرسال البيانات إلى ThingSpeak
if (value_weight >= 1) {
// إذا كان هناك وزن، بدء التايمر
if (!timer_running) {
timer_start_time = millis();
timer_running = true;
} else {
timer_start_time = millis();
}
// عرض الوقت على الشاشة LCD
lcd.setCursor(6, 1);
if (mins < 10) {
lcd.print("0");
}
lcd.print(mins);
lcd.print(":");
if (seconds < 10) {
lcd.print("0");
}
lcd.print(seconds);
// زيادة عداد الثواني والدقائق
if (seconds > 59) {
mins++;
seconds = 0;
}
if (mins > 59) {
mins = 0;
}
delay(1000);
lcd.clear();
seconds++;
} else {
// إيقاف التايمر إذا لم يكن هناك وزن
if (timer_running && (millis() - timer_start_time >= 5000)) {
mins = 0;
seconds = 0;
lcd.setCursor(6, 1);
lcd.print("00:00");
timer_running = false;
}
}
}