You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

#### 54 lines 1.7KB Raw Permalink Blame History

 ``````import machine class CSMS12: AirValue = 852 # Totally dry in air WaterValue = 374 # Totally wet in water Interval = 0 SoilMoistureValue = 0 def __init__(self, pin = 0): # Set up port for reading values self.Adc = machine.ADC(pin) # Calculate range of intervals for Wet/Okay Wet/Dry # This is based on the ranges of wet and dry values that I found by # having the sensor in water and by having it in dry air. self.Interval = (self.AirValue - self.WaterValue) / 3 # Just a wrapper to read the value def getRawValue(self): return self.Adc.read() # Do the varying scale of the moisture for Capacinance readers def getScaledValue(self): scaledValue = 0 rawValue = self.getRawValue() # Calculate percentage within the calibrated range scaledValue = ( ((self.WaterValue - rawValue) * 100) / (self.WaterValue - self.AirValue) ) # Make sure that we don't go out of range if scaledValue < 0: scaledValue = 0 if scaledValue > 100: scaledValue = 100 # Convert so 0% is completely dry and 100% is completely wet. return 100 - scaledValue # Get current interval of how wet the sensor is def getInterval(self): value = self.getScaledValue() if 75 <= value <= 100: return("Very Moist (Value: {}%)".format(value)) elif 50 <= value <= 75: return("Quite Moist (Value: {}%)".format(value)) elif 25 <= value <= 50: return("Kinda Dry (Value: {}%)".format(value)) elif 0 <= value <= 25: return("Very Dry (Value: {}%)".format(value))``````