#include "HX711.h"
#include <WiFi.h>
#include <Wire.h>
#include <ThingSpeak.h>
#include <Adafruit_NeoPixel.h>
#define LED_PIN 23
#define NUM_LEDS 32
#define ld_sck 2
#define ld_cell 4
HX711 scale;
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
const char *server = "api.thingspeak.com";
unsigned long myChannelNumber = 2591797;
const char *myWriteAPIKey = "7KODAYDS0B1J7DM5";
float percentage_final=0;
Adafruit_NeoPixel strip(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void fillStripWithPercentage(int percentage, uint8_t red, uint8_t green, uint8_t blue)
{
// Calculate the number of LEDs to light up based on the percentage
int numLedsToLight = (NUM_LEDS * percentage) / 100;
// Light up the calculated number of LEDs with the given color
for (int i = 0; i < NUM_LEDS; i++) {
if (i < numLedsToLight) {
strip.setPixelColor(i, strip.Color(red, green, blue));
} else {
strip.setPixelColor(i, 0); // Turn off the remaining LEDs
}
}
// Update the strip to show the changes
strip.show();
}
WiFiClient client;
void wificonnect()
{
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println(" CONNECTED");
}
void setup()
{
Serial.begin(115200);
Serial.println("HI");
strip.begin();
strip.show();
wificonnect();
// Initialize ThingSpeak
ThingSpeak.begin(client);
scale.begin(ld_cell,ld_sck);
scale.set_scale();
scale.tare();
}
void loop()
{
if (scale.is_ready())
{
float load = scale.get_units(1); // Get weight reading from the scale
Serial.print("weight:"); // Calculate weight in kilograms from the sensor reading
float final_load = (load/42)/10;
Serial.print(final_load); // Convert the sensor reading to kilograms
Serial.println("kg");
percentage_final= (final_load*20);
ThingSpeak.setField(1, final_load);
ThingSpeak.setField(2, percentage_final);
int status = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (status == 200)
{
Serial.println("Data sent to ThingSpeak successfully!");
digitalWrite(8, HIGH);
delay(2000);
digitalWrite(8, LOW);
}
else
{
Serial.println("Error sending data to ThingSpeak");
digitalWrite(10, HIGH);
delay(2000);
digitalWrite(10, LOW);
}
delay(4000);
fillStripWithPercentage(percentage_final, 255, 0, 0);
}
}