Example #1
0
 def __init__(self, channel=0, bus=0, device=0):
     self.channel = channel
     self.BPM = 0
     self.adc = Adafruit_MCP3008.MCP3008(
         spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
lcd_d5 = digitalio.DigitalInOut(board.D16)
lcd_d6 = digitalio.DigitalInOut(board.D20)
lcd_d7 = digitalio.DigitalInOut(board.D21)
lcd_backlight = digitalio.DigitalInOut(board.D4)
red = digitalio.DigitalInOut(board.D13)
green = digitalio.DigitalInOut(board.D19)
blue = digitalio.DigitalInOut(board.D26)
lcd = characterlcd.Character_LCD_RGB(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns,lcd_rows, red, green, blue, lcd_backlight)
lcd.color = [0, 100, 0]  # green color

# MCP3008 initialization
CLK = 18
MISO = 23
MOSI = 24
CS = 27
mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)

# Node information
Node_Name = socket.gethostname()
Node_Name = Node_Name.replace(" ", "-")

# Set logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
timeLog = time.strftime("%d-%m-%Y_%H-%M-%S")
timeLog = timeLog.replace(" ", "-")
logFilename = "/home/pi/Logs/" + Node_Name + "_ReadingsLog_" + timeLog + ".log"
handler = logging.FileHandler(logFilename)
logger.addHandler(handler)

# Readings time
Example #3
0
 def __init__(self, spi_port=0, spi_device=0):
     self.mcp = Adafruit_MCP3008.MCP3008(
         spi=SPI.SpiDev(spi_port, spi_device))
