const int pinT = 11;
const int pinE = 12;
const int buzzer = 7;
const int servoPin = 3;
int pinLEDR = 4, pinLEDY = 5, pinLEDG = 6;
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include "HX711.h"
HX711 scale;
#include <Servo.h>
Servo servo;
void setup() {
lcd.init();
lcd.backlight();
pinMode(pinT, OUTPUT);
pinMode(pinE, INPUT);
//pinMode(servoPin, OUTPUT);
Serial.begin(9600);
Serial.begin(9600);
Serial.println("Initializing the scale");
scale.begin(A1, A0);
pinMode(pinLEDR, OUTPUT);
pinMode(pinLEDY, OUTPUT);
pinMode(pinLEDG, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(servoPin, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
int waktu, jarak;
digitalWrite(pinT, LOW);
delayMicroseconds(2);
digitalWrite(pinT, HIGH);
delayMicroseconds(10);
digitalWrite(pinT, LOW);
waktu = pulseIn(pinE,HIGH);
jarak = (waktu/2)/29.1;
Serial.print("Jarak : ");
Serial.print(jarak);
Serial.println(" cm");
//Serial.println(scale.get_units(), 1);
//delay(1000);
if (jarak<10) {
lcd.setCursor(0,0);
lcd.print("Tempat Sampah");
lcd.setCursor(0,1);
lcd.print("Penuh");
digitalWrite(pinLEDR,HIGH);
digitalWrite(pinLEDY, LOW);
digitalWrite(pinLEDG, LOW);
digitalWrite(buzzer, HIGH);
digitalWrite(servoPin, HIGH);
delay(1000);
tone(6,700,300);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Tempat Sampah");
lcd.setCursor(0,3);
lcd.print("Terisi");
digitalWrite(pinLEDR, LOW);
digitalWrite(pinLEDY,HIGH);
digitalWrite(pinLEDG, LOW);
digitalWrite(buzzer, HIGH);
digitalWrite(servoPin, HIGH);
delay(500);
tone(6,800,400);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Tempat Sampah");
lcd.setCursor(0,3);
lcd.print("Kosong");
digitalWrite(pinLEDR, LOW);
digitalWrite(pinLEDY, LOW);
digitalWrite(pinLEDG, HIGH);
digitalWrite(buzzer, HIGH);
digitalWrite(servoPin, HIGH);
delay(1000);
tone(6,900,500);
lcd.clear();
}else{
lcd.setCursor(0,0);
lcd.print("Dekatkan Sampah");
lcd.setCursor(0,1);
lcd.print("Pada Sensor");
digitalWrite(pinLEDR, HIGH);
digitalWrite(pinLEDY, HIGH);
digitalWrite(pinLEDG, HIGH);
digitalWrite(buzzer, HIGH);
digitalWrite(servoPin, HIGH);
delay(500);
noTone(6);
lcd.clear();
}
Serial.println(scale.get_units(), 1);
delay(1000);
}