Menu
CoddyTech

Sıfıra Geri Sayım

Coddy'nin Arduino Journey'sinin Ekranlar ve Sensörler bölümünün bir parçası. Ders 4 / 24.

Servo taramasında olduğu gibi, bir for döngüsü geriye doğru sayabilir: yüksek bir değerden başlar, sayı 0 veya daha büyük olduğu sürece devam eder ve her seferinde n-- ile bir azaltır:

for (int n = 5; n >= 0; n--) {
  showDigit(n);
  delay(1000);
}

Bu, 5, 4, 3, 2, 1 ve 0 değerlerini gösterir. n > 0 olsaydı 1'de durur ve 0'ı hiç göstermezdi.

Geri sayım tekrar tekrar değil, bir kez gerçekleşmelidir. setup() içindeki kod bir kez çalışır; bu nedenle geri sayımı ve ardından 0'da gerçekleşecekleri oraya koy. loop() boş kalabilir ve 0 ekranda kalır.

challenge icon

Görev

Kolay

Buzzer 9 numaralı pine bağlı. Bir fırlatma geri sayımı yap:

  • setup() içinde, saniyede bir sayı olacak şekilde 5'ten 0'a kadar geri say
  • 0'da, tone(buzzerPin, 880, 1000) ile buzzer'ı çaldır
  • 0'ı ekranda bırak

Run'a, ardından Check'e bas.

Kendin dene

const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8};  // a, b, c, d, e, f, g

// Her rakam için bir desen; sağdan sola okuyun: en son bit a segmentidir.
//                     gfedcba
const byte digits[10] = {
  0b0111111,  // 0
  0b0000110,  // 1
  0b1011011,  // 2
  0b1001111,  // 3
  0b1100110,  // 4
  0b1101101,  // 5
  0b1111101,  // 6
  0b0000111,  // 7
  0b1111111,  // 8
  0b1101111   // 9
};

void showDigit(int n) {
  for (int i = 0; i < 7; i++) {
    if (bitRead(digits[n], i) == 1) {
      digitalWrite(segmentPins[i], LOW);   // yanıyor
    } else {
      digitalWrite(segmentPins[i], HIGH);  // sönük
    }
  }
}

const int buzzerPin = 9;

void setup() {
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }

  // burada 5'ten 0'a geri sayın, ardından buzzer'ı çaldırın
}

void loop() {
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Ekranlar ve Sensörler bölümündeki tüm dersler

Kendi başına pratik yap: Arduino playground