Example #4
0
#setup GPIO input pins
GPIO.setup(reset, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(frequency_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(stop, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(display, GPIO.IN, pull_up_down=GPIO.PUD_UP)

#setup GPIO io pins for SPI interface
GPIO.setup(SPIMOSI, GPIO.OUT)
GPIO.setup(SPIMISO, GPIO.IN)
GPIO.setup(SPICLK, GPIO.OUT)
GPIO.setup(SPICS, GPIO.OUT)

#setup MCP3008
mcp = Adafruit_MCP3008.MCP3008(clk=SPICLK,
                               cs=SPICS,
                               mosi=SPIMOSI,
                               miso=SPIMISO)


#function declarations
def reset_callback(pin):
    reset_func()


def reset_func():
    #get global variables
    global haveStartTime

    #reset variables
    haveStartTime = 0
Example #5
0
def beginAcq(numChannels, duration, fileName):
    SPI_PORT = 0
    SPI_DEVICE = 0
    mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))

    gpio.setmode(gpio.BCM)
    gpio.setup(26, gpio.OUT)
    gpio.output(26, gpio.LOW)
    gpio.output(26, gpio.HIGH)

    t1 = time.time() + duration
    # print(t1)
    with open(fileName, 'w+') as f:
        f.write('')

    print('Reading ADS8668 values, press Ctrl-C to quit...')

    # Main Loop
    while (time.time() < t1):
        values = []
        tempTime = [0]
        tempTime[0] = round(time.time() - t1 + duration, 4)

        if numChannels == 1:
           # Channel 1
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            values0[0] = ((float(values0[0]) - 2046) / 197)   # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)   # ADC 2

            # Append samples to array
            values.extend(values0[0:2])
            values.extend(tempTime)

        elif (numChannels == 2):
            # Channel 1
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4

            # Append samples to array
            values.extend(values0)
            values.extend(tempTime)

        elif numChannels == 3:
            # Channel 1
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            # Channel 3
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Append Samples to array
            values.extend(values0)
            values.extend(values1[0:2])
            values.extend(tempTime)

        elif numChannels == 4:
            # Channel 1
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            # Channel 3
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(tempTime)

        elif numChannels == 5:
            # Channel 1
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            # Channel 3
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            # Channel 5
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2[0:2])
            values.extend(tempTime)

        elif numChannels == 6:
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            # Channel 1
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            # Channel 3
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            # Channel 5
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Channel 6
            values2[2] = ((float(values2[2]) - 1535) / 200)
            values2[3] = ((float(values2[3]) - 1535) / 200)
            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2)
            values.extend(tempTime)

        elif numChannels == 7:
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            # Channel 1
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            # Channel 3
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            # Channel 5
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Channel 6
            values2[2] = ((float(values2[2]) - 1535) / 200)
            values2[3] = ((float(values2[3]) - 1535) / 200)
            mcp.read_all_ch(0xCC)
            values3 = mcp.read_all_ch(0xCC)
            # Channel 7
            values3[0] = ((float(values3[0]) - 1520) / 205)
            values3[1] = ((float(values3[1]) - 1520) / 205)
            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2)
            values.extend(values3[0:2])
            values.extend(tempTime)
        elif numChannels == 8:
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            # Channel 1
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            # Channel 3
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            # Channel 5
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Channel 6
            values2[2] = ((float(values2[2]) - 1535) / 200)
            values2[3] = ((float(values2[3]) - 1535) / 200)
            mcp.read_all_ch(0xCC)
            values3 = mcp.read_all_ch(0xCC)
            # Channel 7
            values3[0] = ((float(values3[0]) - 1520) / 205)
            values3[1] = ((float(values3[1]) - 1520) / 205)
            # Channel 8
            values3[2] = ((float(values3[2]) - 2045) / 205)
            values3[3] = ((float(values3[3]) - 2045) / 205)
            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2)
            values.extend(values3)
            values.extend(tempTime)

        elif numChannels == 9:
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            # Channel 1
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            # Channel 3
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            # Channel 5
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Channel 6
            values2[2] = ((float(values2[2]) - 1535) / 200)
            values2[3] = ((float(values2[3]) - 1535) / 200)
            mcp.read_all_ch(0xCC)
            values3 = mcp.read_all_ch(0xCC)
            # Channel 7
            values3[0] = ((float(values3[0]) - 1520) / 205)
            values3[1] = ((float(values3[1]) - 1520) / 205)
            # Channel 8
            values3[2] = ((float(values3[2]) - 2045) / 205)
            values3[3] = ((float(values3[3]) - 2045) / 205)
            mcp.read_all_ch(0xD0)
            values4 = mcp.read_all_ch(0xD0)
            # Channel 9
            values4[0] = ((float(values4[0]) - 2045) / 205)
            values4[1] = ((float(values4[1]) - 2045) / 205)
            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2)
            values.extend(values3)
            values.extend(values4[0:2])
            values.extend(tempTime)

        elif numChannels == 10:
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            # Channel 1
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            # Channel 3
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            # Channel 5
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Channel 6
            values2[2] = ((float(values2[2]) - 1535) / 200)
            values2[3] = ((float(values2[3]) - 1535) / 200)
            mcp.read_all_ch(0xCC)
            values3 = mcp.read_all_ch(0xCC)
            # Channel 7
            values3[0] = ((float(values3[0]) - 1520) / 205)
            values3[1] = ((float(values3[1]) - 1520) / 205)
            # Channel 8
            values3[2] = ((float(values3[2]) - 2045) / 205)
            values3[3] = ((float(values3[3]) - 2045) / 205)
            mcp.read_all_ch(0xD0)
            values4 = mcp.read_all_ch(0xD0)
            # Channel 9
            values4[0] = ((float(values4[0]) - 2045) / 205)
            values4[1] = ((float(values4[1]) - 2045) / 205)
            # Channel 10
            values4[2] = ((float(values4[2]) - 2045) / 205)
            values4[3] = ((float(values4[3]) - 2045) / 205)
            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2)
            values.extend(values3)
            values.extend(values4)
            values.extend(tempTime)
        elif numChannels == 11:
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            # Channel 1
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            # Channel 3
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            # Channel 5
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Channel 6
            values2[2] = ((float(values2[2]) - 1535) / 200)
            values2[3] = ((float(values2[3]) - 1535) / 200)
            mcp.read_all_ch(0xCC)
            values3 = mcp.read_all_ch(0xCC)
            # Channel 7
            values3[0] = ((float(values3[0]) - 1520) / 205)
            values3[1] = ((float(values3[1]) - 1520) / 205)
            # Channel 8
            values3[2] = ((float(values3[2]) - 2045) / 205)
            values3[3] = ((float(values3[3]) - 2045) / 205)
            mcp.read_all_ch(0xD0)
            values4 = mcp.read_all_ch(0xD0)
            # Channel 9
            values4[0] = ((float(values4[0]) - 2045) / 205)
            values4[1] = ((float(values4[1]) - 2045) / 205)
            # Channel 10
            values4[2] = ((float(values4[2]) - 2045) / 205)
            values4[3] = ((float(values4[3]) - 2045) / 205)
            mcp.read_all_ch(0xD4)
            values5 = mcp.read_all_ch(0xD4)
            # Channel 11
            values5[0] = ((float(values5[0]) - 2045) / 205)
            values5[1] = ((float(values5[1]) - 2045) / 205)
            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2)
            values.extend(values3)
            values.extend(values4)
            values.extend(values5[0:2])
            values.extend(tempTime)

        elif numChannels == 12:
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            # Channel 1
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            # Channel 3
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            # Channel 5
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Channel 6
            values2[2] = ((float(values2[2]) - 1535) / 200)
            values2[3] = ((float(values2[3]) - 1535) / 200)
            mcp.read_all_ch(0xCC)
            values3 = mcp.read_all_ch(0xCC)
            # Channel 7
            values3[0] = ((float(values3[0]) - 1520) / 205)
            values3[1] = ((float(values3[1]) - 1520) / 205)
            # Channel 8
            values3[2] = ((float(values3[2]) - 2045) / 205)
            values3[3] = ((float(values3[3]) - 2045) / 205)
            mcp.read_all_ch(0xD0)
            values4 = mcp.read_all_ch(0xD0)
            # Channel 9
            values4[0] = ((float(values4[0]) - 2045) / 205)
            values4[1] = ((float(values4[1]) - 2045) / 205)
            # Channel 10
            values4[2] = ((float(values4[2]) - 2045) / 205)
            values4[3] = ((float(values4[3]) - 2045) / 205)
            mcp.read_all_ch(0xD4)
            values5 = mcp.read_all_ch(0xD4)
            # Channel 11
            values5[0] = ((float(values5[0]) - 2045) / 205)
            values5[1] = ((float(values5[1]) - 2045) / 205)
            # Channel 12
            values5[2] = ((float(values5[2]) - 2045) / 205)
            values5[3] = ((float(values5[3]) - 2045) / 205)
            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2)
            values.extend(values3)
            values.extend(values4)
            values.extend(values5)
            values.extend(tempTime)

        elif numChannels ==13:
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            # Channel 1
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            # Channel 3
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            # Channel 5
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Channel 6
            values2[2] = ((float(values2[2]) - 1535) / 200)
            values2[3] = ((float(values2[3]) - 1535) / 200)
            mcp.read_all_ch(0xCC)
            values3 = mcp.read_all_ch(0xCC)
            # Channel 7
            values3[0] = ((float(values3[0]) - 1520) / 205)
            values3[1] = ((float(values3[1]) - 1520) / 205)
            # Channel 8
            values3[2] = ((float(values3[2]) - 2045) / 205)
            values3[3] = ((float(values3[3]) - 2045) / 205)
            mcp.read_all_ch(0xD0)
            values4 = mcp.read_all_ch(0xD0)
            # Channel 9
            values4[0] = ((float(values4[0]) - 2045) / 205)
            values4[1] = ((float(values4[1]) - 2045) / 205)
            # Channel 10
            values4[2] = ((float(values4[2]) - 2045) / 205)
            values4[3] = ((float(values4[3]) - 2045) / 205)
            mcp.read_all_ch(0xD4)
            values5 = mcp.read_all_ch(0xD4)
            # Channel 11
            values5[0] = ((float(values5[0]) - 2045) / 205)
            values5[1] = ((float(values5[1]) - 2045) / 205)
            # Channel 12
            values5[2] = ((float(values5[2]) - 2045) / 205)
            values5[3] = ((float(values5[3]) - 2045) / 205)
            mcp.read_all_ch(0xD8)
            values6 = mcp.read_all_ch(0xD8)
            # Channel 13
            values6[0] = ((float(values6[0]) - 2045) / 205)
            values6[1] = ((float(values6[1]) - 2045) / 205)

            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2)
            values.extend(values3)
            values.extend(values4)
            values.extend(values5)
            values.extend(values6[0:2])
            values.extend(tempTime)

        elif numChannels == 14:
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            # Channel 1
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            # Channel 3
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            # Channel 5
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Channel 6
            values2[2] = ((float(values2[2]) - 1535) / 200)
            values2[3] = ((float(values2[3]) - 1535) / 200)
            mcp.read_all_ch(0xCC)
            values3 = mcp.read_all_ch(0xCC)
            # Channel 7
            values3[0] = ((float(values3[0]) - 1520) / 205)
            values3[1] = ((float(values3[1]) - 1520) / 205)
            # Channel 8
            values3[2] = ((float(values3[2]) - 2045) / 205)
            values3[3] = ((float(values3[3]) - 2045) / 205)
            mcp.read_all_ch(0xD0)
            values4 = mcp.read_all_ch(0xD0)
            # Channel 9
            values4[0] = ((float(values4[0]) - 2045) / 205)
            values4[1] = ((float(values4[1]) - 2045) / 205)
            # Channel 10
            values4[2] = ((float(values4[2]) - 2045) / 205)
            values4[3] = ((float(values4[3]) - 2045) / 205)
            mcp.read_all_ch(0xD4)
            values5 = mcp.read_all_ch(0xD4)
            # Channel 11
            values5[0] = ((float(values5[0]) - 2045) / 205)
            values5[1] = ((float(values5[1]) - 2045) / 205)
            # Channel 12
            values5[2] = ((float(values5[2]) - 2045) / 205)
            values5[3] = ((float(values5[3]) - 2045) / 205)
            mcp.read_all_ch(0xD8)
            values6 = mcp.read_all_ch(0xD8)
            # Channel 13
            values6[0] = ((float(values6[0]) - 2045) / 205)
            values6[1] = ((float(values6[1]) - 2045) / 205)
            # Channel 14
            values6[2] = ((float(values6[2]) - 2045) / 205)
            values6[3] = ((float(values6[3]) - 2045) / 205)

            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2)
            values.extend(values3)
            values.extend(values4)
            values.extend(values5)
            values.extend(values6)
            values.extend(tempTime)

        elif numChannels == 15:
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            # Channel 1
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            # Channel 3
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            # Channel 5
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Channel 6
            values2[2] = ((float(values2[2]) - 1535) / 200)
            values2[3] = ((float(values2[3]) - 1535) / 200)
            mcp.read_all_ch(0xCC)
            values3 = mcp.read_all_ch(0xCC)
            # Channel 7
            values3[0] = ((float(values3[0]) - 1520) / 205)
            values3[1] = ((float(values3[1]) - 1520) / 205)
            # Channel 8
            values3[2] = ((float(values3[2]) - 2045) / 205)
            values3[3] = ((float(values3[3]) - 2045) / 205)
            mcp.read_all_ch(0xD0)
            values4 = mcp.read_all_ch(0xD0)
            # Channel 9
            values4[0] = ((float(values4[0]) - 2045) / 205)
            values4[1] = ((float(values4[1]) - 2045) / 205)
            # Channel 10
            values4[2] = ((float(values4[2]) - 2045) / 205)
            values4[3] = ((float(values4[3]) - 2045) / 205)
            mcp.read_all_ch(0xD4)
            values5 = mcp.read_all_ch(0xD4)
            # Channel 11
            values5[0] = ((float(values5[0]) - 2045) / 205)
            values5[1] = ((float(values5[1]) - 2045) / 205)
            # Channel 12
            values5[2] = ((float(values5[2]) - 2045) / 205)
            values5[3] = ((float(values5[3]) - 2045) / 205)
            mcp.read_all_ch(0xD8)
            values6 = mcp.read_all_ch(0xD8)
            # Channel 13
            values6[0] = ((float(values6[0]) - 2045) / 205)
            values6[1] = ((float(values6[1]) - 2045) / 205)
            # Channel 14
            values6[2] = ((float(values6[2]) - 2045) / 205)
            values6[3] = ((float(values6[3]) - 2045) / 205)
            mcp.read_all_ch(0xDC)
            values7 = mcp.read_all_ch(0xDC)
            # Channel 15
            values7[0] = ((float(values7[0]) - 2045) / 205)
            values7[1] = ((float(values7[1]) - 2045) / 205)

            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2)
            values.extend(values3)
            values.extend(values4)
            values.extend(values5)
            values.extend(values6)
            values.extend(values7[0:2])
            values.extend(tempTime)

        elif numChannels == 16:
            mcp.read_all_ch(0xC0)
            values0 = mcp.read_all_ch(0xC0)
            # Channel 1
            values0[0] = ((float(values0[0]) - 2046) / 197)  # ADC 1
            values0[1] = ((float(values0[1]) - 2046) / 197)  # ADC 2
            # Channel 2
            values0[2] = ((float(values0[2]) - 2046) / 197)  # ADC 3
            values0[3] = ((float(values0[3]) - 1535) / 195)  # ADC 4
            mcp.read_all_ch(0xC4)
            values1 = mcp.read_all_ch(0xC4)
            # Channel 3
            values1[0] = ((float(values1[0]) - 2046) / 200)
            values1[1] = ((float(values1[1]) - 2046) / 200)
            # Channel 4
            values1[2] = ((float(values1[2]) - 1535) / 200)
            values1[3] = ((float(values1[3]) - 1535) / 200)
            mcp.read_all_ch(0xC8)
            values2 = mcp.read_all_ch(0xC4)
            # Channel 5
            values2[0] = ((float(values2[0]) - 2046) / 200)
            values2[1] = ((float(values2[1]) - 2046) / 200)
            # Channel 6
            values2[2] = ((float(values2[2]) - 1535) / 200)
            values2[3] = ((float(values2[3]) - 1535) / 200)
            mcp.read_all_ch(0xCC)
            values3 = mcp.read_all_ch(0xCC)
            # Channel 7
            values3[0] = ((float(values3[0]) - 1520) / 205)
            values3[1] = ((float(values3[1]) - 1520) / 205)
            # Channel 8
            values3[2] = ((float(values3[2]) - 2045) / 205)
            values3[3] = ((float(values3[3]) - 2045) / 205)
            mcp.read_all_ch(0xD0)
            values4 = mcp.read_all_ch(0xD0)
            # Channel 9
            values4[0] = ((float(values4[0]) - 2045) / 205)
            values4[1] = ((float(values4[1]) - 2045) / 205)
            # Channel 10
            values4[2] = ((float(values4[2]) - 2045) / 205)
            values4[3] = ((float(values4[3]) - 2045) / 205)
            mcp.read_all_ch(0xD4)
            values5 = mcp.read_all_ch(0xD4)
            # Channel 11
            values5[0] = ((float(values5[0]) - 2045) / 205)
            values5[1] = ((float(values5[1]) - 2045) / 205)
            # Channel 12
            values5[2] = ((float(values5[2]) - 2045) / 205)
            values5[3] = ((float(values5[3]) - 2045) / 205)
            mcp.read_all_ch(0xD8)
            values6 = mcp.read_all_ch(0xD8)
            # Channel 13
            values6[0] = ((float(values6[0]) - 2045) / 205)
            values6[1] = ((float(values6[1]) - 2045) / 205)
            # Channel 14
            values6[2] = ((float(values6[2]) - 2045) / 205)
            values6[3] = ((float(values6[3]) - 2045) / 205)
            mcp.read_all_ch(0xDC)
            values7 = mcp.read_all_ch(0xDC)
            # Channel 15
            values7[0] = ((float(values7[0]) - 2045) / 205)
            values7[1] = ((float(values7[1]) - 2045) / 205)
            # Channel 16
            values7[2] = ((float(values7[2]) - 2045) / 205)
            values7[3] = ((float(values7[3]) - 1520) / 205)

            # Append Samples to array
            values.extend(values0)
            values.extend(values1)
            values.extend(values2)
            values.extend(values3)
            values.extend(values4)
            values.extend(values5)
            values.extend(values6)
            values.extend(values7)
            values.extend(tempTime)

        with open(fileName, 'a+') as f:
            f.write((", ".join(str(x) for x in values)))
            f.write('\n')
    print('Test Complete')
    print(fileName)
