class SoilMoistureSensor(BaseSensor): def __init__(self): BaseSensor.__init__(self) self.sensor = None self.soil_moisture_pin = 0 self.setup() def setup(self): try: self.sensor = ADC() self.init = True except Exception as e: print("SoilMoistureSensor.setup: " + str(e)) self.init = False def read(self): try: # connect Grove Capacitive Soil Moisture Sensor (4096-0) - Dry ~2504 Wet ~1543 if not self.init: self.setup() soil_moisture = self.sensor.read_raw(self.soil_moisture_pin) soil_moisture = self.mapNum(soil_moisture, 2504, 1543, 0.00, 1.00) soil_moisture = self.rolling_average(soil_moisture, self.measurements, 20) except Exception as e: print("SoilMoistureSensor.read: " + str(e)) soil_moisture = self.null_value self.init = False finally: return soil_moisture
lcd = CharLCD('PCF8574', address=0x27, port=1, backlight_enabled=True) adc = ADC() Offset = -2.2 print("name: {0:20}, version: {1:4}".format(adc.name, adc.version)) try: print('按下 Ctrl-C 可停止程式') lcd.clear() while True: lcd.cursor_pos = (0, 0) lcd.write_string("Date: {}".format(time.strftime("%Y/%m/%d"))) lcd.cursor_pos = (1, 0) lcd.write_string("Time: {}".format(time.strftime("%H:%M:%S"))) #voltage = adc.read_voltage(0)/1000 raw = adc.read_raw(0) voltage = adc.read_voltage(0) percent = adc.read(0) print("raw:{0:>6}, voltage:{1:>6}, percent(%):{2:>6} ".format( raw, voltage, percent)) # phValue = 7.0 + (voltage - 3.2) * (-5.5) # phValue= voltage*5.0/1024/6 # phValue=3.5*phValue+Offset # print(voltage, phValue) time.sleep(1) except KeyboardInterrupt: lcd.backlight_enabled = False print('關閉程式') finally: lcd.clear()