class PT100(Sensor): def __init__(self): self.val = None self.tempList = [] self.spi = SPI(0, 0) self.spi.msh = 1000000 GPIO.setup(CS_PIN, GPIO.OUT) GPIO.output(CS_PIN, GPIO.HIGH) self.inter = Interpolate(x, y) def spi_read(self): GPIO.output(CS_PIN, GPIO.LOW) self.spi.xfer([REG_CONF, CNF_ONESHOT]) GPIO.output(CS_PIN, GPIO.HIGH) time.sleep(0.1) GPIO.output(CS_PIN, GPIO.LOW) self.spi.xfer([REG_LSB]) lsb = self.spi.readbytes(1) GPIO.output(CS_PIN, GPIO.HIGH) GPIO.output(CS_PIN, GPIO.LOW) self.spi.xfer([REG_MSB]) msb = self.spi.readbytes(1) GPIO.output(CS_PIN, GPIO.HIGH) err = (False, True)[lsb[0] & 1] adc = (msb[0] << 8 | lsb[0]) >> 1 return (err, adc) def update(self): value = 0 err = False for i in range(10): err, adc = self.spi_read() if err: break value = value + adc if err: #self.val=None return value = value / 10. res = (value / 2**15 * 400) self.tempList.append(self.inter(res)) if len(self.tempList) > 5: del self.tempList[0] tSum = 0 for t in self.tempList: tSum = tSum + t self.val = tSum / len(self.tempList)
#import Adafruit_BBIO.SPI as SPI from Adafruit_BBIO.SPI import SPI spi = SPI(0, 0) print(spi.xfer([0x01, 0x00])) print(spi.xfer([0x02, 0xFF]))
CNF_ONESHOT = 0b10100011 CNF_IDLE = 0b00000011 if __name__ == '__main__': spi = SPI(0, 0) spi.msh=1000000 GPIO.setup(CS_PIN,GPIO.OUT) GPIO.output(CS_PIN,GPIO.HIGH) inter=Interpolate(x,y) while True: GPIO.output(CS_PIN,GPIO.LOW) spi.xfer([REG_CONF,CNF_ONESHOT]) GPIO.output(CS_PIN,GPIO.HIGH) time.sleep(0.1) GPIO.output(CS_PIN,GPIO.LOW) spi.xfer([0x02]) lsb=spi.readbytes(1) GPIO.output(CS_PIN,GPIO.HIGH) GPIO.output(CS_PIN,GPIO.LOW) spi.xfer([0x01]) msb=spi.readbytes(1) GPIO.output(CS_PIN,GPIO.HIGH) GPIO.output(CS_PIN,GPIO.LOW)
from Adafruit_BBIO.SPI import SPI import struct import time spi = SPI(0,0) spi.mode = 1 spi.msh = 300000 spi.xfer([0b00011000, 0x02]) def decode_sent_command(ser_cmd): cmd_bits = (ser_cmd & (((1<<6) - 1)<<10))>>10 data_bits = ser_cmd & ((1<<10)-1) return bin(cmd_bits)[2:], data_bits def send_cmd(cmd,data): ser_cmd = (cmd << 10) | (data & ((1<<10)-1)) w0 = ser_cmd >> 8 w1 = ser_cmd & ((1<<8)-1) return [w0, w1] # write to RDAC spi.xfer(list(struct.unpack('BB', struct.pack('>H', 1 << 10 | 0)))) # read RDAC spi.xfer(list(struct.unpack('BB', struct.pack('>H', 0b10 << 10 | 0)))) # read Control register spi.xfer(list(struct.unpack('BB', struct.pack('>H', 0b111 << 10 | 0)))) spi.readbytes(2)
from Adafruit_BBIO.SPI import SPI import Adafruit_BBIO.GPIO as GPIO spi = SPI(1,0) #Send something print(spi.xfer([0x41])) #print(spi.xfer2([32, 11, 110, 22, 220])) #print(spi.xfer2([0x41])) #print(spi.xfer([32, 11, 110, 22, 220])) spi.close() #Only need to execute one of the following lines: #spi = SPI(bus, device) #/dev/spidev<bus>.<device> #spi = SPI(0,0) #/dev/spidev1.0 #spi = SPI(0,1) #/dev/spidev1.1 #spi = SPI(1,0) #/dev/spidev2.0 #spi = SPI(1,1) #/dev/spidev2.1