Menu
CoddyTech

NeoPixel Saati: Saniyeler

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

Son proje, sayıları olmayan bir saattir: saat kadranındaki 12 saat gibi, her bir ibresi renkli bir ışık olan 12 NeoPixel'den oluşan bir halka. Piksel 0 üstte, saat 12 yönündedir ve sayılar saat yönünde ilerler. İki düğme saati ayarlayacak.

Önce saniye ibresi. Bir dakika 60 saniyedir ve halkada 12 piksel vardır; bu nedenle ibre her 5 saniyede bir piksel ilerler.

seconds % 60, saatteki saniyeler gibi 0'dan 59'a kadar sayar ve sonra yeniden 0'dan başlar. Tam sayı bölmesiyle 0'dan 59'a kadar olan değerler 0'dan 11'e dönüştürülür:

unsigned long seconds = millis() / 1000;
int secondPixel = (seconds % 60) / 5;

loop()'un her geçişinde halkayı baştan çizin: ring.clear(), ibrenin pikselini ayarlayın, ring.show(). Temizlemeden eski konumlar yanık kalır ve halka dolar. Saniyede on kez yeniden çizmek yeterlidir; bu nedenle başlangıç kodu delay(100) ile biter.

challenge icon

Görev

Orta

Halka 6 numaralı pine bağlı. Saniye ibresini çiz:

  • güç verildiğinden beri geçen saniye sayısını millis() / 1000 ile hesapla
  • ibrenin pikseli (seconds % 60) / 5
  • halkayı temizle, o pikseli ring.Color(0, 0, 255) ile mavi yak ve göster

delay(100) değerini koru. Çalıştır'a bas ve ibrenin dönmesini izle, ardından Kontrol Et'e bas.

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() {
  // Saniye ibresinin nerede olduğunu hesapla ve onu mavi renkte çiz

  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