서보모터
갈색 : GRD
주황 : GPIO
빨강 : 5v
import RPi.GPIO as G
import time
servo = 18
G.setwarnings(False)
G.setmode(G.BCM)
G.setup(servo, G.OUT)
pwm = G.PWM(servo, 50) # pwm 동작 주파수 50Hz
pwm.start(3.0) # 서브모터 시작 각도 : 0도
for cnt in range(3):
pwm.ChangeDutyCycle(3.0)
time.sleep(1)
pwm.ChangeDutyCycle(7.5)
time.sleep(1)
pwm.ChangeDutyCycle(12.5) # 180도 회전
time.sleep(1)
# 5.5 : 45도, 9.5 : 135도
pwm.ChangeDutyCycle(0.0)
pwm.stop()
G.cleanup()
MCP3008, SPI, 가변저항
GRD : -
5v, 3v : +
---------------------
오른쪽
1, 2 : 3v
3 : GRD
4 : SPISCLK
5 : SPMISO
6 : SPMOSI
7 : SPICE0
8 : GRD
아날로그 입력(SPI 통신)
SPI(Serial Peripheral Interface)
대표적인 동기적 통신 방식
클럭(신호주기)라인으로 들어오는 rising(low to high) 또는 falling(high to low)
신호를 인식하여 데이터 값을 읽는 방식
import spidev
import time
delay = 0.5
pot_ch = 0
spi = spidev.SpiDev() # spi 통신용 객체
spi.open(0,0) # spi 통신 회선 열기
spi.max_speed_hz = 100000 # 통신 속도 설정
def readadc(adcnum):
if adcnum > 7 or adcnum < 0:
return -1
r = spi.xfer2([1, 8 + adcnum << 4, 0])
data = ((r[1] & 3) << 8) + r[2]
return data
try:
while True:
pot_value = readadc(pot_ch)
print(f'저항값 : {pot_value}')
time.sleep(delay)
except KeyboardInterrupt:
pass
finally:
print('프로그램 종료')
MCP3008, SPI, 빛센서
빛센서
한쪽 : 3v
한쪽 : MCP3008 0번, 10K 저항, GRD
import spidev
import time
delay = 0.5
ldr_ch = 0
spi = spidev.SpiDev()
spi.open(0,0)
spi.max_speed_hz = 100000
def readldr(adcnum):
if adcnum > 7 or adcnum < 0:
return -1
r = spi.xfer2([1, 8 + adcnum << 4, 0])
data = ((r[1] & 3) << 8) + r[2]
return data
try:
while True:
lv = readldr(ldr_ch)
print(f'밝기 : {lv}')
time.sleep(delay)
except KeyboardInterrupt:
pass
finally:
print('프로그램 종료')
'공부기록' 카테고리의 다른 글
6월 29일 라즈베리파이 - Open CV (0) | 2023.06.29 |
---|---|
6월 28일 라즈베리파이 - 카메라연결 (0) | 2023.06.28 |
6월 26일 라즈베리파이 - 네트워크 (0) | 2023.06.26 |
6월 22일 라즈베리파이 - 온습도, 초음파거리, PWM장치 (0) | 2023.06.22 |
6월 21일 라즈베리파이 - VS Code 연동, LED 2 (0) | 2023.06.21 |