Project

General

Profile

Download (1.87 KB) Statistics
| Branch: | Tag: | Revision:
e376a628 dsorber
import itertools
import sys

import RPIO

from bfcslib.seven_seg import SevenSegmentDisplay
from bfcslib.status_led import LED
from bfcslib.tmp512 import TMP512


NUM_SENSORS = 4
sensor_iterator = itertools.cycle(range(0, NUM_SENSORS))
CURRENT_IDX = sensor_iterator.next()
SENSORS = None

def button_isr(gpio_id, val):
global CURRENT_IDX
global SENSORS

# Turn off previous LED
SENSORS[CURRENT_IDX]['led'].off()

# Update current index
# print 'CURRENT_IDX: %s' % CURRENT_IDX
CURRENT_IDX = sensor_iterator.next()

# Turn on new LED
SENSORS[CURRENT_IDX]['led'].on()

def main():
global CURRENT_IDX
global SENSORS

print 'Beer Fermentation Control System - RPI Client'

# Setup the sensor status LEDs
sensor1_led = LED(24)
sensor2_led = LED(25)
sensor3_led = LED(8)
sensor4_led = LED(7)

# Setup both TMP512's
tmp512_1 = TMP512(0x5d)
tmp512_2 = TMP512(0x5c)

SENSORS = [{'led': sensor1_led, 'temp': tmp512_1.temp_sensor2},
{'led': sensor2_led, 'temp': tmp512_1.temp_sensor1},
{'led': sensor3_led, 'temp': tmp512_2.temp_sensor2},
{'led': sensor4_led, 'temp': tmp512_2.temp_sensor1}]

# Turn on initial sensor LED
SENSORS[CURRENT_IDX]['led'].on()

# Setup 7 seg display
ssdisplay = SevenSegmentDisplay()

# Setup pushbutton
# Use the BCM addressing scheme
RPIO.setmode(RPIO.BCM)

# Setup input
RPIO.setup(22, RPIO.IN)

# Setup switch interrupt with debounce
RPIO.add_interrupt_callback(22, button_isr, edge='rising',
pull_up_down=RPIO.PUD_DOWN, threaded_callback=True,
debounce_timeout_ms=150)

# Wait for interrupts in a non-blocking fashion
RPIO.wait_for_interrupts(threaded=True)

# Main loop
while True:

# Iterate over all temperature sensors and read their temp
for idx in xrange(NUM_SENSORS):
temp = SENSORS[idx]['temp']()
if idx == CURRENT_IDX:
ssdisplay.display_number(temp)


if __name__ == '__main__':
sys.exit(main())