Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!PRoject SmartTrash
- import RPi.GPIO as GPIO
- #from tkinter import *
- #import time
- import os, glob, time, datetime, socket
- from datetime import datetime
- import sys
- from hx711 import HX711
- GPIO.setmode(GPIO.BCM)
- trigger_pin = 18
- echo_pin = 23
- led1_pin = 20 #Merah
- led2_pin = 12
- Status1 = "Empty"
- Status2 = "Isi"
- Status3 = "Full"
- Stats = "Unavailable"
- CSVSplitter = ","
- a_pin = 19
- b_pin = 26
- DT = 21
- SCK = 16
- #------------------------New Updates------------------
- hx = HX711(21, 16)
- hx.set_reading_format("LSB", "MSB")
- hx.set_reference_unit(322)
- hx.reset()
- hx.tare()
- #------------------------___________------------------
- GPIO.setup(led1_pin, GPIO.OUT)
- GPIO.output(led1_pin, False)
- GPIO.setup(led2_pin, GPIO.OUT)
- GPIO.output(led2_pin, False)
- GPIO.setup(trigger_pin, GPIO.OUT)
- GPIO.setup(echo_pin, GPIO.IN)
- GPIO.setup(SCK, GPIO.OUT)
- diameter_tong = 50; #50cm
- #pengambilan waktu
- d = datetime.now()
- UDPSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
- #addr = ("localhost",5556)
- addr = ("192.168.0.101",5556)
- #------------------------Start Simulasi LoadCell------------------
- def readCount():
- Count = max(0, int(hx.get_weight(21)))
- hx.power_down()
- hx.power_up()
- time.sleep(0.5)
- return Count
- #----------------------------END SIMULASI-------------------------
- def send_trigger_pulse():
- GPIO.output(trigger_pin, True)
- time.sleep(0.0001)
- GPIO.output(trigger_pin, False)
- def wait_for_echo(value, timeout):
- count = timeout
- while GPIO.input(echo_pin) != value and count > 0:
- count = count - 1
- def get_distance():
- send_trigger_pulse()
- wait_for_echo(True, 10000)
- start = time.time()
- wait_for_echo(False, 10000)
- finish = time.time()
- pulse_len = finish - start
- distance_cm = pulse_len / 0.000058
- return (distance_cm)
- def cekStatus():
- Stats = "Unavailable"
- while (get_distance() < 7):
- time.sleep(2)
- if (get_distance()<7):#print(Status3)
- Stats = Status3
- return Stats
- if (get_distance() <= diameter_tong):
- #print(Status2)
- Stats = Status2
- return Stats
- elif (get_distance() > diameter_tong):
- #print(Status1)
- Stats = Status1
- return Stats
- return Stats
- def display():
- waktu = "{:%H:%M:%S %d-%m-%Y}".format(d)
- StatusTerkini = cekStatus()
- nilai_berat = readCount()
- #print("Nilai Berat : ",nilai_berat)
- berat = str(nilai_berat)
- if (cekStatus() == Status3):
- print "Status : ",cekStatus(),", Nilai : ",get_distance(),", Waktu : ",waktu, ", Berat : ",nilai_berat, "gr"
- UDPSock.sendto(("kel8"+ CSVSplitter + StatusTerkini + CSVSplitter + berat),addr)
- GPIO.output(led1_pin, False)
- GPIO.output(led2_pin, True)
- else:
- GPIO.output(led1_pin, True)
- GPIO.output(led2_pin, False)
- nilai_str = "{:.2f}".format(get_distance())
- nilai_berat_str = str(nilai_berat)
- f = open('sampah.log', 'a')
- #f.write('Nilai : ',woco_nilai, 'Status: ',StatusIdle)
- f.write('Status : ')
- f.write(StatusTerkini)
- f.write(' , ')
- f.write('Nilai : ')
- f.write(nilai_str)
- f.write(' , ')
- f.write('Berat : ')
- f.write(nilai_berat_str)
- f.write(' , ')
- f.write('Waktu : ')
- f.write(waktu)
- f.write('\n')
- f.close()
- while True:
- #print("cm=%f" % get_distance())
- #cekStatus()
- display()
- #time.sleep(1)
Advertisement
Add Comment
Please, Sign In to add comment