from machine import ADC, Pin
import time
import os
#Setup pin connections
onboard_led = Pin(25, Pin.OUT)
led_1 = Pin(14, Pin.OUT)
led_2 = Pin(5, Pin.OUT)
buzzer = Pin(17, Pin.OUT)
buzzer.value(0)
gas_sensor = ADC(Pin(26))
#safelimit for gas concentration
safe_limit = 25 #gas level baseline for danger
#create file to save the as level readings
filename = "gas_reading.csv"
if filename not in os.listdir():
with open(filename, "w") as f:
f.write("seconds, gas_level\n")
#setup counter and reading interval
seconds_passed = 0 #count time since the program started
reading_interval = 0.5 #time pass btn every gas reading
#warm up Gas Sensor
print("warming up the gas sensor for 60 sec")
for r in range (1, 61):
seconds_passed += 1
print("warm up: {} seconds".format(seconds_passed))
#blink onboard led during warm up
onboard_led.value(1)
time.sleep(0.2)
onboard_led(0)
time.sleep(0.2)
onboard_led(1)
time.sleep(0.2)
print("Warm up successful")
onboard_led(0)
#gas sensor reading
print("Now reading gas levels every {} seconds". format(reading_interval))
while True:
#read gas level and convert to percentages
raw_value = gas_sensor.read_u16()#lowest level is 0 and the highest level is 65535
#convert raw value to percentage
gas_level = (raw_value/65535)*100
gas_percentage = round(gas_level, 1)
#print gas levels in percentages and the seconds_passed
print("Gas level: {}% at {} seconds".format(gas_percentage, seconds_passed))
#save all gas levl reading to the file (gas_reading.csv)
with open(filename, "a") as f:
f.write("{},{}%\n".format(seconds_passed, gas_percentage))
#MAIN LOGIC OF THE GAS SENSOR DETECTOR
if gas_percentage > safe_limit:
led_1.value(1)
time.sleep(1)
led_1.value(0)
time.sleep(0.5)
led_1.value(1)
buzzer.value(1)
time.sleep(0.5)
buzzer.value(0)
time.sleep(0.5)
buzzer.value(1)
else:
led_2.value(1)
time.sleep(1)
led_2.value(0)
time.sleep(1)
led_2.value(1)
time.sleep(1)
led_2.value(0)
time.sleep(1)
led_2.value(1)
led_1.value(0)
buzzer.value(0)
seconds_passed += reading_interval
time.sleep(reading_interval)