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()