#include <Wire.h>
#include <LiquidCrystal.h>
#include <Servo.h>
Servo servo; //
#define LED_PIN 13
int val;
int pos = 0;
int sensor = 1;
const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int ab;
const int DOUT_PIN = 2;
const int CLK_PIN = 3;
const float MAX_WEIGHT = 10;
void setup() {
lcd.begin(16, 2);
pinMode(sensor, INPUT);
pinMode(LED_PIN, OUTPUT);
servo.attach(4);
pinMode(DOUT_PIN, INPUT);
pinMode(CLK_PIN, OUTPUT);
delay(1000);
}
void loop() {
val = digitalRead(sensor);
float weight = getWeight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Weight: ");
lcd.setCursor(0, 1);
lcd.print(weight, 1);
lcd.print(" kg");
if (weight > MAX_WEIGHT) {
digitalWrite(LED_PIN, HIGH);
digitalWrite(LED_PIN, HIGH);
digitalWrite(LED_PIN, HIGH);
delay(100);
digitalWrite(LED_PIN, LOW);
delay(100);
lcd.print(" change ROAD OR TURN BACK ");
}
else if (val == HIGH) {
a();
}
delay(1000);
}
float getWeight() {
unsigned long value = 0;
for (byte i = 0; i < 24; i++) {
digitalWrite(CLK_PIN, HIGH);
delayMicroseconds(0.5);
value <<= 1;
if (digitalRead(DOUT_PIN)) {
value++;
}
digitalWrite(CLK_PIN, LOW);
delayMicroseconds(0.5);
}
value &= 0x7FFFFF;
float weight = value / 100;
return weight;
}
void a() {
ab = digitalRead(sensor);
if(ab == HIGH){
for (pos = 0; pos <= 90; pos += 1) {
servo.write(pos);
}
for (pos = 0; pos >= 0; pos -= 1) {
servo.write(pos);
}
}
else {
for (pos = 90; pos <= 0; pos += 1) {
servo.write(pos);
}
for (pos = 90; pos >= 0; pos -= 1) {
servo.write(pos);
}
}
}