Menu
CoddyTech

Waktu dalam unsigned long

Termasuk bagian Pengaturan Waktu Tanpa Delay dalam perjalanan Arduino di Coddy. Pelajaran 2 dari 18.

Variabel hanya dapat menampung angka hingga batas ukuran yang ditentukan oleh tipenya. int pada Uno menampung angka dari -32768 hingga 32767. Setelah 32.8 detik, millis() menghasilkan angka yang lebih besar dari batas itu, dan int yang mencoba menampungnya akan berputar kembali ke angka negatif.

Tipe unsigned tidak memiliki angka negatif, jadi batas atasnya dua kali lebih tinggi: unsigned int menampung angka dari 0 hingga 65535, setara dengan sekitar 65 detik dalam milidetik. Namun, itu masih belum cukup.

unsigned long menampung angka dari 0 hingga 4,294,967,295. Dalam milidetik, jumlah itu setara dengan lebih dari 49 hari, dan itulah tipe yang dikembalikan oleh millis(). Simpan setiap waktu dalam variabel bertipe ini:

unsigned long now = millis();
unsigned long startTime = 0;

Sketch dengan tipe yang salah akan berfungsi selama setengah menit, lalu mulai bermasalah, sehingga bug ini mudah terlewatkan.

challenge icon

Tantangan

Mudah

Sketch ini mencetak waktu sekali setiap detik, tetapi setelah 32 detik, sketch ini mencetak angka negatif. Ubah tipe now agar waktu tetap benar selama berhari-hari.

Tekan Run dan tunggu hingga melewati 33 detik untuk melihat bug, lalu perbaiki dan tekan Check.

Coba sendiri

void setup() {
  Serial.begin(9600);
}

void loop() {
  int now = millis();   // tipe data ini terlalu kecil untuk menampung waktu: ubah tipe datanya
  Serial.println(now);
  delay(1000);
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pengaturan Waktu Tanpa Delay

Latihan sendiri: Playground Arduino