This is the flow of our project, which informs the flow of our code:
- Power on the system, light power switch LED
- Pour beverage into the chilling vessel
- Press button to begin chilling process, light up button LED
- When chilling is finished, pump liquid from chilling vessel into drinking glass
- Turn off button LED
If you're new to Trinket M0 and CircuitPython, check out this guide for getting started! Once you're ready, and have the latest CircuitPython installed on your board, you can proceed.
Copy the code below, and paste it into your favorite text editor.
You can adjust the code for different chilling and pumping times by changing the values of chillTime in minutes and pumpTime in seconds.
You can see that we turn on and off the button's integrated LED which is connected to pin D2 at the start and finish of the cycle, respectively. What about the power LEDs on the board and the toggle switch? Those bypass the Trinket M0 and run directly off of the 12V supply to indicate that it is live.
Next, save the file as code.py on your Trinket M0, which shows up on your computer as the CIRCUITPY USB drive.
# SPDX-FileCopyrightText: 2017 John Edgar Park for Adafruit Industries
#
# SPDX-License-Identifier: MIT
# Chilled Drinkibot
import time
import board
from digitalio import DigitalInOut, Direction, Pull
led = DigitalInOut(board.D2) # Button LED
led.direction = Direction.OUTPUT
button = DigitalInOut(board.D0)
button.direction = Direction.INPUT
button.pull = Pull.UP
chiller = DigitalInOut(board.D3) # Pin to control the chiller and fan
chiller.direction = Direction.OUTPUT
pump = DigitalInOut(board.D4) # Pin to control the pump
pump.direction = Direction.OUTPUT
chillTime = 5 # How many _minutes_ of cooling
pumpTime = 35 # How many seconds of pumping
while True:
# we could also just do "led.value = not button.value" !
if button.value:
print('not')
led.value = False # turn OFF LED
chiller.value = False # turn OFF chiller
pump.value = False # turn OFF pump
else:
print('pressed')
led.value = True # turn ON LED
chiller.value = True # turn ON chiller
time.sleep(chillTime * 60) # wait chiller time (in seconds)
chiller.value = False # turn OFF chiller
pump.value = True # turn ON pump
time.sleep(pumpTime) # wait pump time
pump.value = False # turn OFF pump
led.value = False # turn OFF LED
time.sleep(0.01) # debounce delay
Next, with the chiller assembly and pump connected, you can test out your system, and then finalize assembly!
Page last edited January 22, 2025
Text editor powered by tinymce.