Raspberry pi analog till digital A/D omvandling styrelsen och GUI spänning display (8 / 9 steg)
Steg 8: Hela programmet (läsa A/D och store resultat i databasen)
smbus importera SMBus
från Tkinter import *
importera matematik
Importera tid
importera datetime
importera sqlite3
Conn = sqlite3.connect('database03.db')
c = conn.cursor()
keyword1 = "ch01"
keyword2 = "ch02"
keyword3 = "ch03"
keyword4 = "ch04"
JK = 0
upplösning = 3
Bus = SMBus(1)
analogDev = [0x68, 0x69, 0x6a, 0x6b] #address av A/D chip
Chan = [0x18, 0x38, 0x58, 0x78] #channels används på chip
resultat =]
def dataEntry():
c.Execute ("INSERT INTO adresult1 (ID, datumstämpel, keyword1, ch1, ch2, ch3, ch4) värden (?,?,?,?,?,?,?)" \
, (jk,date,keyword1,results[0],results[1],results[2],results[3]))
c.Execute ("INSERT INTO adresult2 (ID, datumstämpel, keyword2, ch1, ch2, ch3, ch4) värden (?,?,?,?,?,?,?)" \
, (jk,date,keyword1,results[4],results[5],results[6],results[7]))
c.Execute ("INSERT INTO adresult3 (ID, datumstämpel, keyword3, ch1, ch2, ch3, ch4) värden (?,?,?,?,?,?,?)" \
, (jk,date,keyword1,results[8],results[9],results[10],results[11]))
c.Execute ("INSERT INTO adresult4 (ID, datumstämpel, keyword4, ch1, ch2, ch3, ch4) värden (?,?,?,?,?,?,?)" \
, (jk,date,keyword1,results[12],results[13],results[14],results[15]))
Conn.commit()
def getadreading(address,adcConfig):
adcreading = bus.read_i2c_block_data(address,adcConfig)
h = adcreading [0]
l = adcreading [1]
s = adcreading [2]
medan (s & 128):
adcreading = bus.read_i2c_block_data(address,adcConfig)
h = adcreading [0]
l = adcreading [1]
s = adcreading [2]
t = (h << 8) | l
t = t / 16384.0
returnera t
def readValues():
för jag i intervallet (0,len(analogDev)):
för b i intervallet (0,len(chan)):
k = getadreading(analogDev[i],chan[b])
results.append (omgången (k, resolution))
datum = str(datetime.datetime.fromtimestamp(int(time.time())) .strftime ('%Y-%m-%d % H: % m %S'))
readValues()
h = 15 + (len(results)) * 20
w = 215 +(resolution * 10)
s = 22
fönster = Tk()
duk = Canvas (fönster, bredd = w, höjd = h, bg = "grå")
canvas.Pack()
för b i intervall (0, len(results)):
canvas.create_text (80, s+(b*20), text = "Analog läsa")
canvas.create_text (150, s+(b*20), text = b)
canvas.create_text (175, s+(b*20), text = "=")
window.Update()
resultat =]
samtidigt sant:
nu = time.time()
datum = str(datetime.datetime.fromtimestamp(int(time.time())) .strftime ('%Y-%m-%d % H: % m %S'))
readValues()
för jag i intervallet (0,len(results)):
canvas.create_rectangle (180, (s+(i*20)-10), w,s+((i*20)+10), disposition = "grå", fylla = "grå")
canvas.create_text (195, s+(i*20), ankare = W, text = results[i])
window.Update()
dataEntry()
JK = jk + 1
resultat =]
endTime = time.time()
Time.Sleep (5 - (endTime - nu))