Forum: PC-Programmierung Phyton Programm Hilfe


von Florian (Gast)


Lesenswert?

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='#000000888').grid(row=2,column=0,sticky=E+W+N+S)
92
logo = PhotoImage(file = '3D-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='#000888000',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='#000000888',fg='White',font=big,anchor=E).grid(row=2,column=0,sticky=E+W)
104
Label(tf, textvariable=TempText, bg='#000000888',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='#000888000',fg='White',font=big,anchor=E).grid(row=3,column=0,sticky=E+W)
110
Label(tf, textvariable=RangeText, bg='#000888000',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='#000888888',fg='White',font=heading,anchor=E).grid(row=5,column=0,sticky=E+W)
128
Label(tf, textvariable=GCText, bg='#000888888',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)


Lesenswert?

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

von Walter T. (nicolas)


Lesenswert?

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)


Lesenswert?

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.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.