728x90
반응형
💡 PWM 제어
▪ 디지털 --> 아날로그 값
▪ convert dac
📃PWM으로 LED 실습
#-*-coding:utf-8-*-
# 필요한 라이브러리를 불러옵니다.
import RPi.GPIO as GPIO
import time
# 불필요한 warning 제거, GPIO핀의 번호 모드 설정
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
# GPIO 18번 핀을 출력으로 설정
GPIO.setup(18, GPIO.OUT)
# PWM 인스턴스 p를 만들고 GPIO 18번을 PWM 핀으로 설정, 주파수 = 50Hz
p = GPIO.PWM(18, 50)
p.start(0) # PWM 시작 , 듀티비 = 0
try:
while 1:
for dc in range(0, 101, 5): # dc의 값은 0에서 100까지 5만큼 증가
p.ChangeDutyCycle(dc) # dc의 값으로 듀티비 변경
time.sleep(0.1) # 0.1초 딜레이
for dc in range(100, -1, -5): # dc의 값은 100에서 0까지 5만큼 감소
p.ChangeDutyCycle(dc) # dc의 값으로 듀티비 변경
time.sleep(0.1) # 0.1초 딜레이
except KeyboardInterrupt: # 키보드 Ctrl+C 눌렀을 때 예외발생
pass # 무한반복을 빠져나와 아래의 코드를 실행
p.stop() # PWM을 종료
GPIO.cleanup() # GPIO 설정을 초기화
📃PWM으로 부저 실습
#-*-coding:utf-8-*-
# 필요한 라이브러리를 불러옵니다.
import RPi.GPIO as GPIO
import time
# 불필요한 warning 제거, GPIO핀의 번호 모드 설정
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
# GPIO 18번 핀을 출력으로 설정
GPIO.setup(18, GPIO.OUT)
# PWM 인스턴스 p를 만들고 GPIO 18번을 PWM 핀으로 설정, 주파수 = 100Hz
p = GPIO.PWM(18, 100)
# 4옥타브 도~시 , 5옥타브 도의 주파수
Frq = [ 262, 294, 330, 349, 392, 440, 493, 523 ]
speed = 0.5 # 음과 음 사이 연주시간 설정 (0.5초)
p.start(10) # PWM 시작 , 듀티사이클 10 (충분)
try:
while 1:
for fr in Frq:
p.ChangeFrequency(fr) #주파수를 fr로 변경
time.sleep(speed) #speed 초만큼 딜레이 (0.5s)
except KeyboardInterrupt: # 키보드 Ctrl+C 눌렀을때 예외발생
pass # 무한반복을 빠져나와 아래의 코드를 실행
p.stop() # PWM을 종료
GPIO.cleanup() # GPIO 설정을 초기화
📃 PWM으로 서보모터 실습
#-*-coding:utf-8-*-
# 필요한 라이브러리를 불러옵니다.
import RPi.GPIO as GPIO
import time
#서보모터를 PWM으로 제어할 핀 번호 설정
SERVO_PIN = 18
# 불필요한 warning 제거
GPIO.setwarnings(False)
# GPIO핀의 번호 모드 설정
GPIO.setmode(GPIO.BCM)
# 서보핀의 출력 설정
GPIO.setup(SERVO_PIN, GPIO.OUT)
# PWM 인스턴스 servo 생성, 주파수 50으로 설정
servo = GPIO.PWM(SERVO_PIN,50)
# PWM 듀티비 0 으로 시작
servo.start(0)
try:
while True:
# 듀티비를 변경하여 서보모터를 원하는 만큼 움직임
servo.ChangeDutyCycle(7.5) # 90도
time.sleep(1)
servo.ChangeDutyCycle(12.5) # 180도
time.sleep(1)
servo.ChangeDutyCycle(2.5) # 0도
time.sleep(1)
except KeyboardInterrupt:
servo.stop()
GPIO.cleanup()
💡 초음파센서(HC-SR04)
내보내는 Trigger 핀 (output) - 3.3V
Echo핀으로 들어오는 값은 5V 단위로 들어오기 때문에, 3.3V이내로 다운 시켜야한다.
낮출 때 비례로 맞춰 낮추어야 한다.
728x90
반응형
'HW > Raspberry Pi | Arduino' 카테고리의 다른 글
라즈베리파이 - BMP180(대기압 센서) (0) | 2022.08.18 |
---|---|
라즈베리파이 - PIR 센서(HC-SR501) (0) | 2022.08.18 |
라즈베리파이 - MariaDB 설치 (0) | 2022.08.18 |
라즈베리파이 - Flask (0) | 2022.08.18 |
라즈베리파이 - 실습 (0) | 2022.08.17 |
댓글