아래 그림은 2017년 8월 중순에 작성했던 블로그로서 라즈베리 파이에서 버튼을 생성할 수 있는 Tkinter 라이브러리를 사용하였다.
2년이 지난 지금 실행시켜보니 그다지 마음에 들지 않는 에러 메시지가 발생했다.
2년 전에 별 문제가 없었지만 워낙 시간이 경과했으며 아울러 OS 도 Jessie에서 Stretch 로 업그레이드 한게 1년이 되어 가며 현재의 OS는 파이선2 sms djelfh 날라갔는지 보이지도 않으며 파이선3만 들어 있는 시스템이다.
터미널에서 sudo apt-get udate 와 sudo apt-get upgrade를 실행하자. 오랫동안 내버려둬서 그런지 거의 30분가량 시간을 소모했다. 그런 조치 후 실행해도 동일한 에러 메시지가 발생하여 세 가지 조치를 취하였다.
하나는 파이선 코드 헤더 영역에서 파이선 2.7 버전용인 대문자 Tk를 파이선3 버전용인 소문자 tk 로 바꾸었다. 물론 RPI.GPIO 나 tkinter는 코드 시작 전에 라즈베리 파이 보드에 설치되어 있어야 한다. tkinter의 경우는 다음과 같다.
sudo apt-get install python3-tk
두번째는 파이선 코드 본문을 새롭게 renovation 했다. 완전히 새로 작성하는 것은 아니고 tk 가 크라스 명령으로 쓰이므로 과거 win 으로 쓰던 부분을 찾아 죄다 수정하였다. 아울러 일부 .pack() 으로 수정한 곳도 있다.
아래에서 박스 친 부분이 수정된 곳이다.
라즈베리 파이 보드와 T 바를 사용하여 빵판에서 LED 양극을 16번 핀에 연결하였다. LED에 흐르는 전류의 최대 값을 제한 할 수 있도록 220옴 저항을 LED 과 음극과 연결하고 저항의 다른 쪽은 GND 즉 0V 에 배선 한다.
세 번째로 터미널 창에서 실행 코드가 위치한 디렉토리에서 command line 방식으로 명령을 실행시켰다.
sudo python3 tkinter_root_led_on_off.py
버튼 창이 뜨면 LED on을 누르면 LED OFF 버튼으로 바뀜과 동시에 16번 핀에 설치된 LED 가 ON 됨을 확인할 수 있다. 마지막으로 Exit 버튼을 누르면 실행이 끝난다.
유튜브 동영상에서 LED on 버튼 사용을 참조하자.
https://youtu.be/tXrZYdpiwlo
#tkinter_toot_led_on_off.py
import RPi.GPIO as GPIO
import tkinter as tk
from tkinter import font
GPIO.setmode(GPIO.BCM)
GPIO.setup(16, GPIO.OUT)
GPIO.output(16, GPIO.LOW)
root = tk.Tk()
frame = tk.Frame(root)
frame.pack()
myFont = font.Font(family = 'Helvetica', size = 36, weight = 'bold')
def ledON():
print("LED button pressed")
if GPIO.input(16):
GPIO.output(16, GPIO.LOW)
ledButton["text"] = "LED on"
else:
GPIO.output(16, GPIO.HIGH)
ledButton["text"] = "LED OFF"
def exitProgram():
print("Exit button pressed")
GPIO.cleanup()
root.quit()
root.title("First GUI")
root.geometry("600x300")
exitButton = tk.Button(root,text="Exit",font=myFont,command=exitProgram,height=2,width=6)
exitButton.pack()
ledButton = tk.Button(root,text="LED on", font = myFont,command = ledON,height=2,width=8)
ledButton.pack()
root.mainloop()
'라즈베리' 카테고리의 다른 글
다시 쓰는 라즈베리 파이 Flask 와이파이 모듈에 의한 웹브라우저 시간 정보 출력 파이선 3 코딩 (0) | 2019.07.13 |
---|---|
다시 쓰는 라즈베리 파이선3 Flask 예제 (0) | 2019.07.10 |
라즈베리 NOIR Camera V2 (0) | 2018.11.25 |
Pi 카메라 Face Detection을 위한 라즈베리 파이 Stretch버전에 Opencv 3.3 설치 (0) | 2018.09.27 |
초보자를 위한 라즈베리파이 C 코드 편집 실행에 의한 LED ON OFF (0) | 2018.03.13 |