Skip to content
Snippets Groups Projects
Commit cc8d5c65 authored by Hugo Hörnquist's avatar Hugo Hörnquist
Browse files

Screen, with more

parent 1793d21a
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,8 @@ import RPi.GPIO as g ...@@ -4,6 +4,8 @@ import RPi.GPIO as g
import time import time
import threading import threading
import Adafruit_CharLCD as LCD
# For lazer array # For lazer array
# if no bottle present then all are high # if no bottle present then all are high
# if bottle at least one low # if bottle at least one low
...@@ -14,25 +16,50 @@ import threading ...@@ -14,25 +16,50 @@ import threading
g.setmode(g.BCM) g.setmode(g.BCM)
pins = [ 17 ] pins = [ 17, 27, 22, 10, 9, 11, 5, 6, 13, 19 ]
btn_pin = 22 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): def callback(pin):
state = g.input(pin) state = g.input(pin)
if state == g.LOW: if state == g.LOW:
print "falling edge"
fallwait.set() fallwait.set()
else: else:
print "rising edge"
risewait.set() risewait.set()
g.setup(btn_pin, g.IN, pull_up_down=g.PUD_DOWN) 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: for pin in pins:
g.setup(pin, g.IN, pull_up_down=g.PUD_DOWN) g.setup(pin, g.IN, pull_up_down=g.PUD_DOWN)
g.add_event_detect(pin, g.BOTH, callback=callback) g.add_event_detect(pin, g.BOTH, callback=callback)
risewait = threading.Event()
fallwait = threading.Event()
def bottle_check(pins): def bottle_check(pins):
if test:
return any([g.input(pin) for pin in pins])
else:
return not all([g.input(pin) for pin in pins]) return not all([g.input(pin) for pin in pins])
class States: class States:
...@@ -65,30 +92,46 @@ def wait_fall(): ...@@ -65,30 +92,46 @@ def wait_fall():
# should these be the other way around? # should these be the other way around?
def wait_for_bottle_place(): def wait_for_bottle_place():
#return wait_rise() return wait_rise() if test else wait_fall()
return wait_fall()
def wait_for_bottle_remove(): def wait_for_bottle_remove():
#return wait_fall() return wait_fall() if test else wait_rise()
return 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: while True:
if state == States.no_hafv: if state == States.no_hafv:
print print
print "Inget Hafv" print "Inget Hafv"
lcd_info("Vilar")
wait_for_bottle_place() wait_for_bottle_place()
state = States.hafv_ready state = States.hafv_ready
elif state == States.hafv_ready: elif state == States.hafv_ready:
print "Hafv redo" print "Hafv redo"
out = g.wait_for_edge(btn_pin, g.RISING) lcd_info("Starta med knapp")
wait_btn()
state = States.hafv_active state = States.hafv_active
start_time = time_ms() start_time = time_ms()
elif state == States.hafv_active: elif state == States.hafv_active:
print "currently Hafving" print "currently Hafving"
lcd_info("Klockar")
if not bottle_check(pins): if not bottle_check(pins):
print "Early start" print "Early start"
lcd_info("Tjuvstart!")
wait_btn()
state = States.no_hafv state = States.no_hafv
continue continue
print "Raise the bottle" print "Raise the bottle"
...@@ -102,5 +145,7 @@ while True: ...@@ -102,5 +145,7 @@ while True:
t = (end_time - start_time) / 1000.0 t = (end_time - start_time) / 1000.0
print "Hafvtid: {0} s".format(t) print "Hafvtid: {0} s".format(t)
last_time = t
lcd_info("Avvakta")
state = States.no_hafv state = States.no_hafv
time.sleep(1) time.sleep(1)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment