diff --git a/machine.py b/machine.py
index 4e0791bc901f91cd04cde99099d87892baed1131..f25fb3c7155da424b60d6103d85b4e8fe8542a51 100644
--- a/machine.py
+++ b/machine.py
@@ -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)