Adafruit_Learning_System_Gu.../Make_It_Talk/code.py
2022-02-18 17:02:35 -05:00

80 lines
2.3 KiB
Python

# SPDX-FileCopyrightText: 2018 Anne Barela for Adafruit Industries
#
# SPDX-License-Identifier: MIT
# CircuitPython Speaking Thermometer Example
# Coded for Circuit Playground Express but it may be
# modified for any CircuitPython board with changes to
# button, thermister and audio board definitions.
# Anne Barela for Adafruit Industries, MIT License
import time
import board
import adafruit_thermistor
import audioio
import audiocore
from digitalio import DigitalInOut, Direction, Pull
# Enables the speaker for audio output
spkrenable = DigitalInOut(board.SPEAKER_ENABLE)
spkrenable.direction = Direction.OUTPUT
spkrenable.value = True
D1 = board.BUTTON_A
D2 = board.BUTTON_B
# Button A setup (Celsius)
button_a = DigitalInOut(D1)
button_a.direction = Direction.INPUT
button_a.pull = Pull.DOWN
# Button B setup (Fahrenheit)
button_b = DigitalInOut(D2)
button_b.direction = Direction.INPUT
button_b.pull = Pull.DOWN
# Set up reading the Circuit Playground Express thermistor
thermistor = adafruit_thermistor.Thermistor(
board.TEMPERATURE, 10000, 10000, 25, 3950)
# Audio playback object and helper to play a full file
aout = audioio.AudioOut(board.A0)
# Play a wave file
def play_file(wavfile):
wavfile = "/numbers/" + wavfile
print("Playing", wavfile)
with open(wavfile, "rb") as f:
wav = audiocore.WaveFile(f)
aout.play(wav)
while aout.playing:
pass
# Function should take an integer -299 to 299 and say it
# Assumes wav files are available for the numbers
def read_temp(temp):
play_file("The temperature is.wav")
if temp < 0:
play_file("negative.wav")
temp = - temp
if temp >= 200:
play_file("200.wav")
temp = temp - 200
elif temp >= 100:
play_file("100.wav")
temp = temp - 100
if (temp >= 0 and temp < 20) or temp % 10 == 0:
play_file(str(temp) + ".wav")
else:
play_file(str(temp // 10) + "0.wav")
temp = temp - ((temp // 10) * 10 )
play_file(str(temp) + ".wav")
play_file("degrees.wav")
while True:
if button_a.value:
read_temp(int(thermistor.temperature))
play_file("celsius.wav")
if button_b.value:
read_temp(int(thermistor.temperature * 9 / 5 + 32))
play_file("fahrenheit.wav")
time.sleep(0.01)