from machine import Pin
from utime import sleep
import onewire, ds18x20, time
#GPIO input assignments
sprayBtn = Pin(0, Pin.IN, Pin.PULL_DOWN)
tempSw = Pin(15, Pin.IN, Pin.PULL_DOWN)
levelSw = Pin(14, Pin.IN, Pin.PULL_DOWN)
#GPIO output assignments
sprayLED = Pin(5, Pin.OUT)
lowlvlLED = Pin(6, Pin.OUT)
pwrLED = Pin(13, Pin.OUT)
pumpRly = Pin(18, Pin.OUT)
localLED = Pin(25, Pin.OUT)
commLED = Pin(9, Pin.OUT)
commFail = False
#Temperature sensor setup
ds_pin = machine.Pin(22)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
roms = ds_sensor.scan()
temp = 0
print(temp)
#Spraying sequence currently set to spray 3 time every 3 seconds when triggered
def spraySeq():
pumpRly.on()
sprayLED.on()
sleep(3)
pumpRly.off()
sprayLED.off()
sleep(3)
pumpRly.on()
sprayLED.on()
sleep(3)
pumpRly.off()
sprayLED.off()
sleep(3)
pumpRly.on()
sprayLED.on()
sleep(3)
pumpRly.off()
sprayLED.off()
return
while True:
#Indicate power is on
pwrLED.on()
localLED.on()
#Check to see if sensor comm faul
#Scan sensor temperature
try:
ds_sensor.convert_temp()
sleep(.75)
for rom in roms:
temp = ds_sensor.read_temp(rom)
commLED.on()
commFail = False
except onewire.OneWireError:
commLED.on()
sleep(.5)
commLED.off()
sleep(.5)
commFail = True
pass
#Low fluid level in tank indication
if not levelSw.value():
lowlvlLED.off()
#Skip if sensor has failed
if commFail == False:
#Temperature sensor spray trigger
if temp > 90:
spraySeq()
print(temp)
#Manual spray button or temperature switch spray trigger
if sprayBtn.value():
spraySeq()
print("temp fail")
else:
lowlvlLED.on()
sleep(.25)
lowlvlLED.off()
sleep(.25)