[ev3dev×Pythhon] 다중 모터 제어

이 글은 파이톤에서 v3를 조작하려는 사람을 위해 쓴 것이다.
이번에 나는 여러 개의 모터를 제어해서 탱크를 운전하고 싶다.

카탈로그


0 . 준비물
1 . 탱크.
2 . 방향을 바꾸다
3 . 프로그램 예
4 . 프로그램 실행 정보

준비물


◯ ev3 (캔)
컴퓨터(VScode)
◯ bluetooth
◯ microSD
자료.(이걸 보면서 진행하는 걸 추천합니다.)

1. 탱크


1-0 . 탱크의 기초 프로그램(자료p.26)


tank00.py
#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_B, OUTPUT_C, MoveTank

tank_drive = MoveTank(OUTPUT_B,OUTPUT_C)

tank_drive.on_for_rotations(80,-30,6)
Point : class ev3dev2.motor.MoveTank(left_motor_port, right_motor_port, desc=None, motor_class=)
Point: 각 모터의 속도를 입력하여 전진 방향을 결정합니다.
※ 속도 범위는 -100부터 100까지입니다.
Point: MINDSTORMS 프로그래밍은 다음과 같습니다.

2. 전향


2-0 . 전향의 기초 프로그램(자료p.29)


steering00.py
#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A, OUTPUT_B, MoveSteering, SpeedPercent

steering_drive = MoveSteering(OUTPUT_A,OUTPUT_B)

steering_drive.on_for_rotations(-10,SpeedPercent(75),5)
Point : class ev3dev2.motor.MoveSteering(left_motor_port, right_motor_port, desc=None, motor_class=)
Point: 탱크 전용.핸들 작업과 유사한 이미지입니다.
Point: 커브 정도를 직접 하나의 수치로 결정할 수 있습니다.
Point:회전 수치
0<회전 수치<=100: 오른쪽으로 회전합니다.100회전 (이 위치에서 우회전).
회전 수치 = 0: 직선
- 100<=회전 수치<0: 왼쪽으로 회전.-100회전(제자리 좌회전)
Point: MINDSTORMS 프로그래밍은 다음과 같습니다.

3. 프로그램 예


3-0 . 회전 수치를 10개씩 올리는 프로그램


example00.py
#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveSteering,SpeedPercent

steering_drive = MoveSteering(OUTPUT_A,OUTPUT_B)

for i in range(0,101,10):
    steering_drive.on_for_seconds(i,SpeedPercent(75),1)
steering_drive.stop()
Point: 0<=i <11 범위에서 i 10개씩 증가

첫 번째 순환(i=0): 자동차 직진
제2차 순환(i=10): 자동차를 약간 오른쪽으로 돌다
 :
제11차 순환(i=100): 자동차가 제자리에서 우회전한다.
Point: for 순환여기 기사.이 비교적 이해하기 쉽다.

3-1 . 임의로 전진 방향을 결정하는 프로그램


example01.py
#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveSteering,SpeedPercent
import random

steering_drive = MoveSteering(OUTPUT_A,OUTPUT_B)

for i in range(10):
    num = random.randint(-100,100)
    print(num)
    steering_drive.on_for_seconds(num,SpeedPercent(75),2)
steering_drive.stop()
Point: 2초 간격으로 임의로 전진 방향 결정
Point : random.randint(min,max)
지정한 범위 (min~max) 에서 int 값 (정수 값) 을 무작위로 꺼냅니다.
Point: 랜덤 함수여기 기사.에 대해 이해하기 쉽습니다.

3-2 . 목록을 사용하여 모터의 회전 속도를 바꾸는 프로그램


example02.py
#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveTank
from time import sleep

tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
speed_list = [-90,30,-10,80,10]

for i in speed_list:
    sleep(1)
    tank_drive.on_for_rotations(i,i,2)
tank_drive.stop()
Point: 목록의 시작 부분에서 순서대로 숫자를 추출하여 각 모터의 속도로 만들기
Point : sleep()
매개 변수가 지정한 초를 기다리는 함수
Point: 목록여기 기사.에 대해 쉽게 이해할 수 있습니다.

3-3 . 조합 목록과 무작위 함수를 통해 모터의 회전 속도를 바꾸는 프로그램


example03.py
#!/usr/bin/env python3
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,MoveTank
from time import sleep
import random

tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
speed_list = [-90,30,-10,80,0]

for i in speed_list:
    sleep(1)
    num = random.choice(speed_list)
    tank_drive.on_for_rotations(num,0,2)
tank_drive.stop()
Point: 목록에서 숫자를 무작위로 꺼내 8회 반복해서 모터 (포트 A) 의 속도로 설정합니다
Point : random.choice()
여러 요소가 있는 객체(예: 리스트 또는 문자열)를 매개 변수로 한 요소를 임의로 반환(출력)합니다.
Point: 무작위여기 기사.도 쉽게 이해할 수 있습니다.

4. 프로그램 실행


방법을 잊어버리면 기사!

최후


읽어주셔서 감사합니다!!
다음에는 표시, 소리, 불빛에 대해 쓰고 싶어요!
더 좋은 기사를 하고 싶어서.
이렇게 하면 더욱 이해하기 쉽다
여기 이해하기 어렵다.
○여기가 틀렸다
여기
등의 의견을 제시해 주십시오.

좋은 웹페이지 즐겨찾기