von
Florian (Gast)
23.09.2018 23:38
Hallo
ich hab mir für meinen Raspberry Pi3 ein I/O Modul von PiPlates gekauft.
Auf der Herstellerseite sind einige Beispielskripts aufgeführt, alle in
Phyton. Leider hab ich noch 0 Erfahrung in Python Programmierung
Das Skript läuft, ich möchte es aber um mich Schritt für SChritt mit der
Sprache vertrautzumachen auf das notwendigste minimieren. Momentan
möchte ich nur den Temperatursensor auf Kanal 1 einlesen 1 adata = DAQC . getADCall ( 0 )
2 val = round (( adata [ 1 ] - 2 . 73 ) * 100 , 2 )
und den entsprechenden Wert in einer Schleife mittels print ausgeben.
Kann mich hier jemand unterstützen? Hier das komplette Skript:
1
2 import piplates . DAQCplate as DAQC
3 import RPi . GPIO as GPIO
4 import time
5 from Tkinter import *
6 import tkFont
7
8 def task () :
9 global lastT
10 global lastR
11 global lastSW
12 global swMode
13 global GC
14 adata = DAQC . getADCall ( 0 )
15 val = round ( DAQC . getADC ( 0 , 8 ), 1 )
16 Power5Text . set ( val )
17
18 val = round (( adata [ 1 ] - 2 . 73 ) * 100 , 2 )
19 val = 0 . 2 * val + 0 . 8 * lastT
20 lastT = val
21 TempText . set ( str ( "{:>3.1f}" . format ( val )) + 'C' )
22
23 val = round ( adata [ 2 ] * 12 . 21 / 1 . 636 , 1 )
24 Power12Text . set ( val )
25
26 val = round ( adata [ 0 ] / 4 . 096 * 100 , 1 )
27 FanText . set ( str ( val ) + '%' )
28 DAQC . setPWM ( 0 , 0 , int ( val * 1024 / 100 ))
29
30 val = DAQC . getRANGE ( 0 , 6 , 'c' )
31 if isinstance ( val , float ) :
32 if val > 100 :
33 val = 99 . 9
34 else :
35 val = 0
36 val = round ( val , 1 )
37 val = 0 . 8 * lastR + 0 . 2 * val
38 lastR = val
39 RangeText . set ( str ( "{:>2.1f}" . format ( val )) + ' cm ' )
40
41 lamp = 0
42 if ( DAQC . getDINbit ( 0 , 2 ) == 1 ) :
43 lamp = 32
44
45 sw = DAQC . getSWstate ( 0 )
46 if ( sw == 1 ) and ( lastSW == 0 ) :
47 lastSW = 1
48 swMode = not swMode
49 if swMode :
50 GCmode . set ( ' Binary Code : ' )
51 else :
52 GCmode . set ( ' Grey Code : ' )
53 if ( sw == 0 ) and ( lastSW == 1 ) :
54 lastSW = 0
55
56
57 val = ( int ( adata [ 7 ] * 32 / 4 . 096 ))
58 if swMode == 0 :
59 GCText . set ( GC [ val ])
60 num = GC [ val ]
61 else :
62 GCText . set ( val )
63 num = val
64 DAQC . setDOUTall ( 0 ,( num + lamp ))
65
66 root . after ( 100 , task )
67
68 def shutdown () :
69 DAQC . CLOSE ()
70 root . destroy ()
71 root . quit ()
72
73
74 root = Tk ()
75 root . config ( bg = "black" )
76 root . attributes ( "-fullscreen" , True )
77
78 #swidth=root.winfo_screenwidth()
79 #sheight=root.winfo_screenheight()
80
81 ##Create Fonts
82 big = tkFont . Font ( family = ' Helvetica ' , size = 100 , weight = ' bold ' )
83 title = tkFont . Font ( family = ' Helvetica ' , size = 60 , weight = ' bold ' )
84 heading = tkFont . Font ( family = ' Helvetica ' , size = 55 , weight = ' bold ' )
85 normal = tkFont . Font ( family = ' Helvetica ' , size = 20 , weight = ' bold ' )
86
87 ##Create Gray Code
88 GC = [ 0x00 , 0x01 , 0x03 , 0x02 , 0x06 , 0x07 , 0x05 , 0x04 , 0x0C , 0x0D , 0x0F , 0x0E , 0x0A , 0x0B , 0x09 , 0x08 , 0x18 , 0x19 , 0x1B , 0x1A , 0x1E , 0x1F , 0x1D , 0x1C , 0x14 , 0x15 , 0x17 , 0x16 , 0x12 , 0x13 , 0x11 , 0x10 ]
89
90
91 tf = Frame ( root , padx = 4 , pady = 4 , bd = 2 , relief = ' sunken ' , bg = '# 000000 888 ' ). grid ( row = 2 , column = 0 , sticky = E + W + N + S )
92 logo = PhotoImage ( file = ' 3 D - ppLogo - WIDE . gif ' )
93 pp = Label ( tf , image = logo , bg = "White" ). grid ( row = 0 , column = 0 , columnspan = 2 )
94 Label ( tf , text = "DAQCplate Data Acquisition and Control" , bg = ' White ' , fg = '# 000 888000 ' , font = title , anchor = CENTER ). grid ( row = 1 , column = 0 , columnspan = 2 , sticky = E + W )
95
96 lastSW = 1
97 lastMode = 0
98 swMode = 0
99 lastT = 25
100
101 TempText = StringVar ()
102 TempText . set ( ' 25 ' )
103 Label ( tf , text = "Temperature: " , bg = '# 000000 888 ' , fg = ' White ' , font = big , anchor = E ). grid ( row = 2 , column = 0 , sticky = E + W )
104 Label ( tf , textvariable = TempText , bg = '# 000000 888 ' , fg = ' White ' , font = big , anchor = W ). grid ( row = 2 , column = 1 , sticky = E + W )
105
106 lastR = 140
107 RangeText = StringVar ()
108 RangeText . set ( ' 0 . 0 ' )
109 Label ( tf , text = "Range: " , bg = '# 000 888000 ' , fg = ' White ' , font = big , anchor = E ). grid ( row = 3 , column = 0 , sticky = E + W )
110 Label ( tf , textvariable = RangeText , bg = '# 000 888000 ' , fg = ' White ' , font = big , anchor = W ). grid ( row = 3 , column = 1 , sticky = W + E )
111
112 FanText = StringVar ()
113 FanText . set ( ' 0 . 0 ' )
114 Label ( tf , text = "Fan Speed: " , bg = '# 888000000 ' , fg = ' White ' , font = big , anchor = E ). grid ( row = 4 , column = 0 , sticky = E + W )
115 Label ( tf , textvariable = FanText , bg = '# 888000000 ' , fg = ' White ' , font = big , anchor = W ). grid ( row = 4 , column = 1 , sticky = W + E )
116
117 Power5Text = StringVar ()
118 Power12Text = StringVar ()
119 GCText = StringVar ()
120 GCText . set ( '0' )
121 GCmode = StringVar ()
122 GCmode . set ( ' Grey Code : ' )
123 Label ( tf , text = "5VDC Voltage: " , bg = '# 888888000 ' , fg = ' White ' , font = heading , anchor = E ). grid ( row = 6 , column = 0 , sticky = E + W )
124 Label ( tf , textvariable = Power5Text , bg = '# 888888000 ' , fg = ' White ' , font = heading , anchor = W ). grid ( row = 6 , column = 1 , sticky = W + E )
125 Label ( tf , text = "12VDC Voltage: " , bg = '# 888000888 ' , fg = ' White ' , font = heading , anchor = E ). grid ( row = 7 , column = 0 , sticky = E + W )
126 Label ( tf , textvariable = Power12Text , bg = '# 888000888 ' , fg = ' White ' , font = heading , anchor = W ). grid ( row = 7 , column = 1 , sticky = W + E )
127 Label ( tf , textvariable = GCmode , bg = '# 000 888888 ' , fg = ' White ' , font = heading , anchor = E ). grid ( row = 5 , column = 0 , sticky = E + W )
128 Label ( tf , textvariable = GCText , bg = '# 000 888888 ' , fg = ' White ' , font = heading , anchor = W ). grid ( row = 5 , column = 1 , sticky = W + E )
129 close_button = Button ( tf , text = "X" , command = shutdown ). grid ( row = 7 , column = 1 , sticky = E )
130
131 root . wm_protocol ( "WM_DELETE_WINDOW" , shutdown )
132 root . after ( 100 , task )
133 root . mainloop ()
von
Yalu X.
(yalu )
(Moderator )
24.09.2018 07:41
Vermutlich so:
1 import piplates.DAQCplate as DAQC # Modul importieren
2
3 while True: # endlos wiederholen
4 adata = DAQC.getADC(0, 1) # ADC Adresse 0 Kanal 1 einlesen
5 val = round((adata - 2.73) * 100, 2) # umrechnen
6 print(val) # ausgeben
Florian schrieb:
> Das Skript läuft, ich möchte es aber um mich Schritt für SChritt mit der
> Sprache vertrautzumachen auf das notwendigste minimieren.
Ein anderer Weg, Dich mit Python vertraut zu machen, wäre "Automate the
Boring Stuff with Python", das aus mir völlig unverständlichen Gründen
bei etlichen amerikanischen Hochschulen ergoogelbar auf der Website
liegt.
von
Florian (Gast)
24.09.2018 14:56
Yalu X. schrieb:
> Vermutlich so:
> import piplates.DAQCplate as DAQC # Modul importieren
>
> while True: # endlos wiederholen
> adata = DAQC.getADC(0, 1) # ADC Adresse 0 Kanal 1 einlesen
> val = round((adata - 2.73) * 100, 2) # umrechnen
> print(val) # ausgeben
super, das Skript funktioniert auf Anhieb. Vielen Dank für die Mühe!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.