Example #6
0
 def __init__(self, channel):
     self.curVal = 0.0
     self.channel = channel
     self.mcp = Adafruit_MCP3008.MCP3008(
         spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
Example #7
0
 def __init__(self):
     self.mcp = Adafruit_MCP3008.MCP3008(
         spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
Example #8
0
    def Update_Battery(self):
        f = open('Ubidots_APIkey.txt', 'r')
        apikey = f.readline().strip()
        f.close()
        api = ApiClient(token=apikey)

        try:
            batt = api.get_variable("58d763aa762542260cf36f24")
        except ValueError:
            print('Value Error')

        # Raspberry Pi pin configuration:
        RST = 32

        # 128x32 display with hardware I2C:
        disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)

        # Import SPI library (for hardware SPI) and MCP3008 library.
        import Adafruit_GPIO.SPI as SPI
        import Adafruit_MCP3008

        # Initialize library.
        disp.begin()
        time.sleep(5)

        width = disp.width
        height = disp.height

        # Clear display.
        disp.clear()
        disp.display()

        image = Image.new('1', (width, height))

        # Get drawing object to draw on image.
        draw = ImageDraw.Draw(image)

        # Load default font.
        font = ImageFont.load_default()

        # Alternatively load a TTF font.  Make sure the .ttf font file is in the same directory as the python script!
        # Some other nice fonts to try: http://www.dafont.com/bitmap.php
        #font = ImageFont.truetype('Minecraftia.ttf', 8)

        # Hardware SPI configuration:
        SPI_PORT = 0
        SPI_DEVICE = 0
        mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))

        # Main program loop.
        time.sleep(3)
        # Draw a black filled box to clear the image.
        draw.rectangle((0, 0, width, height), outline=0, fill=0)
        value = mcp.read_adc(0)
        volts = ((value * 3.3)) / float(1023)  #voltage divider voltage
        volts = volts * 5.7  #actual voltage
        volts = round(volts, 2)
        if (volts >= 13.6):
            batt = 100
            print('100% Battery')
            draw.text((0, 0), 'Battery percent at: ', font=font, fill=255)
            draw.text((50, 20), str(batt), font=font, fill=255)
            disp.image(image)
            disp.display()
            time.sleep(1)
        elif (volts > 11.6):
            batt = round((volts - 11.6) * 50, 1)
            print(batt, '% Battery')
            draw.text((10, 0), 'Battery percent at: ', font=font, fill=255)
            draw.text((45, 20), str(batt), font=font, fill=255)
            disp.image(image)
            disp.display()
            time.sleep(1)
        else:
            print('Connection Error')
            draw.text((55, 10), ':(', font=font, fill=255)
            disp.image(image)
            disp.display()
            # Print the ADC values.
            # Pause time.
            time.sleep(1)

            battery = volts

        try:
            batt.save_value({'value': battery})
            time.sleep(1)
        except:
            print('Unable to connect to Ubidots batt')

        self.avg_batt.setText('{}%'.format(battery))
