Commit cc8d5c65 authored by Hugo Hörnquist's avatar Hugo Hörnquist

Screen, with more

parent 1793d21a
......@@ -4,6 +4,8 @@ import RPi.GPIO as g
import time
import threading
import Adafruit_CharLCD as LCD
# For lazer array
# if no bottle present then all are high
# if bottle at least one low
......@@ -14,26 +16,51 @@ import threading
g.setmode(g.BCM)
pins = [ 17 ]
btn_pin = 22
pins = [ 17, 27, 22, 10, 9, 11, 5, 6, 13, 19 ]
btn_pin = 4
test = False
lcd_rs = 12
lcd_en = 7
lcd_d4 = 8
lcd_d5 = 25
lcd_d6 = 24
lcd_d7 = 23
lcd_backlight = 2
# Define LCD column and row size for 16x2 LCD.
lcd_columns = 16
lcd_rows = 2
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight)
last_time = 0
risewait = threading.Event()
fallwait = threading.Event()
def callback(pin):
state = g.input(pin)
if state == g.LOW:
print "falling edge"
fallwait.set()
else:
print "rising edge"
risewait.set()
g.setup(btn_pin, g.IN, pull_up_down=g.PUD_DOWN)
g.setup(3, g.IN, pull_up_down=g.PUD_DOWN)
for pin in pins:
g.setup(pin, g.IN, pull_up_down=g.PUD_DOWN)
g.add_event_detect(pin, g.BOTH, callback=callback)
risewait = threading.Event()
fallwait = threading.Event()
def bottle_check(pins):
return not all([g.input(pin) for pin in pins])
if test:
return any([g.input(pin) for pin in pins])
else:
return not all([g.input(pin) for pin in pins])
class States:
no_hafv = 0
......@@ -65,42 +92,60 @@ def wait_fall():
# should these be the other way around?
def wait_for_bottle_place():
#return wait_rise()
return wait_fall()
return wait_rise() if test else wait_fall()
def wait_for_bottle_remove():
#return wait_fall()
return wait_rise()
while True:
if state == States.no_hafv:
print
print "Inget Hafv"
wait_for_bottle_place()
state = States.hafv_ready
elif state == States.hafv_ready:
print "Hafv redo"
out = g.wait_for_edge(btn_pin, g.RISING)
state = States.hafv_active
start_time = time_ms()
elif state == States.hafv_active:
print "currently Hafving"
if not bottle_check(pins):
print "Early start"
return wait_fall() if test else wait_rise()
def lcd_info(msg):
lcd.clear()
lcd.home()
lcd.set_cursor(0, 0)
lcd.message("Tid: {0} s".format(last_time))
lcd.set_cursor(0, 1)
lcd.message(msg)
def wait_btn():
return g.wait_for_edge(btn_pin, g.RISING, bouncetime=500)
#g.wait_for_edge(btn_pin, g.RISING)
if __name__ == "__main__":
while True:
if state == States.no_hafv:
print
print "Inget Hafv"
lcd_info("Vilar")
wait_for_bottle_place()
state = States.hafv_ready
elif state == States.hafv_ready:
print "Hafv redo"
lcd_info("Starta med knapp")
wait_btn()
state = States.hafv_active
start_time = time_ms()
elif state == States.hafv_active:
print "currently Hafving"
lcd_info("Klockar")
if not bottle_check(pins):
print "Early start"
lcd_info("Tjuvstart!")
wait_btn()
state = States.no_hafv
continue
print "Raise the bottle"
wait_for_bottle_remove()
print "BOTTLE RAISED"
print "Place back bottle after hafv"
wait_for_bottle_place()
print "BOTTLE PLACED"
end_time = time_ms()
t = (end_time - start_time) / 1000.0
print "Hafvtid: {0} s".format(t)
last_time = t
lcd_info("Avvakta")
state = States.no_hafv
continue
print "Raise the bottle"
wait_for_bottle_remove()
print "BOTTLE RAISED"
print "Place back bottle after hafv"
wait_for_bottle_place()
print "BOTTLE PLACED"
end_time = time_ms()
t = (end_time - start_time) / 1000.0
print "Hafvtid: {0} s".format(t)
state = States.no_hafv
time.sleep(1)
time.sleep(1)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment