피지컬컴퓨팅/라즈베리파이 피코
라즈베리파이 피코 : 아날로그 데이터 읽기 쓰기 - 습도 센서 , 조이스틱, 서보모터
오즈랩
2025. 5. 28. 15:37
반응형
참고사이트 : https://github.com/mtinet/picoW
GitHub - mtinet/picoW
Contribute to mtinet/picoW development by creating an account on GitHub.
github.com
1. 아날로그 데이터 읽기
(1) Analog1.py : 습도센서
- VCC : 3.3V
- GND : GND
- S : 26번
import machine
import utime
analog_value = machine.ADC(26)
while True:
reading = analog_value.read_u16()/16
print("ADC: ", reading)
utime.sleep(0.2)
(2) Analog2.py : 조이스틱
- VCC : 3.3V
- GND : GND
- URX : 26번
- UTY : 27번
import machine
import utime
analog_valueV = machine.ADC(26)
analog_valueH = machine.ADC(27)
while True:
readingV = analog_valueV.read_u16()/16
readingH = analog_valueH.read_u16()/16
print("ADCV: ",readingV, "ADCH: ", readingH)
utime.sleep(0.2)
2. 아날로그 데이터 쓰기
(1) SevoTest1.py : 서보보터1개
- VCC : 3.3V
- GND : GND
- SIGNAL : 0번
from time import sleep
from machine import Pin, PWM
# 서보 핀, 주파수 설정
servo = PWM(Pin(0))
servo.freq(50)
# 서보 각도를 0~180도로 입력할 수 있도록 함수를 하나 만듬
def setAngle(servoName, angle):
servo = servoName
a = int(((((angle) * 2)/ 180) + 0.5)/20 * 65535)
servo.duty_u16(a)
# 반복동작
while True:
setAngle(servo, 0)
print('0')
sleep(1)
setAngle(servo, 45)
print('45')
sleep(1)
setAngle(servo, 90)
print('90')
sleep(1)
setAngle(servo, 135)
print('135')
sleep(1)
setAngle(servo, 180)
print('180')
sleep(1)
(2) SevoTest2.py : 서보보터2개
- VCC : 3.3V
- GND : GND
- SERVO1 SIGNAL : 0번
- SERVO2 SIGNAL : 1번
from time import sleep
from machine import Pin, PWM
# 서보 핀, 주파수 설정
servo0 = PWM(Pin(0))
servo0.freq(50)
servo1 = PWM(Pin(1))
servo1.freq(50)
# 서보 각도를 0~180도로 입력할 수 있도록 함수를 하나 만듬
def setAngle(servoName, angle):
servo = servoName
a = int(((((angle) * 2)/ 180) + 0.5)/20 * 65535)
servo.duty_u16(a)
# 반복동작
while True:
setAngle(servo0, 0)
setAngle(servo1, 0)
sleep(1)
setAngle(servo0, 45)
setAngle(servo1, 45)
sleep(1)
setAngle(servo0, 90)
setAngle(servo1, 90)
sleep(1)
setAngle(servo0, 135)
setAngle(servo1, 135)
sleep(1)
setAngle(servo0, 180)
setAngle(servo1, 180)
sleep(1)
(3) SevoJoystick.py : 서보보터 + 조이스틱
- VCC : 3.3V
- GND : GND
- SERVO1 SIGNAL : 0번
- 조이스틱 URX: 26번
from time import sleep
import machine
from machine import Pin, PWM
# 아날로그 값 읽기
analog_value = machine.ADC(26)
# 서보 핀, 주파수 설정
servo = PWM(Pin(0))
servo.freq(50)
# 서보 각도를 0~180도로 입력할 수 있도록 함수를 하나 만듬
def setAngle(servoName, angle):
servo = servoName
a = int(((((angle) * 2)/ 180) + 0.5)/20 * 65535)
servo.duty_u16(a)
# 반복동작
while True:
reading = analog_value.read_u16()/16
reading = round((reading/4096) * 180)
print("ADC: ", reading)
setAngle(servo, reading)
sleep(0.1)
- VCC : 3.3V
- GND : GND
- SERVO1 SIGNAL : 0번
- SERVO2 SIGNAL : 1번
- 조이스틱 URX: 26번
- 조이스틱 URY: 27번
from time import sleep
import machine
from machine import Pin, PWM
# 아날로그 값 읽기
analog_valueV = machine.ADC(26)
analog_valueH = machine.ADC(27)
# 서보 핀, 주파수 설정
servo0 = PWM(Pin(0))
servo0.freq(50)
servo1 = PWM(Pin(1))
servo1.freq(50)
# 서보 각도를 0~180도로 입력할 수 있도록 함수를 하나 만듬
def setAngle(servoName, angle):
servo = servoName
a = int(((((angle) * 2)/ 180) + 0.5)/20 * 65535)
servo.duty_u16(a)
# 반복동작
while True:
readingV = analog_valueV.read_u16()/16
readingH = analog_valueH.read_u16()/16
readingV = round((readingV/4096) * 180)
readingH = round((readingH/4096) * 180)
print("ADCV: ",readingV, "ADCH: ", readingH)
setAngle(servo0, readingV)
setAngle(servo1, readingH)
sleep(0.1)
반응형