Raspberry Pi PWM, 피에조부저, 서보모터

led +핀 : 17번

led -핀 : GND

 

import RPi.GPIO as g
import time

led_pin = 17
g.setmode(g.BCM)
g.setup(led_pin, g.OUT)

#소프트웨어 PWM을 사용하기 위해 객체를 생성
#첫 번째 매개변수 : PWM 출력할 핀
#두 번째 매개변수 : 주파수 값(0보다 큰 값) : 1초에 몇번 깜빡거릴지
pwm = g.PWM(led_pin,2)
pwm.start(50) #소프트웨어 PWM 시작 - 파형을 출력(0~100까지의 숫자를 입력)
              #duty비율 50? : HIGH비율을 유지하는 시간이 50%
              #1초에 0.5초 불이 켜지고 꺼진다
time.sleep(1)
pwm.ChangeDutyCycle(100) #50% 였다가 100%로 변경
try:
    while True: #LED로 나가는 출력파형이 유지될 수 있도록
        pass
except KeyboardInterrupt:
    pass

pwm.stop() #PWM 출력을 멈춤
g.cleanup()

피에조부저 +핀 : 27번

-핀 : GND

 

import RPi.GPIO as g
import time

buzzer_pin = 27

g.setmode(g.BCM)
g.setup(buzzer_pin,g.OUT)

pwm = g.PWM(buzzer_pin,262)
pwm.start(50)

time.sleep(2)
pwm.ChangeDutyCycle(0) #HIGH구간을 0으로 설정 - 소리 꺼짐
pwm.stop()
g.cleanup()

서보모터는 5V에 연결해줘야 한다.

갈색 - GND

빨간색 - 5V

주황색 - 18핀

import RPi.GPIO as g
import time

servo_pin = 18
g.setmode(g.BCM)
g.setup(servo_pin, g.OUT)
pwm = g.PWM(servo_pin,50)
pwm.start(0) #서보모터의 초기값을 0으로 설정
for i in range(30,125):#0도 - 2.5, 90도:7.5, 180도:12.5
    pwm.ChangeDutyCycle(i/10)
    time.sleep(0.02)
    
time.sleep(2)
pwm.ChangeDutyCycle(0)
pwm.stop()
g.cleanup()

이렇게 하면 서보모터의 채터링이 발생한다

 

댓글

Designed by JB FACTORY