Menu
CoddyTech

Jam NeoPixel: Menit

Termasuk bagian Proyek dalam perjalanan Arduino di Coddy. Pelajaran 22 dari 24.

Uno tidak mengetahui waktu: millis() hanya menghitung sejak perangkat dinyalakan. Jadi, sketch memulai jam dengan waktu yang ditulis di dalamnya, lalu menambahkan detik yang berlalu sejak perangkat dinyalakan. Langkah terakhir menambahkan tombol untuk mengaturnya.

Simpan waktu sebagai satu angka, yaitu jumlah detik sejak tengah malam. 10:24:50 berarti 10 jam, 24 menit, dan 50 detik:

const unsigned long startTime = 10 * 3600UL + 24 * 60 + 50;
unsigned long now = startTime + millis() / 1000;

UL setelah 3600 membuat hasil penjumlahannya bertipe unsigned long. Tanpa itu, board melakukan perkalian dengan tipe int, yang batasnya 32767, sehingga hasil 10 kali 3600 tidak muat.

Detik dan menit adalah sisa pembagian, sehingga masing-masing kembali ke 0 saat mencapai 60:

int seconds = now % 60;
int minutes = (now / 60) % 60;

Jarum menit juga bergerak satu piksel setiap 5 menit, minutes / 5, dan digambar dengan warna hijau.

challenge icon

Tantangan

Sedang

Tambahkan jarum menit:

  • jam dimulai pada 10:24:50: startTime dalam detik sejak tengah malam
  • now adalah startTime ditambah detik sejak perangkat dinyalakan
  • jarum detik: (now % 60) / 5, biru
  • jarum menit: ((now / 60) % 60) / 5, hijau ring.Color(0, 255, 0)

Tekan Jalankan: pada pukul 10:25, jarum menit bergerak satu langkah. Lalu tekan Periksa.

Coba sendiri

#include <Adafruit_NeoPixel.h>

const int ringPin = 6;
const int pixelCount = 12;
Adafruit_NeoPixel ring(pixelCount, ringPin, NEO_GRB + NEO_KHZ800);

void setup() {
  ring.begin();
}

void loop() {
  unsigned long seconds = millis() / 1000;  // detik sejak dinyalakan
  int secondPixel = (seconds % 60) / 5;     // satu piksel setiap 5 detik

  ring.clear();
  ring.setPixelColor(secondPixel, ring.Color(0, 0, 255));
  ring.show();
  delay(100);  // gambar ulang sepuluh kali per detik
}
quiz iconUji dirimu

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

Semua pelajaran di Proyek

Latihan sendiri: Playground Arduino