728x90
반응형
SMALL
안녕하세요 땜블리 입니다.
라즈베리파이 피코 베이직 트레이닝 보드를 이용한 타이머 만들기 실습을 진행 하겠습니다.
베이직 트레이닝 보드는 아래에서 확인이 가능합니다.
타이머는 일정 시간이 지난 후에 알림을 울리게 하는 도구입니다.
일상 생활에서는 요리 타이머, 운동 타이머, 시험 시간 타이머 등 다양한 상황에서 사용됩니다.
이 도구를 사용하면 지정한 시간이 지나면 알림이 울려서 일을 마무리할 수 있거나 다음 일을 시작할 수 있습니다.
일반적으로 디지털 타이머는 시간을 설정하는 버튼과 시작/취소 버튼이 있습니다.
사용자는 시간을 설정한 후 시작 버튼을 누르면 타이머가 작동하며, 설정한 시간이 다 되면 알림이 울립니다.
베이직 트레이닝 보드를 이용하여 타이머를 만들어 보겠습니다.
각 사용방법은 아래 링크를 이용하시면 됩니다.
타이머 구동을 위해서 버튼, 부저, OLED, 가변저항(ADC) 기능이 필요합니다.
아래는 관련 사이트를 연결해 두었습니다. 참조하시면 됩니다.
베이직 트레이닝 보드의 가변저항 이용하여 타이머 설정을 하고 버튼을 눌러 스타트하여 설정된 시간을 카운터 시키고
설정 시간이 되면 부저를 울려 알려 주는 타이머입니다.
반응형
아래는 구성도입니다.
아래는 타이머 구동을 소스파일 입니다.
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
'프로젝트' 카테고리의 다른 글
Arduino와 DHT11 온/습도 센서 제어 (0) | 2023.06.19 |
---|---|
라즈베리파이 피코와 베이스보드를 이용한 카운터기 (0) | 2023.04.19 |
IoT 모니터링 adafruit IO 클라우드 서비스 이용 (0) | 2023.04.18 |
IoT 조명 프로젝트 (0) | 2023.03.23 |
IoT 콘센트 & 스위치 (0) | 2023.03.22 |
댓글