아두이노 코딩-209: 다시 쓰는 라즈베리 파이선3 tkinter 버튼에 의한 LED ON OFF

in kr •  6 years ago  (edited)

아래 그림은 2017년 8월 중순에 작성했던 블로그로서 라즈베리 파이에서 버튼을 생성할 수 있는 파이선 2.7버 전을 위한 Tkinter 라이브러리를 사용하였다.

noname01.png

2년이 지난 지금 실행시켜보니 그다지 마음에 들지 않는 에러 메시지가 발생했다.

noname02.png

2년 전에 별 문제가 없었지만 워낙 시간이 경과했으며 아울러 OS 도 Jessie에서 Stretch 로 업그레이드 한게 1년이 되어 가며 현재의 OS는 파이선2 는 어디로 날라갔는지 보이지도 않으며 파이선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

noname03.png

두번째는 파이선 코드 본문을 새롭게 renovation 했다. 완전히 새로 작성하는 것은 아니고 tk 가 크라스 명령으로 쓰이므로 과거 win 으로 쓰던 부분을 찾아 죄다 수정하였다. 아울러 일부 .pack() 으로 수정한 곳도 있다.

아래에서 박스 친 부분이 수정된 곳이다.

noname04.png

라즈베리 파이 보드와 T 바를 사용하여 빵판에서 LED 양극을 16번 핀에 연결하였다. LED에 흐르는 전류의 최대 값을 제한 할 수 있도록 220옴 저항을 LED 과 음극과 연결하고 저항의 다른 쪽은 GND 즉 0V 에 배선 한다.

noname06.png

세 번째로 터미널 창에서 실행 코드가 위치한 디렉토리에서 command line 방식으로 명령을 실행시켰다.

sudo python3 tkinter_root_led_on_off.py

버튼 창이 뜨면 LED ON을 누르면 LED OFF 버튼으로 바뀜과 동시에 16번 핀에 설치된 LED 가 ON 됨을 확인할 수 있다. 마지막으로 Exit 버튼을 누르면 실행이 끝난다.

noname05.png

유튜브 동영상에서 LED ON 버튼 사용을 참조하자.

#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()

마나마인로고.png

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

와 저도 해보고 싶네요

Posted using Partiko iOS

해보고 싶을 때 해 보시면 정말 빠른 시일 내에 선수급이 될 수 있습니다. 저도 2년 반 정도 됬는데 비록 hobby 영역이지만 선수급에 들어와 있다고 생각합니다.