Jorim
Posts: 5
Joined: Wed May 06, 2015 7:52 pm

PWM uitlezen met firmata of tkinter

Wed May 06, 2015 8:13 pm

Hallo allemaal,
Ik zit met een probleempje waar ik niet uit kom.
Via een knop in het hoofdmenu wil ik een ander programma opstarten waar ik de helderheid van mijn LED's kan inregelen.
Dit lukt tot zover. Ik kan vervolgens ook weer terug naar het hoofdmenu en de leds blijven gewoon aan. Het probleem is alleen dat, wanneer ik weer terug ga naar het "ledmenu", de PWM weer op 0 gezet word.
Ik wil eigenlijk dat de huidige PWM eerst wordt uitgelezen en "geset" wordt voor het programma wordt gestart.
Dit is de code voor het hoofdmenu:

Code: Select all

#imports:
import pyfirmata
import Tkinter 
from Tkinter import *
import os

#firmata information:
board = pyfirmata.Arduino('/dev/ttyUSB0')
#Analog input pin
pin0 = board.get_pin('a:0:i')

#Digital output pins PWM
pin3 = board.get_pin('d:3:p')
pin5 = board.get_pin('d:5:p')
pin6 = board.get_pin('d:6:p')

#root
root2 = Tk()
root2.title("Hoofdmenu")
root2.minsize(400, 10)
root2.maxsize(400, 200)

def Led_menu():
		root2.destroy() 
		os.system('python LedMenu.py')
		
#hoofdprogramma:
		#Knop led menu
button = Button(root2,
					text="Led menu",
					command=Led_menu)
button.pack(anchor=NE)
root2.mainloop()
Dit is de code voor het ledmenu:

Code: Select all

import pyfirmata
#import Tkinter 
from Tkinter import *
import os

board = pyfirmata.Arduino('/dev/ttyUSB0')

#Analog input pin
pin0 = board.get_pin('a:0:i')

#Digital output pins PWM
pin3 = board.get_pin('d:3:p')
pin5 = board.get_pin('d:5:p')
pin6 = board.get_pin('d:6:p')

#Defs open programs
def Main_menu():
		root.destroy()
		os.system('python main_menu.py')
		

#defs
def set_brightness_blue(x):
#	pin3.read()
	pin3.write(float(x) / 100.0)
def set_brightness_red(x):
	pin5.write(float(x) / 100.0)
def set_brightness_green(x):
	pin6.write(float(x) / 100.0)


def Led_off():
	scale1.set(0)
	scale2.set(0)
	scale3.set(0)
	
root = Tk()
root.title("Led menu")

class App:
	def __init__(self,master):
		frame = Frame(master)
		frame.pack()
		self.button = Button(frame,
							text="Uit",
							command=Led_off, )
		self.button.pack(side=LEFT)
  		
		self.button2 = Button(frame,
							text="Hoofd menu",
							command=Main_menu,
							)
		self.button2.pack(side=LEFT)
		
scale1 = Scale(root, 
		   command = set_brightness_blue,
		   orient = HORIZONTAL,
		   length  = 400,
		   label = 'Blue',)
scale1.pack(anchor = CENTER)

scale2 = Scale(root,
		   command = set_brightness_red,
		   orient = HORIZONTAL,
		   length  = 400,
		   label = 'Red')
scale2.pack(anchor = CENTER)
scale3 = Scale(root,
		   command = set_brightness_green,
		   orient = HORIZONTAL,
		   length  = 400,
		   label = 'Green')
scale3.pack(anchor = CENTER)

label = Label(root)
label.pack(anchor = "nw")
app = App(root)
root.mainloop()
Kan iemand mij uitleggen hoe dat moet?
Alvast heel erg bedankt.

Canedje
Posts: 265
Joined: Thu Mar 26, 2015 7:18 am

Re: PWM uitlezen met firmata of tkinter

Thu May 07, 2015 9:34 am

Ik weet niet of dit is wat je bedoelt en je helpt.
Maar wat ik doe in gevallen dat informatie tussen twee programma's gedeelt moet worden is het maken van een setpoint.txt file welke ik door beide programma's laat lezen en/of schrijven met waardes die bewaard of overgenomen moet worden

Jorim
Posts: 5
Joined: Wed May 06, 2015 7:52 pm

Re: PWM uitlezen met firmata of tkinter

Thu May 07, 2015 10:10 am

Dank je voor je reactie Canedje.
Dat helpt me wel deels inderdaad.
zoiets had ik ook in gedachte, maar ik weet niet hoe ik mijn PWM uit kan lezen.
Ik ben al dagen aan het zoeken naar voorbeelden, maar het lijkt er op dat ik de enige ben die dit wil weten in de setting zoals ik het heb.
Heb je misschien een voorbeeld van een setpoint.txt? Misschien dat dat me dan wat verder helpt.

Canedje
Posts: 265
Joined: Thu Mar 26, 2015 7:18 am

Re: PWM uitlezen met firmata of tkinter

Thu May 07, 2015 10:34 am

Je geeft toch ergens in je programma de PWM waarde op neem ik aan om de helderheid te bepalen?
Als je die waarde bewaart en wegschrijft in je setpointfile en uitleest in het andere programma om de LED aan te sturen.?

Return to “Nederlands”