Example #9
0
def main() -> None:
    LOG.info("Setting up BME280...")
    i2c_dev = smbus2.SMBus(1)
    bme280_device_internal = bme280.BME280(i2c_dev=i2c_dev)
    bme280_device_external = bme280.BME280(i2c_dev=i2c_dev, i2c_addr=0x77)
    t_bme280_internal = sensors.BME280_T(name="t_bme280",
                                         bme280_device=bme280_device_internal)
    pressure_internal = sensors.BME280_P(name="pressure",
                                         bme280_device=bme280_device_internal)
    humidity_internal = sensors.BME280_H(name="humidity",
                                         bme280_device=bme280_device_internal)

    t_bme280_external = sensors.BME280_T(name="t_bme280_external",
                                         bme280_device=bme280_device_external)
    humidity_external = sensors.BME280_H(name="humidity_external",
                                         bme280_device=bme280_device_external)

    LOG.info("Stabilizing sensors...")
    stabilization_sensors = [
        t_bme280_internal,
        pressure_internal,
        humidity_internal,
        t_bme280_external,
        humidity_external,
    ]
    for i in range(3):
        for sensor in stabilization_sensors:
            sensor.update()

        LOG.info(
            f"{' '.join(str(sensor.value) for sensor in stabilization_sensors)}"
        )
        time.sleep(1)

    LOG.info("Setting up ambient light sensor...")
    ambient_light = sensors.MCPSensor(
        name="ambient_light",
        mcp3xxx=Adafruit_MCP3008.MCP3008(
            spi=Adafruit_GPIO.SPI.SpiDev(SPI_PORT, SPI_DEVICE)),
        channel=0,
    )

    LOG.info("Setting up DS18B20 sensors...")
    t_ds18b20 = [
        sensors.DS18B20(name="t_internal_1", id="4cba936"),
        sensors.DS18B20(name="t_external", id="4cdf645"),
        sensors.DS18B20(name="t_internal_2", id="4ce8778"),
    ]

    LOG.info("Setting up heater controller...")
    heater_controller = controllers.HeaterController(name="heater",
                                                     control_pin=11,
                                                     sensor=t_bme280_internal)
    heater_controller.setpoint = 18

    LOG.info("Setting up pigpio")
    pi = pigpio.pi()

    LOG.info("Setting up fan controller...")
    fan_controller = controllers.FanController(
        name="fan",
        control_pin=15,
        humidity_sensor=humidity_internal,
        temperature_sensor=t_bme280_internal,
        pi=pi,
    )

    fan_controller.setpoint = 60
    fan_controller.setpoint_temp = 20
    fan_controller.set_external_humidity_sensor(humidity_external)

    LOG.info("Setting up vent controller...")
    vent_controller = controllers.VentController(
        name="vent",
        control_pin=18,  # BCM-style control pin
        pi=pi,
        fan_controller=fan_controller,
    )

    LOG.info("Starting control loop...")
    looper = Loop(
        event=STOP_FLAG,
        target=process,
        sensors=[
            *t_ds18b20,
            t_bme280_internal,
            pressure_internal,
            humidity_internal,
            ambient_light,
            t_bme280_external,
            humidity_external,
        ],
        controllers=[heater_controller, fan_controller, vent_controller],
    )
    looper.start()

    atexit.register(on_exit, [looper])
