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
Exemplo n.º 2
0
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()