[임베디드 GUI] RaspberryPI + Pyside

정재훈·2022년 4월 27일
0

임베디드 GUI

목록 보기
7/7

기본 셋팅

Raspberry PI에서는 PySide6을 지원하지 않아, PySide2를 사용합니다.

sudo apt-get install pyside2-tools
sudo apt-get install pyside2.*
sudo apt-get install python3-pyside2.*

LED 조절기

윈도우에서 QT Designer를 통해 UI를 만들어주고, py로 변환해주고, main.py에 필수 동작 코드를 작성해주고 VNC에 넘겨준다.
넘겨줘야 하는 파일
1. main.py : 필수 동작 코드
2. ui -> py 변환 파일 : UI 파일

윈도우에서는 PySide6을 사용하지만, RIP에서는 PySide2를 사용하기 때문에, 다음과 같이 변경해줍니다.

해당 코드를 통해 구현하였습니다.

from PySide2.QtWidgets import *
from dialog import Ui_MainWindow
from gpiozero import LED, PWMLED, Button

class MyApp(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        Ui_MainWindow.setupUi(self, self)
        self.main()
        self.led1 = PWMLED(16)
        self.led2 = PWMLED(20)
        self.ledOff() # ledOff 함수 실행
        
        self.btn = Button(2)
        self.btn.when_pressed = self.pressed # 버튼 클릭시 pressed() 함수 실행

    def main(self):
        pass
    
    def ledOn(self): # led 둘다 킴
        self.led1.value = 1
        self.led2.value = 1
        
    def ledOff(self): # led 둘다 끔
        self.led1.value = 0
        self.led2.value = 0
    
    def closeEvent(self, e): # 창 종료시 led 둘다 끔
        self.led1.close()
        self.led2.close()
    
    def setDial(self, val): # dialog를 통해 받은 신호 값으로 led 밝기 조절
        self.led1.value = val / 100  # 0 ~ 1로 밝기 조절 하기 때문에, 100으로 나누어줌
        self.led2.value = (100 - val) / 100
        self.lcdNumber.display(val) # UI LCD에 값 띄우기
    
    def pressed(self): # led 밝기 반전
        print("#")
        num = self.led1.value * 100
        self.setDial(100 - num)

app = QApplication()
win = MyApp()
win.show()
app.exec_()
profile
여러 방향으로 접근하는 개발자

0개의 댓글