Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ESP32_S2
- 재정의함수
- 아두이노
- 아두이노 모터 드라이버
- PICO4
- L293D
- 카이캐드 설치
- string함수
- kotlin
- 유클리드 호제법
- androidstudio
- 우송대 라즈베리파이 피코
- 추상화함수
- 코틀린
- 공약수
- 7세그먼트
- 카이캐드
- 카이캐드 다운로드
- Arduoin
- 라즈베리파이 피코
- ESP32_S2_WROVER
- GCD
- 약수 구하기
- 개발 보드
- 업캐스팅
- 우송대학교
- 안드로이드스튜디오
- 우송대
- ATmega328p
- KiCad
Archives
- Today
- Total
개발자의 생활
2023년 1학기 13주차 과제 본문
13_1
서보모터가 0º ~ 180º로 반복적으로 회전하고 회전방향마다 LED가 점등되는 코드입니다.
from machine import Pin, PWM
from time import sleep
servoPin = PWM(Pin(15))
servoPin.freq(50)
led1 = Pin(16, Pin.OUT)
led2 = Pin(17, Pin.OUT)
def servo(degrees):
minDuty = 500000
maxDuty = 2500000
newDuty=minDuty+(maxDuty-minDuty)*(degrees/180) # new duty is between min and max duty in proportion to its value
servoPin.duty_ns(int(newDuty)) # servo PWM value is set
while True:
for degree in range(0,180,1): # start increasing loop
servo(degree)
sleep(0.01)
led1.value(1)
led2.value(0)
print("increasing -- "+str(degree))
for degree in range(180, 0, -1): # start decreasing loop
servo(degree)
sleep(0.01)
led1.value(0)
led2.value(1)
print("decreasing -- "+str(degree))
13_2
가변저항으로 서보모터의 회전각도를 조정하는 코드입니다.
from machine import Pin, PWM, ADC
from time import sleep
adc = ADC(Pin(28))
servoPin = PWM(Pin(15))
servoPin.freq(50)
led1 = Pin(16, Pin.OUT)
led2 = Pin(17, Pin.OUT)
def servo(degrees):
minDuty = 500000
maxDuty = 2500000
newDuty=minDuty+(maxDuty-minDuty)*(degrees/180) # new duty is between min and max duty in proportion to its value
servoPin.duty_ns(int(newDuty)) # servo PWM value is set
while True:
value=adc.read_u16()
degrees=value*180/65535
servo(degrees)
sleep(0.001)
13_3
회전수를 입력하여 스텝모터를 회전시키는 코드입니다.
from machine import Pin
from time import sleep
IN1 = Pin(16,Pin.OUT)
IN2 = Pin(17,Pin.OUT)
IN3 = Pin(18,Pin.OUT)
IN4 = Pin(19,Pin.OUT)
pins = [IN1, IN2, IN3, IN4]
sequence = [[1,0,0,0],
[0,1,0,0],
[0,0,1,0],
[0,0,0,1]]
num = int(input("회선수를 넣어주세요!"))
for j in range(512*num) :
for step in sequence:
for i in range(len(pins)):
pins[i].value(step[i])
sleep(0.001)
print("회전수 {}을 다 회전했습니다.".format(num))
13_4
스텝모터가 한쪽방향으로 회전하다가 버튼이 눌리는동안은 반대로 회전하는 코드입니다.
from machine import Pin
from time import sleep
motor_GP = [16,17,18,19]
seq_pointer=[0,1,2,3,4,5,6,7]
stepper_obj = []
button = Pin(15, Pin.OUT, Pin.PULL_DOWN)
arrSeq = [[0,0,0,1],
[0,0,1,1],
[0,0,1,0],
[0,1,1,0],
[0,1,0,0],
[1,1,0,0],
[1,0,0,0],
[1,0,0,1]]
for gp in motor_GP:
stepper_obj.append(Pin(gp, Pin.OUT))
def stepper_move(direction):
global seq_pointer #seq_pointer[1:]+seq_pointer[:1] => [1,2,3,4,5,6,7,0]
seq_pointer=seq_pointer[direction:]+seq_pointer[:direction] #seq_pointer[-1:]+seq_pointer[:-1] => [7,0,1,2,3,4,5,6]
for a in range(4):
stepper_obj[a].value(arrSeq[seq_pointer[0]][a])
sleep(0.001)
while True:
if button.value() == 1:
stepper_move(1) # 반복을 통해 seq_pointer 가 이동 [7]->[0]->[1] 등으로
if button.value() == 0:
stepper_move(-1)
'과제 > 라즈베리파이 피코' 카테고리의 다른 글
2023년 1학기 11주차 실습과제 (4) | 2023.05.28 |
---|---|
2023년 1학기 10주차 실습 과제 (0) | 2023.05.21 |
2023년 1학기 9주차 실습 (0) | 2023.05.07 |