#
# hello.slider.py
#
# use slider to set FTDI output to set PWM value on ATtiny


from Tkinter import *
import serial
from time import sleep

WINDOW = 600 # window size
eps = 0.5 # filter time constant
filter1 = 0.0 # filtered value
filter2 = 0.0 # filtered value
filter3 = 0.0 # filtered value

F1 = chr(1)
F2 = chr(2)
F3 = chr(3)
F4 = chr(4)

def idle(parent,canvas):
   #output current value
   PWM_val = val.get()
   PWM_byte = chr(PWM_val)
  
   
  # ser.write(PWM_byte); # write PWM value
  

   parent.after_idle(idle,parent,canvas)

def get_val(self):
   PWM_val = val.get()
   PWM_byte = chr(PWM_val)
   PWM_hex = hex(PWM_val)

   #send framing
#   ser.write(F1)
 #  sleep(0.01)
  # ser.write(F2)
  # sleep(0.01)
  # ser.write(F3)
  # sleep(0.01)
  # ser.write(F4)
   #send byte
   ser.write(PWM_byte)

#   print type(PWM_val)
#   print type(PWM_byte)
#   test =  hex(PWM_byte[0]
   print PWM_hex
   

#
#  check command line arguments
#
if (len(sys.argv) != 2):
   print "command line: hello.load.45.py serial_port"
   sys.exit()
port = sys.argv[1]
#
# open serial port
#
ser = serial.Serial(port,9600)
ser.setDTR()
#
# set up GUI
#
root = Tk()
root.title('hello.load.45.py (q to exit)')
root.bind('q','exit')
canvas = Canvas(root, width=WINDOW, height=.75*WINDOW, background='white')
#
canvas.create_text(.1*WINDOW,.125*WINDOW,text="1",font=("Helvetica", 24),tags="text1",fill="#0000b0")

val = IntVar()
Slider_1 = Scale(root, to=255, variable = val, command = get_val)
Slider_1.pack(ancho=CENTER)

#initialize PWM byte and 9600 baud delays
PWM_val = 0
PWM_byte = chr(PWM_val)
bitUS = 102
halfbitUS = bitUS/2
# start idle loop
#
root.after(100,idle,root,canvas)
   
root.mainloop()