Example #10
0
cf = 0
sf = 15
CLK = 5
MISO = 6
MOSI = 13
node = 0
gap = 0.1
ssp = 10
factor = 6
CS = [9, 10, 22, 27, 17, 4]
cfactor = [0, 0, 0, 0]
pos = [0, 0, 0, 0]
nodeDetected = False
#CSextra=17
#CSencoder=4
mcp = [Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS[0], miso=MISO, mosi=MOSI)] * 6

for i in range(6):
    mcp[i] = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS[i], miso=MISO, mosi=MOSI)
avg = [[0 for i in range(8)] for j in range(4)]
bi = [[0 for i in range(8)] for j in range(4)]
prevbi = [[0 for i in range(8)] for j in range(4)]
values = [[0 for i in range(8)] for j in range(6)]
maxi = [[0 for i in range(8)] for j in range(4)]
mini = [[1023 for i in range(8)] for j in range(4)]
summ = [0 for j in range(4)]
motordir = [16, 24, 8, 21]
motorpwm = [20, 7, 25, 12]
#motordir = [16,24,15,21]
#motorpwm=[20,7,14,12]
motorin = [0, 0, 0, 0]
Example #11
0
from time import sleep
import Adafruit_MCP3008

# Create MCP3008 object using specified pin numbers:
a2d = Adafruit_MCP3008.MCP3008(clk=18, cs=25, miso=23, mosi=24)

print('Press Ctrl-C to quit...')

while True:
 a2d0 = a2d.read_adc(0)
 print('A/D input channel 0 = ', a2d0)
 sleep(0.5)
Example #12
0
#GPIO.setmode(GPIO.BOARD)

#print "mode: "
#print GPIO.getmode()

#software box configuration:
OUT1 = 24
LED1 = 23

