root/525.743/code/rpi_client.py @ e376a628
| 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())
|