스텁워치게임

스텁워치게임

Makerist 0 674

[

#include <TM1637Display.h>


#define CLK 2 // CLK 핀을 2번 핀에 연결
#define DIO 3 // DIO 핀을 3번 핀에 연결


TM1637Display display(CLK, DIO);


const int switchPin = 4; // 푸쉬 스위치 핀
unsigned long startTime = 0; // 시작 시간
unsigned long elapsedTime = 0; // 경과 시간
bool isRunning = false; // 스톱워치가 실행 중인지 여부
int lastSwitchState = LOW; // 이전 스위치 상태


void setup() {
  pinMode(switchPin, INPUT_PULLUP);
  display.setBrightness(0x0a); // 디스플레이 밝기 설정
}


void loop() {
  int switchState = digitalRead(switchPin); // 스위치 상태 읽기


  // 스위치가 눌렸고 이전에 눌리지 않았을 때
  if (switchState == LOW && lastSwitchState == HIGH) {
    if (!isRunning) {
      startTime = millis(); // 스톱워치 시작 시간 설정
    } else {
      elapsedTime += millis() - startTime; // 경과 시간 누적
    }
    isRunning = !isRunning; // 스톱워치 실행 상태 변경
  }


  lastSwitchState = switchState; // 이전 스위치 상태 업데이트


  if (isRunning) {
    unsigned long currentTime = millis();
    elapsedTime += currentTime - startTime;
    startTime = currentTime;
  }


  // 경과 시간을 시간, 분, 초로 변환
  int seconds = elapsedTime / 1000 % 60;
  int minutes = (elapsedTime / 1000 / 60) % 60;
  int hours = (elapsedTime / 1000 / 60 / 60) % 24;


  // 시간을 디스플레이에 표시
  display.showNumberDecEx(hours * 100 + minutes * 10 + seconds, 0b01000000, true);
}

0 Comments