2017 멀티캠퍼스/Raspberry Pi
#8 라즈베리파이 Piezo 센서
꿈꾸는어린이
2018. 1. 30. 14:46
일시 : 2018.01.10 15:00~18:00
내용 : Piezo Sensor, 초음파 센서
//
GPIO Pieze
piezo buzzer의 동작 전압은 4~8v이고 AP의 GPIO전압은 3.3v가 최대 -> 증폭기를 통해 5v전압을 piezo에 전달.
주파수 조절을 통해 음의 높낮이를 조절
Piezo 연결된 BCM 13핀의 ON/OFF
일정한 시간 간격으로 High, Low 출력
실습
- 도, 레, 미, 파, 솔, 라, 시, 도 소리 출력
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
gpio_pin = 13
scale = [ 261, 294, 329, 349, 392, 440, 493, 523 ]
#도 레 미 파 솔 라 시 도 (주파수)
GPIO.setup(gpio_pin, GPIO.OUT)
try:
p = GPIO.PWM(gpio_pin, 100) # 100hz, p 인스턴스
p.start(100) # start the PWM on 100% duty cycle
p.ChangeDutyCycle(90) # change the duty cycle to 90%
for i in range(8):
print (i+1)
p.ChangeFrequency(scale[i]) # 주파수 변경
time.sleep(1)
p.stop() # stop the PWM output
finally:
GPIO.cleanup()
-학교 종이 땡땡땡
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
gpio_pin = 13
scale = [ 261, 294, 329, 349, 392, 440, 493, 523 ]
#도 레 미 파 솔 라 시 도
GPIO.setup(gpio_pin, GPIO.OUT)
list = [4, 4, 5, 5, 4, 4, 2, 4, 4, 2, 2, 1]
try:
p = GPIO.PWM(gpio_pin, 100)
p.start(100)
p.ChangeDutyCycle(90)
for i in range(12):
print (i+1)
p.ChangeFrequency(scale[list[i]])
if i == 6:
time.sleep(1)
else :
time.sleep(0.5)
p.stop()
finally:
GPIO.cleanup()