#software SPI configuration:
CLK = 23
MISO = 21
MOSI = 19
CS = 24
mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)
print "mode: "
print GPIO.getmode()

# Hardware SPI configuration:
SPI_PORT = 0
SPI_DEVICE = 0
mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))

#Define Variables
delay = 0.5
ldr_channel = 0

def readadc(i):
   # read SPI data from the MCP3008, channel 1 is temp channel 0 is light
   if i == 1:
Example #13
0
def initTurbineVoltageSensor():
    global adcSensor
    adcSensor = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)
    print("Turbine voltage sensor is connected")
Example #14
0
# Import SPI library (for hardware SPI) and MCP3008 library.
import Adafruit_GPIO.SPI as SPI
import Adafruit_MCP3008

# Software SPI configuration:
##CLK  = 18
##MISO = 23
##MOSI = 24
##CS   = 25
##mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)

# Hardware SPI configuration:
SPI_PORT = 0
SPI_DEVICE = 0
mcp1 = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
mcp2 = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE + 1))
Vref = 5

# method to save the results
google_sheet = False
csv_sheet = True

# value of the resistors
R = [{'R1': 0, 'R2': 1}]
R.append({'R1': 1000, 'R2': 1000})
R.append({'R1': 10000, 'R2': 1000})
R.append({'R1': 10000, 'R2': 1000})
R.append({'R1': 10000, 'R2': 1000})
R.append({'R1': 10000, 'R2': 1000})
R.append({'R1': 10000, 'R2': 1000})
Example #15
0
#!/usr/bin/python

import time
import Adafruit_GPIO.SPI as SPI
import Adafruit_MCP3008 as ADC

CLK = 12 # GPIO 18 = Pin 12 (CLK -> CLK)
MISO = 7 # GPIO 23 = Pin 16 (DOUT -> MISO)
MOSI = 8 # GPIO 24 = Pin 18 (DIN -> MOSI)
CS = 25 # GPIO 25 = Pin 22 (CS -> CE0)

mcp = ADC.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)


def get_voltage():
    v = (mcp.read_adc(0) / 1023.0) * 3.3
    return v

def calc_distance_cm(v):
    a = 0.00385
    b = -0.2205
    c = 4.12

    cm = ((b*-1) + (((b**2)-(4*a*c))*0.5)) / (2*a)
    return cm


if __name__ == '__main__':
    total_volt = 0
    total_samples = 0
Example #16
0
import RPi.GPIO as GPIO
import time
from random import randint
import numpy as np
# next two libraries must be installed IAW appendix instructions
import Adafruit_GPIO.SPI as SPI
import Adafruit_MCP3008
global pwmL, pwmR, mcp
lightOld = 0
hysteresis = 2
# Hardware SPI configuration:
SPI_PORT = 0
SPI_DEVICE = 0
mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
threshold = 25.4
# use the BCM pin numbers
GPIO.setmode(GPIO.BCM)
# setup the motor control pins
GPIO.setup(18, GPIO.OUT)
GPIO.setup(19, GPIO.OUT)
pwmL = GPIO.PWM(18, 20)  # pin 18 is left wheel pwm
pwmR = GPIO.PWM(19, 20)  # pin 19 is right wheel pwm
# must 'start' the motors with 0 rotation speeds
pwmL.start(2.8)
pwmR.start(2.8)
# ultrasonic sensor pins
TRIG1 = 23  # an output
ECHO1 = 24  # an input
TRIG2 = 25  # an output
ECHO2 = 27  # an input
Example #17
0
import sys
sys.path.insert(0, 'Cubium/drivers/PythonDrivers')

import Adafruit_GPIO.SPI as SPI
import Adafruit_MCP3008

import time

SPI_PORT = 0
SPI_DEVICE = 0
uv_external = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
ADC_PIN = 1

def handleSpaData():
    pass

def sendData():
    value = uv_external.read_adc(ADC_PIN)
    return value

def init():
    pass

Example #18
0
 def __init__(self):
     # Hardware SPI configuration:
     SPI_PORT = 0
     SPI_DEVICE = 0
     self.mcp = Adafruit_MCP3008.MCP3008(
         spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
Example #19
0
# Import SPI library (for hardware SPI) and MCP3008 library.
import Adafruit_GPIO.SPI as SPI
import Adafruit_MCP3008

# Software SPI configuration:
CLK = 18
MISO = 23
MOSI = 24
CS = 25

Clk = 10
Miso = 9
Mosi = 11
Cs = 22

mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)
mcp2 = Adafruit_MCP3008.MCP3008(clk=Clk, cs=Cs, miso=Miso, mosi=Mosi)

# Hardware SPI configuration:
#SPI_PORT   = 0
#SPI_DEVICE = 0
#mcp2 = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))

print('Press Ctrl-C to quit...')
while True:
    for i in range(9):
        value = 0
        if i < 6:
            value = mcp.read_adc(i)
        else:
            value2 = mcp2.read_adc(i - 6)
Example #20
0
 def __init__(self, CLK, DOUT, DIN, CS):
    self.mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=DOUT, mosi=DIN)
Example #21
0
#!/usr/bin/env python
import multiprocessing
from pyo import *
import math

import Adafruit_ADS1x15
adc = Adafruit_ADS1x15.ADS1115()

import Adafruit_MCP3008
import RPi.GPIO as GPIO
CLK = 27
MISO = 22
MOSI = 17
CS1 = 8
CS2 = 9
mcp1 = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS1, miso=MISO, mosi=MOSI)
mcp2 = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS2, miso=MISO, mosi=MOSI)

MAXADC = 26300.0

GPIO.setup(CS1, GPIO.OUT)
GPIO.setup(CS2, GPIO.OUT)

pa_list_devices()

#print pm_get_default_input()


