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.
Görev
OrtaAkrep-yelkovan düzenine yelkovanı ekle:
- saat 10:24:50'de başlar: gece yarısından beri geçen saniye cinsinden
startTime now,startTimeile güç açıldıktan sonra geçen saniyelerin toplamıdır- saniye ibresi:
(now % 60) / 5, mavi - yelkovan:
((now / 60) % 60) / 5, yeşilring.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
}
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
6NeoPixel Saati
NeoPixel Saati: SaniyelerNeoPixel Saati: DakikalarNeoPixel Saati: Akrep ve Yelkovanı BirleştirmeNeoPixel Saati: Saati AyarlamaKendi başına pratik yap: Arduino playground