WORKSHEET 3 CHALLENGE:
To add Lights and Sound at different temperatures
The three temperatures I decided where- Red LED - 22'c and above
- Buzzer - 25'c and above
- Blue LED - 18'c and Below
I'm pleased as this is the first challenge I've succeeded at, so I must be learning something. (Got to lean how to video better). About 50% of the code I added to the Worksheet 3 code, to get the result.
The Code:
#CamJam EduKit 2 - Sensors#Worksheet 3 - Challenge - TemperatureLightsSound
#Import Libraries
import os
import RPi.GPIO as GPIO
import glob
import time
#Initialize the GPIO Pins
os.system('modprobe w1-gpio') #Turns on the GPIO module
os.system('modprobe w1-therm') #Turns on the Temperature module
GPIO.setmode(GPIO.BCM) #Set GPIO Mode
GPIO.setwarnings(False) #Turns of GPIO Warnings?
#Set Variables to store Pin Numbers
LEDRed = 18
LEDBlue = 24
BUZ = 22
#Set GPIO as Output
GPIO.setup(LEDRed, GPIO.OUT)
GPIO.setup(LEDBlue, GPIO.OUT)
GPIO.setup(BUZ, GPIO.OUT)
#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'
#A function that reads the sensors data
def read_temp_raw():
f = open(device_file, 'r') #Opens the temperature device file
lines = f.readlines() #Returns the text
f.close()
return lines
#Convert the value of the sensor into a temperature
def read_temp():
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
return temp_c, temp_f
#Checks if the LEDs or Buzzer should be ON/HIGH or OFF/LOW
while True:
temp_c, temp_f = read_temp() # Retuns a TUPLE of 2 Values
#Set GPIO Pins LOW/OFF
GPIO.output(LEDRed, GPIO.LOW)
GPIO.output(LEDBlue, GPIO.LOW)
GPIO.output(BUZ, GPIO.LOW)
#Turns RED LED on if above 22'c
if temp_c > 22.0:
GPIO.output(LEDRed, GPIO.HIGH)
#Turns BLUE LED on if below 18'c
if temp_c < 18.0:
GPIO.output(LEDBlue, GPIO.HIGH)
#Turns BUZZER on if above 25'c
if temp_c > 25.0:
GPIO.output(BUZ, GPIO.HIGH)
#Prints Temperature to screen in Celcius and Fahrenheit
print(read_temp())
#Waits 1 second then returns to read temperature
time.sleep(1)
No comments:
Post a Comment