# --TriTable import from examples-- (Not in normal libs?)
class TriTable(PyoTableObject):
    def __init__(self, order=10, size=8192):
Example #22
0
def init():
    global mcp
    mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)
Example #23
0
import Adafruit_GPIO.SPI as SPI
import Adafruit_MCP3008

mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(0, 0))

#895 = OK
#638 = LEFT
#511 = UP
#383 = RIGHT
#766 = DOWN
#255 = BACK
#128 = RESET


def tol(input):
    t = 2
    return xrange(input - t, input + t)


button_map = {
    tol(895): 'OK',
    tol(766): 'DOWN',
    tol(638): 'LEFT',
    tol(511): 'UP',
    tol(383): 'RIGHT',
    tol(255): 'BACK',
    tol(128): 'RESET',
    -1: 'NULL'
}

import time
import math
from sensors import *
#Import the firmware code for the Adafruit MAX31855 Amplifier for the Thermocouple
import Adafruit_MAX31855.MAX31855 as MAX31855
max_sensor = MAX31855.MAX31855(21, 20, 16)

#import smbus for use with the DHT20 sensor and setting up the bus with the address
import  smbus
import numpy as np
bus = smbus.SMBus(1)
#SHT20 address, 0x40(64)

#import MCP3008 (ADC) Library 
import Adafruit_MCP3008
mcp = Adafruit_MCP3008.MCP3008(clk=22, cs=25, miso=23, mosi=24)

#importing the DHT11 sensor library
import Adafruit_DHT
 
 
# a function that returns a string with the system status and stores that in the Store/status.csv file
def statusUpdate():
    try:
        while True:
            statusString = 0
            sensorString = 0
            
            #check for tank leaks
            tankLeak = checkTankLeak()
            if tankLeak["status"] == 1:
Example #25
0
class MQ():

    CLK = 23
    MISO = 21
    MOSI = 19
    CS = 24
    mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)

    SPI_PORT = 0
    SPI_DEVICE = 0
    mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))

    RL_VALUE = 10
    RO_CLEAN_AIR_FACTOR = float(4.4)

    CALIBARAION_SAMPLE_TIMES = 50
    CALIBRATION_SAMPLE_INTERVAL = 50

    READ_SAMPLE_INTERVAL = 50
    READ_SAMPLE_TIMES = 5

    GAS_CH4 = 0

    def _init_(self, Ro=10, analogPin=1):
        self.Ro = Ro
        self.MQ_PIN = analogPin

        self.CH4Curve = [2.3, 0.26, -0.36]

        print("Calibrating...")
        self.Ro = self.MQCalibration(self.MQ_PIN)
        print("Calibration is done...\n")
        print("Ro=%f kohm" % self.Ro)

    def MQPercentage(self):
        val = {}
        read = self.MQRead(self.MQ_PIN)
        val["GAS_CH4"] = self.MQGetGasPercentage(read / self.Ro, self.GAS_CH4)
        return val

    def MQResistanceCalculation(self, raw_adc):
        return float(self.RL_VALUE * (1023.0 - raw_adc) / float(raw_adc))

    def MQCalibration(self, mq_pin):
        val = 0.0
        for i in range(self.CALIBARAION_SAMPLE_TIMES):
            val += self.MQResistanceCalculation(self.mcp.read_adc(mq_pin))
            time.sleep(self.CALIBRATION_SAMPLE_INTERVAL / 1000.0)

        val = val / self.CALIBARAION_SAMPLE_TIMES

        val = val / self.RO_CLEAN_AIR_FACTOR

        return val

    def MQRead(self, mq_pin):
        rs = 0.0

        for i in range(self.READ_SAMPLE_TIMES):
            rs += self.MQResistanceCalculation(self.mcp.read_adc(mq_pin))
            time.sleep(self.READ_SAMPLE_INTERVAL / 1000.0)

        rs = rs / self.READ_SAMPLE_TIMES

        return rs

    def MQGetGasPercentage(self, rs_ro_ratio, gas_id):
        if (gas_id == self.GAS_CH4):
            return self.MQGetPercentage(rs_ro_ratio, self.CH4Curve)

    def MQGetPercentage(self, rs_ro_ratio, pcurve):
        return (math.pow(
            10,
            (((math.log10(rs_ro_ratio) - pcurve[1]) / pcurve[2]) + pcurve[0])))
Example #26
0
                        type=int,
                        help='channel to read from the ADC (0 - 7)',
                        required=False,
                        choices=range(0, 8))
    return parser.parse_args()


if __name__ == '__main__':
    import Adafruit_MCP3008
    parser = argparse.ArgumentParser(
        description='MCP3008 Analog-to-Digital Converter Read Test Script')
    args = parse_args(parser)

    # Example Software SPI pins: CLK = 18, MISO = 23, MOSI = 24, CS = 25
    mcp = Adafruit_MCP3008.MCP3008(clk=args.clockpin,
                                   cs=args.cspin,
                                   miso=args.misopin,
                                   mosi=args.mosipin)

    if -1 < args.adcchannel < 8:
        # Read the specified channel
        value = mcp.read_adc(args.adcchannel)
        print("ADC Channel: {chan}, Output: {out}".format(chan=args.adcchannel,
                                                          out=value))
    else:
        # Create a list for the ADC channel values
        values = [0] * 8

        # Conduct measurements of channels 0 - 7, add them to the list
        for i in range(8):
            values[i] = mcp.read_adc(i)
