본문 바로가기
프로젝트

라즈베리파이 피코와 베이스 보드를 이용한 타이머 구동

by 땜블리 2023. 4. 20.
728x90
반응형
SMALL

안녕하세요 땜블리 입니다.

라즈베리파이 피코 베이직 트레이닝 보드를 이용한 타이머 만들기 실습을 진행 하겠습니다.

베이직 트레이닝 보드는 아래에서 확인이 가능합니다.

https://ttcw.tistory.com/4

 

라즈베리파이 피코 베이직 트레이닝보드 구성

라즈베리파이 피코 보드의 펌웨어실습을 위한 베이직 트레이닝보드를 소개 합니다. 현재 네이버 스마트스토어에서 판매가 진행되고 있습니다. 라즈베리파이 피코 베이직 트레이닝 보드 라즈베

ttcw.tistory.com

타이머는 일정 시간이 지난 후에 알림을 울리게 하는 도구입니다.

일상 생활에서는 요리 타이머, 운동 타이머, 시험 시간 타이머 등 다양한 상황에서 사용됩니다.

이 도구를 사용하면 지정한 시간이 지나면 알림이 울려서 일을 마무리할 수 있거나 다음 일을 시작할 수 있습니다.

일반적으로 디지털 타이머는 시간을 설정하는 버튼과 시작/취소 버튼이 있습니다.

사용자는 시간을 설정한 후 시작 버튼을 누르면 타이머가 작동하며, 설정한 시간이 다 되면 알림이 울립니다.

베이직 트레이닝 보드를 이용하여 타이머를 만들어 보겠습니다.

각 사용방법은 아래 링크를 이용하시면 됩니다.

타이머 구동을 위해서 버튼, 부저, OLED, 가변저항(ADC) 기능이 필요합니다.

아래는 관련 사이트를 연결해 두었습니다. 참조하시면 됩니다.

https://ttcw.tistory.com/37

 

03. Circuit 파이썬 라즈베리파이 피코 W 스위치 제어

안녕하세요 땜블리 입니다. 라즈베리파이 피코 베이직 트레이닝 보드를 이용한 스위치 제어 실습을 진행 하겠습니다. 베이직 트레이닝 보드는 아래에서 확인이 가능합니다. https://ttcw.tistory.com/4

ttcw.tistory.com

https://ttcw.tistory.com/38

 

04. Circuit 파이썬 라즈베리파이 피코 W 부저 제어

안녕하세요 땜블리 입니다. 라즈베리파이 피코 베이직 트레이닝 보드를 이용한 부져 제어를 진행 하겠습니다. 베이직 트레이닝 보드는 아래에서 확인이 가능합니다. https://ttcw.tistory.com/4 라즈베

ttcw.tistory.com

https://ttcw.tistory.com/45

 

10. Circuit 파이썬 라즈베리파 피코 W OLED 제어

안녕하세요 땜블리 입니다. 라즈베리파이 피코 베이직 트레이닝 보드를 이용한 OLED제어를 진행 하겠습니다. 베이직 트레이닝 보드는 아래에서 확인이 가능합니다. https://ttcw.tistory.com/4 라즈베리

ttcw.tistory.com

https://ttcw.tistory.com/39

 

05. Circuit 파이썬 라즈베리파이 피코 W ADC 제어

안녕하세요 땜블리 입니다. 라즈베리파이 피코 베이직 트레이닝 보드를 이용한 ADC 제어 해보겠습니다. 베이직 트레이닝 보드는 아래에서 확인이 가능합니다. https://ttcw.tistory.com/4 라즈베리파이

ttcw.tistory.com

베이직 트레이닝 보드의 가변저항 이용하여 타이머 설정을 하고 버튼을 눌러 스타트하여 설정된 시간을 카운터 시키고

설정 시간이 되면 부저를 울려 알려 주는 타이머입니다.

반응형

아래는 구성도입니다.

아래는 타이머 구동을 소스파일 입니다.

code.py

import time
import board
import analogio
import digitalio
import simpleio
import adafruit_ssd1306
import busio

def timer(seconds):
    start_time = time.time()
    end_time = start_time + seconds
    
    while time.time() < end_time:
        remaining_time = round(end_time - time.time())
        oled.fill(0)  
        oled.text(f"Time remaining: {remaining_time} s", 0, 24,1)
        oled.show()
        print(f"Time remaining: {remaining_time} seconds")
        time.sleep(1)
    
    print("Time's up!")
    oled.fill(0)
    oled.text("Time's up!", 0, 24,1)
    oled.show()
    for i in range(3):
        simpleio.tone(board.GP6, 880, duration=0.1)  # A5
        time.sleep(0.05)
        simpleio.tone(board.GP6, 784, duration=0.1)  # G5
        time.sleep(0.05)
        simpleio.tone(board.GP6, 698, duration=0.1)  # F#5
        time.sleep(0.05)
        simpleio.tone(board.GP6, 587, duration=0.2)  # D5
        time.sleep(0.1)


# i2c설정
i2c = busio.I2C(board.GP15, board.GP14)
oled = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3c)
# 초기화
oled.fill(1)
oled.show()
time.sleep(1)
oled.fill(0)
oled.show()

analog_in = analogio.AnalogIn(board.GP26)  # the pin used to read the variable resistor value
timer_min = 1   # the minimum timer value in minutes
timer_max = 300  # the maximum timer value in minutes

button = digitalio.DigitalInOut(board.GP22)  # the pin used for the button
button.direction = digitalio.Direction.INPUT
button.pull = digitalio.Pull.UP
while True:
    # read the resistance value from the variable resistor
    analog_value = analog_in.value

    # map the analog value to a range of timer values
    timer_value = int((analog_value / 65535) * (timer_max - timer_min) + timer_min)

    # print the timer value for debugging purposes
    print(timer_value)
    oled.fill(0)  
    oled.text("timer_value : ", 0, 24,1)
    oled.text(str(timer_value), 80, 24,1)
    oled.show()
    # delay for a short period of time to avoid rapid input changes
    time.sleep(0.1)
    
    if not button.value:  # check if the button is pressed
        analog_value = analog_in.value
        timer_value = int((analog_value / 65535) * (timer_max - timer_min) + timer_min)
        timer(timer_value)

위 코드를 피코 보드에 다운로드 하고 실행을 시키면 아래와 같은 동작 결과를 확인 할 수 있습니다.

가변저항을 이용해서 타이머 시간을 설정하고 버튼을 누르면 초단위로 감소 하다 제로가 되면 부저를 울리면서

시스템이 종료되는 구동 입니다.

 

728x90
반응형
LIST

댓글