728x90
조이스틱을 활용한 터틀 그림판을 만들어 보았습니다.
Python turtle 이란
터틀(거북이) 그래픽은 아이들에게 프로그래밍을 소개하는 데 널리 사용되던 방법입니다.
거북이가 들고 다니는 펜은 활성화하거나, 색상을 설정하거나, 너비를 설정하여 제어할 수도 있습니다.
사용 센서
사용된 센서는 총 3가지로 INPUT 센서 2가지 OUTPUT 센서 1가지 입니다.
INPUT 센서는 조이스틱과 스위치 센서 2개 입니다.
조이스틱은 거북이를 움직이고 조이스틱 스위치는 그림판을 초기화 합니다.
스위치 1개는 거북이 펜 활성화 버튼, 나머지 1개는 펜 색상 변경 버튼 입니다.
OUTPUT센서는 RGB LED를 사용하였습니다.
버튼을 눌러 색상을 변경할 때 RGB LED에 색상을 출력해줍니다.
회로도
조이스틱 센서가 없어서 그림으로 그려넣었습니다.
연결 사진
저번에 했던 포스팅을 참고하여 prototype을 실행해줌
업로드 완료 후 파이썬을 실행함
코드 설명
코드
from Arduino import Arduino
import time
import turtle as t
board = Arduino('115200')
JOY_Y = 0
JOY_X = 1
JOY_SW = 2
BUTTON_A = 3
BUTTON_B = 4
RED = 9
GREEN = 10
BLUE = 11
board.pinMode(JOY_X, "INPUT")
board.pinMode(JOY_Y, "INPUT")
board.pinMode(JOY_SW, "INPUT")
board.digitalWrite(JOY_SW, "HIGH")
board.pinMode(BUTTON_A, "INPUT")
board.pinMode(BUTTON_B, "INPUT")
board.pinMode(RED, "OUTPUT")
board.pinMode(GREEN, "OUTPUT")
board.pinMode(BLUE, "OUTPUT")
t.title("turtle")
t.shape("turtle")
t.speed(0)
t.penup()
r = 0
g = 0
b = 0
cnt1 = 0
cnt2 = 0
while True:
# 초기화 #################################
if (board.digitalRead(JOY_SW)==0):
t.clear()
t.goto(0,0)
t.penup()
t.color("black")
board.digitalWrite(RED, "LOW")
board.digitalWrite(GREEN, "LOW")
board.digitalWrite(BLUE, "LOW")
# 방향 ###################################
if (board.analogRead(JOY_X)<=10):
t.left(10)
elif (board.analogRead(JOY_X)>=1000):
t.right(10)
if (board.analogRead(JOY_Y)<=10):
t.backward(10)
elif (board.analogRead(JOY_Y)>=1000):
t.forward(10)
# 펜 #####################################
if (board.digitalRead(BUTTON_A)):
cnt1 += 1
time.sleep(0.2)
if (cnt1 % 2 == 0):
t.penup()
elif (cnt1 % 2 == 1):
t.pendown()
# 색상 ###################################
if (board.digitalRead(BUTTON_B)):
cnt2 += 1
time.sleep(0.2)
if (cnt2 % 4 == 0):
t.color("black")
board.digitalWrite(RED, "LOW")
board.digitalWrite(GREEN, "LOW")
board.digitalWrite(BLUE, "LOW")
elif (cnt2 % 4 == 1):
t.color("red")
board.digitalWrite(RED, "HIGH")
board.digitalWrite(GREEN, "LOW")
board.digitalWrite(BLUE, "LOW")
elif (cnt2 % 4 == 2):
t.color("green")
board.digitalWrite(RED, "LOW")
board.digitalWrite(GREEN, "HIGH")
board.digitalWrite(BLUE, "LOW")
elif (cnt2 % 4 == 3):
t.color("blue")
board.digitalWrite(RED, "LOW")
board.digitalWrite(GREEN, "LOW")
board.digitalWrite(BLUE, "HIGH")
결과
참고
https://docs.python.org/ko/dev/library/turtle.html
728x90
'개발 > Arduino' 카테고리의 다른 글
[Arduino] 프로세싱으로 가변저항 값 출력하기 (0) | 2021.11.19 |
---|---|
[Arduino] 조도 센서로 LED 제어하기 (+파이썬) (0) | 2021.09.18 |
[Arduino] 온도 센서로 RGB LED 제어하기 (+파이썬) (0) | 2021.09.17 |