Orange Pi en Analog enheter med MCP3008 via SPI (3 / 3 steg)
Steg 3: Koden
Koden är ungefär samma som läraren, de förändringar som behövs var hur SPI bussen öppnas och den funktion som läser och skriver till chipet.
Så skapar du en fil spi_test.py:
#! / usr/bin/python
importera spi
Importera tid
importera os
# Öppna SPI buss
status = spi.openSPI(speed=1000000)
# Funktion för att läsa SPI data från MCP3008 chip
# Kanal måste vara ett heltal 0-7
def ReadChannel(channel):
ADC = spi.transfer((1,(8+channel) << 4,0))
data = ((adc [1] & 3) << 8) + adc [2]
returnera data
# Funktion för att konvertera data till jämn spänning,
# avrundade till angivet antal decimaler.
def ConvertVolts(data,places):
volt = (data * 3.3) / float(1023)
volt = round(volts,places)
returnera volt
# Funktion för att beräkna temperatur från
# TMP36 data, avrundat till angivna
# antal decimaler.
def ConvertTemp(data,places):
# ADC värde
# (ca) Temp volt
# 0 -50 0,00
# 78-25 0,25
# 155 0 0.50
# 233 25 0,75
# 310 50 1,00
# 465 100 1,50
# 775 200 2,50
# 1023 280 3,30
Temp = ((data * 330)/float(1023))-50
Temp = round(temp,places)
Return temp
# Definiera sensor kanaler
light_channel = 0
temp_channel = 1
# Definiera fördröjning mellan behandlingarna
Delay = 5
samtidigt sant:
# Läsa ljussensor data
light_level = ReadChannel(light_channel)
light_volts = ConvertVolts(light_level,2)
# Läsa temperatur sensordata
temp_level = ReadChannel(temp_channel)
temp_volts = ConvertVolts(temp_level,2)
Temp = ConvertTemp(temp_level,2)
# Skriv ut resultat
print "--------------------------------------------"
skriva ut ("ljus: {} ({V)".format(light_level,light_volts))}
skriva ut ("Temp: {} ({V}) {} deg C".format(temp_level,temp_volts,temp))
# Vänta innan du upprepar loop
Time.Sleep(delay)
Om du vill köra det skriver:
sudo python spi_test.py
All kredit går till Matt @ raspberry pi spion & Louis Thiery för SPI-Py-biblioteket