Example #27
0
class MQ():

    # Software SPI
    #CLK  = 23
    #MISO = 21
    #MOSI = 19
    #CS   = 24
    #mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)

    # Hardware SPI
    SPI_PORT = 0
    SPI_DEVICE = 0
    mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))

    RL_VALUE = 5
    RO_CLEAN_AIR_FACTOR = 3.62

    CALIBARAION_SAMPLE_TIMES = 50
    CALIBRATION_SAMPLE_INTERVAL = 500

    READ_SAMPLE_INTERVAL = 50
    READ_SAMPLE_TIMES = 5

    GAS_CO2 = 0
    GAS_CO = 1
    GAS_NH4 = 2

    def __init__(self, Ro=20, analogPin=0):
        self.Ro = Ro
        self.MQ_PIN = analogPin

        self.CO2Curve = [1, 0.38, -0.339]
        self.COCurve = [1, 0.462, -0.232]
        self.NH4Curve = [1, 0.423, -0.423]

        print("Calibrating...")
        self.Ro = self.MQCalibration(self.MQ_PIN)
        print("Calibration is done...\n")
        print("Ro=%f kohm" % self.Ro)

    def MQPercentage(self):
        val = {}
        read = self.MQRead(self.MQ_PIN)
        val["GAS_CO2"] = self.MQGetGasPercentage(read / self.Ro, self.GAS_CO2)
        val["GAS_CO"] = self.MQGetGasPercentage(read / self.Ro, self.GAS_CO)
        val["GAS_NH4"] = self.MQGetGasPercentage(read / self.Ro, self.GAS_NH4)
        return val

    def MQResistanceCalculation(self, raw_adc):
        return float(self.RL_VALUE * (1023.0 - raw_adc) / float(raw_adc))

    def MQCalibration(self, mq_pin):
        val = 0.0
        for i in range(self.CALIBARAION_SAMPLE_TIMES):
            val += self.MQResistanceCalculation(self.mcp.read_adc(mq_pin))
            time.sleep(self.CALIBRATION_SAMPLE_INTERVAL / 1000.0)

        val = val / self.CALIBARAION_SAMPLE_TIMES

        val = val / self.RO_CLEAN_AIR_FACTOR

        return val

    def MQRead(self, mq_pin):
        rs = 0.0

        for i in range(self.READ_SAMPLE_TIMES):
            rs += self.MQResistanceCalculation(self.mcp.read_adc(mq_pin))
            time.sleep(self.READ_SAMPLE_INTERVAL / 1000.0)

        rs = rs / self.READ_SAMPLE_TIMES

        return rs

    def MQGetGasPercentage(self, rs_ro_ratio, gas_id):
        if (gas_id == self.GAS_CO2):
            return self.MQGetPercentage(rs_ro_ratio, self.CO2Curve)
        elif (gas_id == self.GAS_CO):
            return self.MQGetPercentage(rs_ro_ratio, self.COCurve)
        elif (gas_id == self.GAS_NH4):
            return self.MQGetPercentage(rs_ro_ratio, self.NH4Curve)
        return 0

    def MQGetPercentage(self, rs_ro_ratio, pcurve):
        return (math.pow(
            10,
            (((math.log(rs_ro_ratio) - pcurve[1]) / pcurve[2]) + pcurve[0])))
Example #28
0
# Import SPI library (for hardware SPI) and MCP3008 library.
import Adafruit_GPIO.SPI as SPI
import Adafruit_MCP3008

# Software SPI configuration:
#CLK = 31
#MISO = 33
#MOSI = 35
#CS = 37
#mcp = Adafruit_MCP3008.MCP3008(clk=CLK, cs=CS, miso=MISO, mosi=MOSI)

# Hardware SPI configuration:
SPI_PORT   = 0
SPI_DEVICE = 0
mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))


print('Reading MCP3008 values, press Ctrl-C to quit...')
# Print nice channel column headers.
print('| {0:>4} | {1:>4} | {2:>4} | {3:>4} | {4:>4} | {5:>4} | {6:>4} | {7:>4} |'.format(*range(8)))
print('-' * 57)
# Main program loop.
while True:
    # Read all the ADC channel values in a list.
    values = [0] * 8
    for i in range(8):
        # The read_adc function will get the value of the specified channel (0-7).
        values[i] = mcp.read_adc(i)
    # Print the ADC values.
    print('| {0:>4} | {1:>4} | {2:>4} | {3:>4} | {4:>4} | {5:>4} | {6:>4} | {7:>4} |'.format(*values))
Example #29
0
File: t1.py Project: kkldream/Linux
import time
import Adafruit_GPIO.SPI, Adafruit_MCP3008
try:
    print('start')
    while True:
        adc = Adafruit_MCP3008.MCP3008(spi=Adafruit_GPIO.SPI.SpiDev(0, 0))
        for a in range(8):
            var = adc.read_adc(a)
            print(var, end=', ')
        print()
        time.sleep(0.1)
except KeyboardInterrupt:
    print('KeyboardInterrupt')
finally:
    print('finally')
# There may be plans to include digital input to complement the analog input

#######
# INPUT (MCP3008)
#######

# Input is directly involved from the input port on the hat and then goes through the Analog-to-Digital Converter,
# which is the MCP3008 IC. The input channels are respective to the input ports on the SwissCHEESE Hat, from A0 to
# A7. The output is read through SPI or Serial Peripheral Interface. A lot of the code was inherited from Adafruit's
# open source repository for the MCP3008 module.

# Hardware SPI configurations for the Pi
SPI_PORT = 0
SPI_DEVICE = 0
mcp = MCP.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))


# Parent input class for all general peripheral input devices - limited functions
class inputPort:

    # Initialization of the port number being used
    portNum = -1

    # Maximum value of the analog values (actually is 1023, but intended purpose is for function use)
    analogMax = 1024

    # Constructor for the inputPort
    def __init__(self, portNum):
        # The only valid ports accepted will be from 0 to 7 (referred to as J1 to J8)
        if (portNum > -1 and portNum < 8):
Example #31
0
 def read(self):     #reads value from sensor
     value = Adafruit_MCP3008.read_adc(channel)