unsigned long ile Zaman Değerleri
Coddy'nin Arduino Journey'sinin delay() Kullanmadan Zamanlama bölümünün bir parçası. Ders 2 / 18.
Bir değişken, türünün belirlediği bir sınıra kadar sayı tutabilir. Uno'daki bir int, -32768 ile 32767 arasındaki değerleri tutar. 32.8 saniye sonra millis() bu sınırı aşar ve onu tutmaya çalışan bir int, negatif bir sayıya sarar.
unsigned türünün negatif sayıları yoktur, bu nedenle iki kat daha yüksek bir değere ulaşır: bir unsigned int, 0 ile 65535 arasındaki değerleri, yani yaklaşık 65 saniyelik milisaniyeyi tutar. Yine de yeterli değildir.
Bir unsigned long, 0 ile 4,294,967,295 arasındaki değerleri tutar. Milisaniye cinsinden bu, 49 günden fazladır ve millis() işlevinin döndürdüğü tür de budur. Her zamanı bununla sakla:
unsigned long now = millis();
unsigned long startTime = 0;Yanlış türü kullanan bir sketch yarım dakika çalışır ve sonra bozulur; bu yüzden hatayı fark etmek kolay değildir.
Görev
KolayBu taslak zamanı saniyede bir yazdırır, ancak 32 saniye sonra negatif sayılar yazdırır. Zamanın günler boyunca doğru kalması için now değişkeninin türünü değiştir.
Hatayı görmek için Run düğmesine bas ve 33 saniyeyi geçene kadar bekle, ardından hatayı düzelt ve Check düğmesine bas.
Kendin dene
void setup() {
Serial.begin(9600);
}
void loop() {
int now = millis(); // bu tür, zamanı tutmak için çok küçük: değiştirin
Serial.println(now);
delay(1000);
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
delay() Kullanmadan Zamanlama bölümündeki tüm dersler
1millis()
millis() Saatiunsigned long ile Zaman DeğerleriGecikmesiz Yanıp Sönmeİki LED, İki HızDüğmeyle Açıp Kapatırken Yanıp SönmeZamanlayıcıyla Yanan IşıkKendi başına pratik yap: Arduino playground