반응형
[11주차 과제]
주제
라즈베리파이에 조이스틱 연결하여 제어하기
목표
조이스틱의 위치를 받아낼수 있다.
사용 물품(부품)
라즈베리파이 4B, MCP3002 핀, 조이스틱, 빵판
실험 과정
1. 빵판으로 라즈베리와 조이스틱을 연결한다.
2. 라즈베리에서 파이썬으로 'spidev' 패키지를 사용한다.
3. 조이스틱의 위치를 파악하여 tkinter 패키지로 그래픽으로 시각화 한다.
실험 코드
import spidev
import time
import tkinter as tk
spi = spidev.SpiDev()
spi.open(0,0)
spi.max_speed_hz = 1000000
spi.bits_per_word = 8
window = tk.Tk()
circle_size = 10
canvas = tk.Canvas(window, width = 512, height = 512)
canvas.pack()
circle = canvas.create_oval(0-circle_size,
255-circle_size,
0+circle_size,
255+circle_size,
fill = 'black')
def measure_ch0():
msg = [0b01100000, 0b00000000]
digit_byte = spi.xfer2(msg)
digit_in = (digit_byte[0] << 8) + digit_byte[1]
return digit_in
def measure_ch1():
msg = [0b01110000, 0b00000000]
digit_byte = spi.xfer2(msg)
digit_in = (digit_byte[0] << 8) + digit_byte[1]
return digit_in
def measure_XY():
mes0 = measure_ch0()/2
mes1 = measure_ch1()/2
return [mes0, mes1]
def draw():
pos = measure_XY()
print("pos : ", pos)
canvas.coords(circle,
pos[0]-circle_size,
pos[1]-circle_size,
pos[0]+circle_size,
pos[1]+circle_size)
window.after(500,draw)
draw()
window.mainloop()
spi.close()
결과 사진 및 동작 설명
spidev 패키지로 ch0, ch1의 신호를 받아 조이스틱의 위치를 출력하여 그래픽으로 어떻게 동작하는지 알수 있는 프로그램이다.
분석 및 토의
점점 프로그램을 만들수록 어려운 프로그램들을 만들어서 너무나 좋았지만,전선이 고정이 힘들어 조금만 건드려도 조이스틱의 위치를 받지 않는 경우가 있었습니다.
반응형
'대학교 과제 > [마프] 과제' 카테고리의 다른 글
[마프] 12주차 과제: 조이스틱, 서보모터 연동 회로/프로그래밍 보고서 (0) | 2022.10.09 |
---|---|
[마프] 9, 10주차 과제: 온습도 센서 회로/프로그래밍 보고서 (0) | 2022.10.08 |
[마프] 6, 7주차 과제: 얼굴 검출과 자동 음성 번역기 보고서 (0) | 2022.09.24 |
[마프] 5주차 과제: QR code를 인식하는 프로그램 (0) | 2022.09.22 |
라즈베리 파이 한 입만 먹고 (0) | 2022.09.07 |