Đồng hồ NeoPixel: phút
Thuộc phần Dự án trong hành trình Arduino của Coddy. Bài học 22 trên 24.
Uno không biết giờ trong ngày: millis() chỉ đếm từ lúc bật nguồn. Vì vậy, sketch đặt đồng hồ bắt đầu từ một thời điểm được ghi sẵn trong đó, rồi cộng thêm số giây kể từ lúc bật nguồn. Bước cuối cùng sẽ thêm các nút để chỉnh giờ.
Hãy lưu thời gian dưới dạng một số, biểu thị số giây kể từ nửa đêm. 10:24:50 tương đương với 10 giờ, 24 phút và 50 giây:
const unsigned long startTime = 10 * 3600UL + 24 * 60 + 50;
unsigned long now = startTime + millis() / 1000;UL sau 3600 khiến tổng có kiểu unsigned long. Nếu không có nó, bo mạch sẽ thực hiện phép nhân bằng int, kiểu này chỉ đạt đến 32767, còn 10 nhân 3600 thì vượt quá giới hạn.
Số giây và số phút là số dư, nên mỗi giá trị bắt đầu lại từ 0 khi đạt đến 60:
int seconds = now % 60;
int minutes = (now / 60) % 60;Kim phút cũng di chuyển một pixel sau mỗi 5 phút, theo minutes / 5, và được vẽ màu xanh lá.
Thử thách
Trung bìnhThêm kim phút:
- đồng hồ bắt đầu lúc 10:24:50:
startTimetính bằng giây kể từ nửa đêm nowbằngstartTimecộng với số giây kể từ khi bật nguồn- kim giây:
(now % 60) / 5, màu xanh dương - kim phút:
((now / 60) % 60) / 5, màu xanh láring.Color(0, 255, 0)
Nhấn Chạy: lúc 10:25, kim phút nhích lên. Sau đó nhấn Kiểm tra.
Tự làm thử
#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; // Số giây kể từ khi bật nguồn
int secondPixel = (seconds % 60) / 5; // Mỗi 5 giây ứng với một điểm ảnh
ring.clear();
ring.setPixelColor(secondPixel, ring.Color(0, 0, 255));
ring.show();
delay(100); // Vẽ lại mười lần mỗi giây
}
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Dự án
3Cảm biến đỗ xe
Cảm biến đỗ xe: khoảng cáchCảm biến đỗ xe: đènCảm biến đỗ xe: tiếng bípCảm biến đỗ xe: màn hình6Đồng hồ NeoPixel
Đồng hồ NeoPixel: giâyĐồng hồ NeoPixel: phútĐồng hồ NeoPixel: kết hợp kim đồng hồĐồng hồ NeoPixel: đặt giờTự luyện tập: Playground Arduino