Format Mini Theramin
This commit is contained in:
parent
b126b1ad05
commit
566e629611
1 changed files with 21 additions and 18 deletions
|
|
@ -1,27 +1,30 @@
|
|||
# Adafruit Trinket/Gemma Example: Simple Theramin
|
||||
# Read the voltage from a Cadmium Sulfide (CdS) photocell voltage
|
||||
# divider and output a corresponding tone to a piezo buzzer
|
||||
#
|
||||
# Photocell voltage divider center wire to GPIO #2 (analog 1)
|
||||
# and output tone to GPIO #0 (digital 0)
|
||||
"""
|
||||
Adafruit Trinket/Gemma Example: Simple Theramin
|
||||
Read the voltage from a Cadmium Sulfide (CdS) photocell voltage
|
||||
divider and output a corresponding tone to a piezo buzzer
|
||||
|
||||
Photocell voltage divider center wire to GPIO #2 (analog 1)
|
||||
and output tone to GPIO #0 (digital 0)
|
||||
"""
|
||||
|
||||
import board
|
||||
import pulseio
|
||||
import analogio
|
||||
import time
|
||||
|
||||
import analogio
|
||||
import board
|
||||
import pulseio
|
||||
|
||||
photocell_pin = board.A1 # CdS photocell connected to this ANALOG pin
|
||||
speaker_pin = board.D0 # Speaker is connected to this DIGITAL pin
|
||||
scale = 0.03 # Change this to adjust tone scale
|
||||
speaker_pin = board.D0 # Speaker is connected to this DIGITAL pin
|
||||
scale = 0.03 # Change this to adjust tone scale
|
||||
|
||||
# Initialize input/output pins
|
||||
photocell = analogio.AnalogIn(photocell_pin)
|
||||
pwm = pulseio.PWMOut(speaker_pin, variable_frequency=True, duty_cycle=0)
|
||||
pwm = pulseio.PWMOut(speaker_pin, variable_frequency=True, duty_cycle=0)
|
||||
|
||||
while True: # Loop forever...
|
||||
# Read photocell analog pin and convert voltage to frequency
|
||||
pwm.frequency = 220 + int(scale * float(photocell.value))
|
||||
pwm.duty_cycle = 32767 # 50% duty cycle
|
||||
time.sleep(0.4) # Play for 400 ms (adjust to your liking)
|
||||
pwm.duty_cycle = 0 # Stop playing
|
||||
time.sleep(0.05) # Delay 50 ms between notes (also adjustable)
|
||||
# Read photocell analog pin and convert voltage to frequency
|
||||
pwm.frequency = 220 + int(scale * float(photocell.value))
|
||||
pwm.duty_cycle = 32767 # 50% duty cycle
|
||||
time.sleep(0.4) # Play for 400 ms (adjust to your liking)
|
||||
pwm.duty_cycle = 0 # Stop playing
|
||||
time.sleep(0.05) # Delay 50 ms between notes (also adjustable)
|
||||
|
|
|
|||
Loading…
Reference in a new issue