INPUT
In this assignment you had to write an application that interfaces with an input &/or output device
LESSON >> video recording - web
In this assignment you had to write an application that interfaces with an input &/or output device
LESSON >> video recording - web
In my case I used the Hello Light Board made at INPUT DEVICES week (assignment 10).
Remember the purpose of this board is to take input from a phototransistor and display it visually using a python program when the board is connected to a computer via a FTDI cable.
Here you can see how a phototransistor works.
I did a little modification of the program made by Toshiro Tabuchi.
The original idea of the program is to change the colour with the change of the light intensity. In my case I did not show any text as the rgb colors.
The complete code of the program is below:
# # hello.light.45.color2.py # receive and display light level with color # Author: Henry Sanchez | Fab Lab Tecsup # # Modified from: hello.color.py # Author: Toshiro Tabuchi - FAB LAB UNI # # Modified from: hello.light.45.py # Original Author: Neil Gershenfeld - CBA MIT 10/24/09 # # (c) Massachusetts Institute of Technology 2009 # Permission granted for experimental and personal use; # license for commercial sale available from MIT # from Tkinter import * import serial WINDOW = 500 # window size eps = 0.5 # filter time constant filter = 0.0 # filtered value def idle(parent,canvas): global filter, eps #--- idle routine ---# byte2 = 0 byte3 = 0 byte4 = 0 ser.flush() while 1: #--- find framing ---# byte1 = byte2 byte2 = byte3 byte3 = byte4 byte4 = ord(ser.read()) if ((byte1 == 1) & (byte2 == 2) & (byte3 == 3) & (byte4 == 4)): break low = ord(ser.read()) high = ord(ser.read()) value = 256*high + low filter = (1-eps)*filter + eps*value bw = int(filter/1024.0*255.0) colorBW = '#%02x%02x%02x' % (bw,bw,bw) colorRGB = '#%02x%02x%02x' % rainbow(int(filter),1024) x = int(.2*WINDOW + (.9-.2)*WINDOW*filter/1024.0) canvas.config(bg=colorRGB) canvas.itemconfigure("value",text="%.0f"%filter,fill=colorBW) canvas.itemconfigure("RGB",text=rainbow(int(filter),1024),fill=colorBW) canvas.itemconfigure("rgbhex",text=colorRGB,fill=colorBW) canvas.update() parent.after_idle(idle,parent,canvas) #--- Rainbow Color Function ---# def rainbow(val,rang): if val <= rang/5.0: col = (255,int(val/(rang/5.0)*255.0),0) elif val <= 2*rang/5.0: col = (int(255.0-(val-rang/5.0)/(rang/5.0)*255.0),255,0) elif val <= 3*rang/5.0: col = (0,255,int((val-2.0*rang/5.0)/(rang/5)*255.0)) elif val <= 4*rang/5.0: col = (0,int(255.0-(val-3.0*rang/5.0)/(rang/5.0)*255.0),255) else: col =(int((val-4.0*rang/5.0)/(rang/5.0)*255.0),0,255) return col #--- check command line arguments ---# if (len(sys.argv) != 2): print "command line: hello.light.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.light.45.color.py (q to exit)') root.bind('q','exit') canvas = Canvas(root, width=WINDOW, height=WINDOW, background='white') canvas.pack() #--- start idle loop ---# root.after(100,idle,root,canvas) root.mainloop()
>>> VIEWING
After save the python code you have to type in Ubuntu Terminal:
python hello.light.45.color2.py /dev/ttyUSB0