Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // UCOK --------- 25 Oktober 2020
- //
- int maxval = 0;
- uint32_t lastSample = 0;
- int period = 1000;
- unsigned long time_now = 0;
- boolean kecil_selesai;
- boolean sedang_selesai;
- boolean besar_selesai;
- #include <Servo.h>
- Servo myservo;
- Servo myservo2;
- float databaru;
- float dataMax;
- float dataMin;
- #include <HX711_ADC.h>
- #include <EEPROM.h>
- int statusalat =0; //0 = Kosong, 1 = Kecil, 2 = Sedang, 3= Besar
- const int HX711_dout = A4; //mcu > HX711 dout pin
- const int HX711_sck = A5; //mcu > HX711 sck pin
- //HX711 constructor:
- HX711_ADC LoadCell(HX711_dout, HX711_sck);
- const int calVal_eepromAdress = 0;
- long t;
- boolean bol_terseleksi;
- float berat_terakhir =0;
- float berat_sekarang =0;
- /*define the sensor's pins*/
- uint8_t trigPin = 3;
- uint8_t echoPin = 2;
- //pinMode(12, INPUT);
- //pinMode(11, INPUT);
- unsigned long timerStart = 0;
- int TIMER_TRIGGER_HIGH = 10;
- int TIMER_LOW_HIGH = 2;
- float timeDuration, distance;
- float tinggipermukaan = 10.50;
- /*The states of an ultrasonic sensor*/
- enum SensorStates {
- TRIG_LOW,
- TRIG_HIGH,
- ECHO_HIGH
- };
- SensorStates _sensorState = TRIG_LOW;
- void startTimer() {
- timerStart = millis();
- }
- bool isTimerReady(int mSec) {
- return (millis() - timerStart) < mSec;
- }
- void setup() {
- sedang_selesai==true;
- besar_selesai==true;
- Serial.begin(57600); delay(10);
- Serial.println();
- Serial.println("Starting...");
- myservo.attach(10);
- myservo2.attach(9);
- pinMode(11, INPUT);// set pin as input
- pinMode(12, INPUT);// set pin as input
- pinMode(trigPin, OUTPUT);
- pinMode(echoPin, INPUT);
- tutupservo1();
- tutupservo2();
- delay (1000);
- bukaservo1();
- bukaservo2();
- delay(1000);
- LoadCell.begin();
- float calibrationValue; // calibration value (see example file "Calibration.ino")
- calibrationValue = 262.64; // uncomment this if you want to set the calibration value in the sketch
- #if defined(ESP8266)|| defined(ESP32)
- //EEPROM.begin(512); // uncomment this if you use ESP8266/ESP32 and want to fetch the calibration value from eeprom
- #endif
- EEPROM.get(calVal_eepromAdress, calibrationValue); // uncomment this if you want to fetch the calibration value from eeprom
- long stabilizingtime = 500; // preciscion right after power-up can be improved by adding a few seconds of stabilizing time
- boolean _tare = false; //set this to false if you don't want tare to be performed in the next step
- LoadCell.start(stabilizingtime, _tare);
- if (LoadCell.getTareTimeoutFlag()) {
- Serial.println("Timeout, check MCU>HX711 wiring and pin designations");
- while (1);
- }
- else {
- LoadCell.setCalFactor(calibrationValue); // set calibration value (float)
- Serial.println("Startup is complete");
- }
- LoadCell.tareNoDelay();
- }
- void loop() {
- static boolean newDataReady = 0;
- const int serialPrintInterval = 500; //increase value to slow down serial print activity
- // check for new data/start next conversion:
- if (LoadCell.update()) newDataReady = true;
- // get smoothed value from the dataset:
- if (newDataReady) {
- if (millis() > t + serialPrintInterval) {
- float i = LoadCell.getData();
- // Serial.print("Berat: ");
- // Serial.println(i);
- newDataReady = 0;
- berat_sekarang = i;
- Serial.print("Berat Sekarang: ");
- Serial.println(i);
- t = millis();
- //============================================================================
- int detect1 = digitalRead(11);
- if(detect1 == LOW){
- bukaservo1();
- bukaservo2();
- Serial.print("Mulai Menimbang ");
- dataMax = berat_sekarang;
- Serial.print("Berat Awal: ");
- Serial.print(berat_sekarang);
- }
- int detect2 = digitalRead(12);
- if(detect2 == LOW){
- if (berat_sekarang > dataMax) {
- dataMax = berat_sekarang;
- }else{
- dataMax = dataMax;
- }
- Serial.println("Selesai Menimbang");
- Serial.print("Berat Max :");
- Serial.println(dataMax);
- if ((dataMax > 40) && (dataMax< 100)){
- Serial.print ("Sedang: ");
- tutupservo2();
- dataMax = 0;
- }
- if (dataMax > 100){
- Serial.print ("Besar ");
- tutupservo1();
- dataMax = 0;
- }
- }
- }
- // Akhir bagian timbangan ====================================================
- // Akhir sensor Infra Red =======================================================
- // Cek Serial Command
- if (Serial.available() > 0) {
- float i;
- char inByte = Serial.read();
- if (inByte == 't') LoadCell.tareNoDelay();
- if (inByte == 'a') bukaservo1();
- if (inByte == 'b') tutupservo1();
- if (inByte == 'c') bukaservo2();
- if (inByte == 'd') tutupservo1();
- }
- if (LoadCell.getTareStatus() == true) {
- Serial.println("Proses Kalibrasi Selesai");
- }
- } // Akhir Pembacaan Timbangan
- }
- // Akhir Void Loop =============================
- void bukaservo1(){
- myservo.write(100);
- Serial.println ("Buka Servo_1");
- }
- void tutupservo1(){
- myservo.write(180);
- Serial.println ("Tutup Servo_1");
- // delay(3000);
- // myservo.write(100);
- //besar_selesai= true;
- //sedang_selesai= true;
- }
- void bukaservo2(){
- myservo2.write(100);
- Serial.println ("Buka Servo_2");
- }
- void tutupservo2(){
- myservo2.write(180);
- Serial.println ("Tutup Servo_2");
- // delay(3000);
- // myservo2.write(100);
- // sedang_selesai= true;
- //besar_selesai= true;
- }
Advertisement
Add Comment
Please, Sign In to add comment