Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Programma per il controllo di Arduino da
- # Raspberry Pi tramite Python + Firmata
- #
- # Ispirato dal progetto di Stewart C. Russell's
- # pubblicato in The MagPi, n. 7 (Nov. 2012)
- # http://www.themagpi.com/
- import pyfirmata
- import os
- from Tkinter import *
- # controllo esistenza dispositivo passato come argomento
- if len(sys.argv) < 2:
- sys.exit('Utilizzo: %s nome_device_seriale' % sys.argv[0])
- if not os.path.exists(sys.argv[1]):
- sys.exit('ERROR: La porta %s non sembra connessa!' % sys.argv[1])
- # connessione alla scheda
- device_port = str(sys.argv[1])
- board = pyfirmata.Arduino(device_port)
- myiter = pyfirmata.util.Iterator(board)
- myiter.start()
- # impostazione dei pin:
- # a(nalogici) / d(igitali) : numero pin : i(nput) / p(wm) / s(ervo) / o(output)
- pin0 = board.get_pin('a:0:i')
- pin3 = board.get_pin('d:3:p')
- # salta se non e' disponibile il dato
- while pin0.read() is None:
- pass
- # lettura del valore in uscita dal partitore di tensione
- # come percentuale di Analog REF
- def get_potenziometro():
- label_potenziometro = "Partizione resistenza:\n%3.1f %% di Vref" % (pin0.read()*100.0)
- label.config(text = label_potenziometro)
- root.after(500, get_potenziometro)
- # impostazione della percentuale PWM per il pilotaggio del led
- def set_led(x):
- pin3.write(float(x) / 100.0)
- # chiusura della finestra
- def cleanup():
- pin0.read()
- pin3.write(0)
- board.exit()
- root.destroy()
- # disegno dell'interfaccia grafica mettendo uno sotto l'altro
- # i blocchi della barra di scorrimento (scale) per il led,
- # un separatore (frame) e l'etichetta (label) con il valore
- # acquisito.
- root = Tk()
- root.wm_title("ArduPiFirmata 1.0")
- root.wm_protocol("WM_DELETE_WINDOW",cleanup)
- scale = Scale(root, command = set_led, orient = HORIZONTAL, length = 300, label = 'Luminosita\' led (in %):')
- scale.pack(anchor = 'nw')
- separator = Frame(height = 20, bd = 1, relief = SUNKEN)
- separator.pack(anchor = 'nw')
- label = Label(root)
- label.pack(anchor = 'nw')
- # avvio acquisizione periodica dall'input analogico
- root.after(500, get_potenziometro)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement