BASIC4MCU | 질문게시판 | LED, LCD, 버튼, 부저
페이지 정보
작성자 0922tjdus 작성일2022-11-24 18:09 조회4,656회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=21768
본문
버튼을 누르면 LED에 불이 들어오고 동시에 LCD에 10분 타이머가 작동되고 타이머의 시간이 끝나면 LED 불빛이 꺼지고 LCD에 "작동완료"가 출력되고 부저가 5초 동안 울리게 하고 싶은데 어떡해해야할까요...??// I2C LCD 라이브러리 설정#include <LiquidCrystal_I2C.h>// LCD I2C address 설정,LiquidCrystal_I2C lcd(0x27, 16, 2);int hour=0, minute=0, second=0; // 시, 분, 초int day=0; // daychar ch = ':';int ledPin = 13;int buttonPin = 7;void setup() {pinMode(ledPin, OUTPUT);pinMode(buttonPin, INPUT_PULLUP);Serial.begin(9600);lcd.init(); // LCD 설정lcd.clear(); // LCD를 모두 지운다.lcd.backlight(); // 백라이트를 켠다lcd.print("Hello");}unsigned int long button_delay = 0;bool button_hold = false;bool pre_button_state = 1; // PULL_UP button 접점 붙은 상태: 0, 떨어진 상태: 1 -> 초기값 1bool button_state = 1;bool Led_state = LOW;void loop() {button();button_state = digitalRead(buttonPin);if (button_hold == false) {if (button_state != pre_button_state) {button_hold = true;button_delay = millis();if (button_state == 0) {Led_state = !Led_state;digitalWrite(ledPin, Led_state);lcd.setCursor(0, 0); // 0번째줄, 0번째열로 커서 이동lcd.print("JuHyun's Timer!");lcd.setCursor(0, 1); // 1번째줄, 0번째열로 커서 이동lcd.print("Time:: ");lcd.print(hour); // 시lcd.print(ch);lcd.print(minute); // 분lcd.print(ch);lcd.print(second); // 초second++;delay(1000);if(second == 60) // 60초가 되었을때{second = 0; // 초 초기화minute = minute + 1; // 분 +1lcd.clear();}if(minute == 60) // 60분, 60초가 되었을때{minute = 0; // 초 초기화hour = hour + 1; // 시 +1lcd.clear();}if(hour == 24) // 24시 되었을때{hour = 0; // 시 초기화day++; // 하루 지남lcd.clear();lcd.print(day);lcd.print("Day");delay(5000);}}pre_button_state = button_state;}}}void button() {if (button_hold == true) {if (millis() - button_delay >= 100) {button_hold = false;}}}
댓글 0
조회수 4,656등록된 댓글이 없습니다.