Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- ##### IMPORTS #####
- import RPi.GPIO as GPIO
- import time
- import glob
- import os
- ##### SETUP #####
- # SET GPIO MODE
- GPIO.setmode(GPIO.BCM)
- # GPIO PIN ALLOCATION
- seg1 = 18
- seg2 = 23
- seg3 = 24
- seg4 = 25
- seg5 = 8
- seg6 = 7
- seg7 = 5
- seg8 = 6
- seg9 = 13
- seg10 = 19
- led1 = 21
- led2 = 14
- #GPIO SETUP
- GPIO.setup(seg1, GPIO.OUT)
- GPIO.setup(seg2, GPIO.OUT)
- GPIO.setup(seg3, GPIO.OUT)
- GPIO.setup(seg4, GPIO.OUT)
- GPIO.setup(seg5, GPIO.OUT)
- GPIO.setup(seg6, GPIO.OUT)
- GPIO.setup(seg7, GPIO.OUT)
- GPIO.setup(seg8, GPIO.OUT)
- GPIO.setup(seg9, GPIO.OUT)
- GPIO.setup(seg10, GPIO.OUT)
- GPIO.setup(led1, GPIO.OUT)
- GPIO.setup(led2, GPIO.OUT)
- # Turn them off
- GPIO.output(seg1, 0)
- GPIO.output(seg2, 0)
- GPIO.output(seg3, 0)
- GPIO.output(seg4, 0)
- GPIO.output(seg5, 0)
- GPIO.output(seg6, 0)
- GPIO.output(seg7, 0)
- GPIO.output(seg8, 0)
- GPIO.output(seg9, 0)
- GPIO.output(seg10, 0)
- GPIO.output(led1, 0)
- GPIO.output(led2, 0)
- # Initialize the GPIO Pins
- os.system('modprobe w1-gpio') # Turns on the GPIO module
- os.system('modprobe w1-therm') # Turns on the Temperature module
- # Finds the correct device file that holds the temperature data
- base_dir = '/sys/bus/w1/devices/'
- device_folder = glob.glob(base_dir + '28*')[0]
- device_file = device_folder + '/w1_slave'
- reading = ""
- lastreading = ""
- try:
- def clearsegs():
- GPIO.output(seg1, 0)
- GPIO.output(seg2, 0)
- GPIO.output(seg3, 0)
- GPIO.output(seg4, 0)
- GPIO.output(seg5, 0)
- GPIO.output(seg6, 0)
- GPIO.output(seg7, 0)
- GPIO.output(seg8, 0)
- GPIO.output(seg9, 0)
- GPIO.output(seg10, 0)
- def clearled():
- GPIO.output(led1, 0)
- GPIO.output(led2, 0)
- def read_temp_raw():
- f = open(device_file, 'r') # Opens the temperature device file
- lines = f.readlines() # Returns the text
- f.close()
- return lines
- def read_temp():
- global reading
- lines = read_temp_raw() # Read the temperature 'device file'
- # While the first line does not contain 'YES', wait for 0.2s
- # and then read the device file again.
- while lines[0].strip()[-3:] != 'YES':
- time.sleep(0.2)
- lines = read_temp_raw()
- # Look for the position of the '=' in the second line of the
- # device file.
- equals_pos = lines[1].find('t=')
- # If the '=' is found, convert the rest of the line after the
- # '=' into degrees Celsius, then degrees Fahrenheit
- if equals_pos != -1:
- temp_string = lines[1][equals_pos+2:]
- temp_c = float(temp_string) / 1000.0
- temp_f = temp_c * 9.0 / 5.0 + 32.0
- reading = int(temp_c)
- while True:
- print "while started"
- #might need to delay after each led on instead of below
- read_temp()
- # Wait before repeating loop
- time.sleep(1)
- # Print out results
- print reading
- if reading <= 20:
- clearsegs()
- print "Less than 20, no lights"
- if lastreading <= 20:
- clearled()
- GPIO.output(led1, 0)
- lastreading = reading
- elif lastreading > 20:
- clearled()
- GPIO.output(led2, 1)
- lastreading = 20
- elif reading == 21:
- clearsegs()
- GPIO.output(seg1, 1)
- if lastreading < 21:
- clearled()
- GPIO.output(led1, 1)
- lastreading = 21
- elif lastreading > 21:
- clearled()
- GPIO.output(led2, 1)
- lastreading = 21
- elif reading == 22:
- clearsegs()
- GPIO.output(seg1, 1)
- GPIO.output(seg2, 1)
- if lastreading < 22:
- clearled()
- GPIO.output(led1, 1)
- lastreading = 22
- elif lastreading > 22:
- clearled()
- GPIO.output(led2, 1)
- lastreading = 22
- elif reading == 23:
- clearsegs()
- GPIO.output(seg1, 1)
- GPIO.output(seg2, 1)
- GPIO.output(seg3, 1)
- if lastreading < 23:
- clearled()
- GPIO.output(led1, 1)
- lastreading = 23
- elif lastreading > 23:
- clearled()
- GPIO.output(led2, 1)
- lastreading = 23
- elif reading == 24:
- clearsegs()
- GPIO.output(seg1, 1)
- GPIO.output(seg2, 1)
- GPIO.output(seg3, 1)
- GPIO.output(seg4, 1)
- if lastreading < 24:
- clearled()
- GPIO.output(led1, 1)
- lastreading = 24
- elif lastreading > 24:
- clearled()
- GPIO.output(led2, 1)
- lastreading = 24
- elif reading == 25:
- clearsegs()
- GPIO.output(seg1, 1)
- GPIO.output(seg2, 1)
- GPIO.output(seg3, 1)
- GPIO.output(seg4, 1)
- GPIO.output(seg5, 1)
- if lastreading < 25:
- clearled()
- GPIO.output(led1, 1)
- lastreading = 25
- elif lastreading > 25:
- clearled()
- GPIO.output(led2, 1)
- lastreading = 25
- elif reading == 26:
- clearsegs()
- GPIO.output(seg1, 1)
- GPIO.output(seg2, 1)
- GPIO.output(seg3, 1)
- GPIO.output(seg4, 1)
- GPIO.output(seg5, 1)
- GPIO.output(seg6, 1)
- if lastreading < 26:
- clearled()
- GPIO.output(led1, 1)
- lastreading = 26
- elif lastreading > 26:
- clearled()
- GPIO.output(led2, 1)
- lastreading = 26
- elif reading == 27:
- clearsegs()
- GPIO.output(seg1, 1)
- GPIO.output(seg2, 1)
- GPIO.output(seg3, 1)
- GPIO.output(seg4, 1)
- GPIO.output(seg5, 1)
- GPIO.output(seg6, 1)
- GPIO.output(seg7, 1)
- if lastreading < 27:
- clearled()
- GPIO.output(led1, 1)
- lastreading = 27
- elif lastreading > 27:
- clearled()
- GPIO.output(led2, 1)
- lastreading = 27
- elif reading == 28:
- clearsegs()
- GPIO.output(seg1, 1)
- GPIO.output(seg2, 1)
- GPIO.output(seg3, 1)
- GPIO.output(seg4, 1)
- GPIO.output(seg5, 1)
- GPIO.output(seg6, 1)
- GPIO.output(seg7, 1)
- GPIO.output(seg8, 1)
- if lastreading < 28:
- clearled()
- GPIO.output(led1, 1)
- lastreading = 28
- elif lastreading > 28:
- clearled()
- GPIO.output(led2, 1)
- lastreading = 28
- elif reading == 29:
- clearsegs()
- GPIO.output(seg1, 1)
- GPIO.output(seg2, 1)
- GPIO.output(seg3, 1)
- GPIO.output(seg4, 1)
- GPIO.output(seg5, 1)
- GPIO.output(seg6, 1)
- GPIO.output(seg7, 1)
- GPIO.output(seg8, 1)
- GPIO.output(seg9, 1)
- if lastreading < 29:
- clearled()
- GPIO.output(led1, 1)
- lastreading = 29
- elif lastreading > 29:
- clearled()
- GPIO.output(led2, 1)
- lastreading = 29
- elif reading == 30:
- clearsegs()
- GPIO.output(seg1, 1)
- GPIO.output(seg2, 1)
- GPIO.output(seg3, 1)
- GPIO.output(seg4, 1)
- GPIO.output(seg5, 1)
- GPIO.output(seg6, 1)
- GPIO.output(seg7, 1)
- GPIO.output(seg8, 1)
- GPIO.output(seg9, 1)
- GPIO.output(seg10, 1)
- if lastreading < 30:
- clearled()
- GPIO.output(led1, 1)
- lastreading = 30
- elif lastreading > 30:
- clearled()
- GPIO.output(led2, 1)
- lastreading = 30
- elif reading > 30:
- clearsegs()
- print "Greater than 30, no lights"
- if lastreading < 30:
- clearled()
- GPIO.output(led1, 1)
- lastreading = reading
- elif lastreading > 30:
- clearled()
- GPIO.output(led2, 0)
- lastreading = reading
- else:
- print "out of range"
- finally: # USE THIS OPTION FOR DEBUGGING
- print "EXIT SCRIPT"
- time.sleep(0.5)
- # Clean up GPIOs
- print "PERFORMING GPIO CLEANUP"
- time.sleep(0.5)
- GPIO.cleanup() # Clean up the gpio pins ready for the next project.
- # Exit program
- print "--- EXIT NOW ---"
- time.sleep(0.5)
- quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement