// Make sure these definitions are before including the Blynk library
#define BLYNK_TEMPLATE_ID "TMPL6giX2wt7e"
#define BLYNK_TEMPLATE_NAME "LOADCELL IoT"
#define BLYNK_AUTH_TOKEN "t8mXNn4H_JNvl1t09dMv9wqC-c6XmcKT"
#define BLYNK_PRINT Serial
#include <Adafruit_SSD1306.h>
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include "HX711.h"
#include <ESP32Servo.h>
#define SCL_PIN 22
#define SDA_PIN 21
#define LED_PIN 16
uint16_t berat1 = 0;
int servoPin = 32;
uint8_t angle = 0;
Adafruit_SSD1306 display(128, 64, &Wire, -1);
HX711 scale;
Servo myservo;
void setup() {
// Initialize serial communication
Serial.begin(115200);
Serial.println("Hello, ESP32-S3!");
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Initialize Blynk connection
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Initialize I2C and HX711
Wire.begin(SDA_PIN, SCL_PIN);
scale.begin(25, 26); // DT, SCK
scale.set_scale(); // Adjust to this calibration factor
scale.tare(); // Reset the scale to 0
myservo.attach(servoPin);
// Initialize display
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Stay in an infinite loop if display initialization fails
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print("Init...");
display.display();
pinMode(LED_PIN, OUTPUT);
}
void Loadcell() {
uint16_t berat = round(scale.get_units() * 50 / 21); // Convert to grams
if (berat != berat1) {
Serial.print("Berat: ");
Serial.println(berat);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(F("Berat:"));
display.setCursor(0, 25);
display.print(berat / 1000.0, 2); // Convert to kg for display
display.println(F(" kg"));
display.display();
berat1 = berat;
Blynk.virtualWrite(V0, berat1);
}
}
BLYNK_WRITE(V1)
{
uint8_t pinValue = param.asInt();
Serial.print("V1 value : ");
Serial.println(pinValue);
digitalWrite(LED_PIN, pinValue);
}
BLYNK_WRITE(V2)
{
angle = param.asInt();
Serial.print("V2 angle : ");
Serial.println(angle);
// myservo.write(param.asInt());
myservo.write(angle);
}
BLYNK_WRITE(V3)
{
Serial.println(param[0].asInt());
Serial.print("Start time in sec: ");
Serial.println(param[1].asInt());
Serial.print("Stop time in sec: ");
}
void loop() {
Blynk.run();
Loadcell();
}