임베디드

[라즈베리파이] 3단 선풍기 만들기

히똔 2022. 4. 24. 16:06
728x90
반응형

개요

버튼 1 : 선풍기 on / off
버튼 2 : 선풍기 속도 up
버튼 3 : 선풍기 속도 down

FND : 현재 속도 1~3 단계까지 표시

LED : 선풍기의 on / off 여부

 

회로구성

준비물 : 버튼 3개, FND, LED 하나, DC모터 (본인은 DC모터가 고장나서 전동모터로 대신함)

납땜 떨어진 DC모터 ㅠㅠ

코드

from gpiozero import PWMLED, Button,LED
from time import sleep

led = LED(2)

btn_on = Button(17) #onoff
btn_up = Button(27) #up
btn_down = Button(22) #down

a=LED(5)
b=LED(6)
c=LED(13)
d=LED(19)
e=LED(26)
f=LED(16)
g=LED(20)
dp=LED(21)


motor =PWMLED(3)

num=[
    [a,b,c,d,e,f],
    [b,c],
    [a,b,g,e,d],
    [a,b,g,c,d],
    [f,g,b,c],
    [a,f,g,c,d],
    [a,f,g,e,c,d],
    [f,a,b,c],
    [a,b,c,d,e,f,g],
    [a,b,c,d,f,g]
    ]

on=0
level=0 #level 1,2,3

def show(n):
    global num
    for m in num[8]:m.off()
    for m in num[n]:m.on()


while True:
    print(on, level)
    
    if btn_on.is_pressed :
        on = 1-on
        sleep(0.5) 

    if on ==1 :
        if btn_up.is_pressed :
            if level == 3 :
                level=3
            else :
                level+=1
                sleep(0.5) 
        if btn_down.is_pressed :
            if level == 1:
                level=1
            else :
                level-=1
                sleep(0.5) 
        
        led.on()
    
        show(level)
    
        motor.value=level*0.3
        
    
    if on == 0:
        led.off()
        
        for m in num[8]:m.off()
        
        motor.value=0
        level = 1

 

결과영상

선풍기 동작 영상

 

728x90
반응형