mirror of
https://github.com/pimoroni/grow-python
synced 2025-10-25 15:19:23 +00:00
Re-index channels from 1
This commit is contained in:
@@ -6,6 +6,9 @@ from PIL import Image, ImageDraw, ImageFont
|
||||
from fonts.ttf import RobotoMedium as UserFont
|
||||
import RPi.GPIO as GPIO
|
||||
|
||||
from grow.moisture import Moisture
|
||||
from grow.pump import Pump
|
||||
|
||||
GPIO.setmode(GPIO.BCM)
|
||||
GPIO.setwarnings(False)
|
||||
|
||||
@@ -15,6 +18,18 @@ LABELS = ['A', 'B', 'X', 'Y']
|
||||
channel_count = 3
|
||||
channel_selected = 0
|
||||
|
||||
sensors = [
|
||||
Moisture(channel=1),
|
||||
Moisture(channel=2),
|
||||
Moisture(channel=3)
|
||||
]
|
||||
|
||||
pumps = [
|
||||
Pump(channel=1),
|
||||
Pump(channel=2),
|
||||
Pump(channel=3)
|
||||
]
|
||||
|
||||
GPIO.setup(BUTTONS, GPIO.IN, pull_up_down=GPIO.PUD_UP)
|
||||
|
||||
font = ImageFont.truetype(UserFont, 14)
|
||||
@@ -37,7 +52,7 @@ display = ST7735.ST7735(
|
||||
dc=9,
|
||||
backlight=12,
|
||||
rotation=270,
|
||||
spi_speed_hz=10000000
|
||||
spi_speed_hz=80000000
|
||||
)
|
||||
|
||||
ramp = [
|
||||
@@ -58,6 +73,11 @@ ramp_sat = [
|
||||
def indicator_color(value, r=None):
|
||||
if r is None:
|
||||
r = ramp
|
||||
if value == 1.0:
|
||||
return r[-1]
|
||||
if value == 0.0:
|
||||
return r[0]
|
||||
|
||||
value *= len(r) - 1
|
||||
a = int(math.floor(value))
|
||||
b = a + 1
|
||||
@@ -116,9 +136,13 @@ picked = random.sample(plants, 3)
|
||||
|
||||
while True:
|
||||
t = time.time() / 10.0
|
||||
c1 = (math.sin(math.pi + t * math.pi) + 1.0) / 2.0
|
||||
c2 = (math.sin(t * math.pi) + 1.0) / 2.0
|
||||
c3 = (math.sin(math.pi + t * math.pi) + 1.0) / 2.0
|
||||
#c1 = (math.sin(math.pi + t * math.pi) + 1.0) / 2.0
|
||||
#c2 = (math.sin(t * math.pi) + 1.0) / 2.0
|
||||
#c3 = (math.sin(math.pi + t * math.pi) + 1.0) / 2.0
|
||||
c1 = 1.0 - sensors[0].saturation
|
||||
c2 = 1.0 - sensors[1].saturation
|
||||
c3 = 1.0 - sensors[2].saturation
|
||||
print(c1, c2, c3)
|
||||
|
||||
draw.rectangle((21, 0, 138, HEIGHT), (255, 255, 255)) # Erase channel area
|
||||
|
||||
@@ -156,4 +180,4 @@ while True:
|
||||
icon(image, icon_snooze, (0, HEIGHT - 20), (r, 129, 129))
|
||||
|
||||
display.display(image.convert("RGB"))
|
||||
time.sleep(1.0 / 30)
|
||||
time.sleep(1.0 / 5)
|
||||
|
||||
@@ -10,19 +10,19 @@ MOISTURE_INT_PIN = 4
|
||||
class Moisture(object):
|
||||
"""Grow moisture sensor driver."""
|
||||
|
||||
def __init__(self, channel=0, wet_point=None, dry_point=None):
|
||||
def __init__(self, channel=1, wet_point=None, dry_point=None):
|
||||
"""Create a new moisture sensor.
|
||||
|
||||
Uses an interrupt to count pulses on the GPIO pin corresponding to the selected channel.
|
||||
|
||||
The moisture reading is given as pulses per second.
|
||||
|
||||
:param channel: One of 0, 1 or 2. 3 can optionally be used to set up a sensor on the Int pin (BCM4)
|
||||
:param channel: One of 1, 2 or 3. 4 can optionally be used to set up a sensor on the Int pin (BCM4)
|
||||
:param wet_point: Wet point in pulses/sec
|
||||
:param dry_point: Dry point in pulses/sec
|
||||
|
||||
"""
|
||||
self._gpio_pin = [MOISTURE_1_PIN, MOISTURE_2_PIN, MOISTURE_3_PIN, MOISTURE_INT_PIN][channel]
|
||||
self._gpio_pin = [MOISTURE_1_PIN, MOISTURE_2_PIN, MOISTURE_3_PIN, MOISTURE_INT_PIN][channel - 1]
|
||||
|
||||
GPIO.setwarnings(False)
|
||||
GPIO.setmode(GPIO.BCM)
|
||||
@@ -30,6 +30,7 @@ class Moisture(object):
|
||||
|
||||
self._count = 0
|
||||
self._reading = 0
|
||||
self._new_data = False
|
||||
self._wet_point = wet_point if wet_point is not None else 100
|
||||
self._dry_point = dry_point if dry_point is not None else 900
|
||||
self._time_start = time.time()
|
||||
|
||||
@@ -7,12 +7,22 @@ PUMP_1_PIN = 17
|
||||
PUMP_2_PIN = 27
|
||||
PUMP_3_PIN = 22
|
||||
PUMP_PWM_FREQ = 10000
|
||||
PUMP_MAX_DUTY = 60
|
||||
PUMP_MAX_DUTY = 90
|
||||
|
||||
|
||||
class Pump(object):
|
||||
def __init__(self, channel):
|
||||
self._gpio_pin = [PUMP_1_PIN, PUMP_2_PIN, PUMP_3_PIN][channel]
|
||||
"""Grow pump driver."""
|
||||
|
||||
def __init__(self, channel=1):
|
||||
"""Create a new pump.
|
||||
|
||||
Uses soft PWM to drive a Grow pump.
|
||||
|
||||
:param channel: One of 1, 2 or 3.
|
||||
|
||||
"""
|
||||
|
||||
self._gpio_pin = [PUMP_1_PIN, PUMP_2_PIN, PUMP_3_PIN][channel - 1]
|
||||
|
||||
GPIO.setmode(GPIO.BCM)
|
||||
GPIO.setwarnings(False)
|
||||
@@ -37,7 +47,7 @@ class Pump(object):
|
||||
"""Stop the pump."""
|
||||
self.set_speed(0)
|
||||
|
||||
def pulse(self, speed, timeout=0.1, blocking=True, force=False):
|
||||
def dose(self, speed, timeout=0.1, blocking=True, force=False):
|
||||
"""Pulse the pump for timeout seconds.
|
||||
|
||||
:param timeout: Timeout, in seconds, of the pump pulse
|
||||
|
||||
Reference in New Issue
Block a user