⏱️ کرنومتر

دو دکمه: شروع/توقف روی D2، صفر روی D3.

سطح: چالشی ⭐⭐⭐ · مود: آردوینو (سه‌بعدی + کد)

قطعات لازم

کد کامل پروژه

const int START_BTN = 2, RESET_BTN = 3;
bool running = false;
unsigned long startTime = 0, elapsed = 0, lastPrint = 0, lastPress = 0;
int lastStart = HIGH, lastReset = HIGH;

// prints t milliseconds as mm:ss.d
void printTime(unsigned long t) {
  unsigned long tenths = (t % 1000 - t % 100) / 100;
  unsigned long totalSec = (t - t % 1000) / 1000;
  unsigned long sec = totalSec % 60;
  unsigned long minutes = (totalSec - sec) / 60;
  if (minutes < 10) Serial.print("0");
  Serial.print(minutes);
  Serial.print(":");
  if (sec < 10) Serial.print("0");
  Serial.print(sec);
  Serial.print(".");
  Serial.println(tenths);
}

void setup() {
  pinMode(START_BTN, INPUT_PULLUP);
  pinMode(RESET_BTN, INPUT_PULLUP);
  Serial.begin(9600);
  Serial.println("start/stop = D2, reset = D3");
}

void loop() {
  unsigned long now = millis();
  int s = digitalRead(START_BTN);
  int r = digitalRead(RESET_BTN);

  if (s == LOW && lastStart == HIGH && now - lastPress > 50) {
    lastPress = now;
    if (running) {
      elapsed = elapsed + (now - startTime);   // bank the time
      running = false;
      Serial.print("STOP  ");
      printTime(elapsed);
    } else {
      startTime = now;
      running = true;
      Serial.println("START");
    }
  }
  if (r == LOW && lastReset == HIGH && now - lastPress > 50) {
    lastPress = now;
    running = false;
    elapsed = 0;
    Serial.println("RESET  00:00.0");
  }
  lastStart = s;
  lastReset = r;

  if (running && now - lastPrint >= 100) {
    lastPrint = now;
    printTime(elapsed + (now - startTime));
  }
}

چطور اجرایش کنم؟

  1. شبیه‌ساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
  2. از پنل «نمونه‌ها»، «کرنومتر» را بارگذاری کن — مدار و کد با هم می‌آیند.
  3. دکمه‌ی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
  4. حالا کد را تغییر بده — عددها، پین‌ها، ترتیب — و دوباره اجرا کن!
این پروژه را رایگان در شبیه‌ساز اجرا کن 🤖