Menu
CoddyTech

NeoPixel Saati: Dakikalar

Coddy'nin Arduino Journey'sinin Projeler bölümünün bir parçası. Ders 22 / 24.

Uno günün saatini bilmez: millis() yalnızca güç verildiği andan itibaren sayar. Bu yüzden taslak, saati içine yazılmış bir zamanda başlatır ve güç verildiğinden beri geçen saniyeleri ekler. Son adım, saati ayarlamak için düğmeler ekler.

Saati tek bir sayı olarak, gece yarısından beri geçen saniyeler şeklinde tut. 10:24:50, 10 saat, 24 dakika ve 50 saniyedir:

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

3600'tan sonraki UL, toplamı unsigned long yapar. Bu olmadan kart çarpma işlemini int türünde yapar ve bu tür 32767'de sınırına ulaşır; 10 çarpı 3600 sığmaz.

Saniye ve dakika değerleri kalanlardır; 60'a ulaştıklarında her biri yeniden 0'dan başlar:

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

Akrep ayrıca her 5 dakikada bir piksel hareket eder: minutes / 5 ve yeşil renkte çizilir.

challenge icon

Görev

Orta

Akrep-yelkovan düzenine yelkovanı ekle:

  • saat 10:24:50'de başlar: gece yarısından beri geçen saniye cinsinden startTime
  • now, startTime ile güç açıldıktan sonra geçen saniyelerin toplamıdır
  • saniye ibresi: (now % 60) / 5, mavi
  • yelkovan: ((now / 60) % 60) / 5, yeşil ring.Color(0, 255, 0)

Çalıştır'a bas: saat 10:25'te yelkovan bir adım ilerler. Ardından Kontrol et.

Kendin dene

#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;  // cihaz açıldığından beri geçen saniyeler
  int secondPixel = (seconds % 60) / 5;     // her 5 saniye için bir piksel

  ring.clear();
  ring.setPixelColor(secondPixel, ring.Color(0, 0, 255));
  ring.show();
  delay(100);  // saniyede on kez yeniden çiz
}
quiz iconKendini test et

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

Projeler bölümündeki tüm dersler

Kendi başına pratik yap: Arduino playground