Đồng hồ NeoPixel: giây
Thuộc phần Dự án trong hành trình Arduino của Coddy. Bài học 21 trên 24.
Dự án cuối cùng là một chiếc đồng hồ không có số: một vòng gồm 12 NeoPixel, như 12 giờ trên mặt đồng hồ, mỗi kim là một đèn màu. Pixel 0 nằm ở trên cùng, tại vị trí 12 giờ, và các số chạy theo chiều kim đồng hồ. Hai nút sẽ dùng để chỉnh giờ.
Đầu tiên là kim giây. Một phút có 60 giây và vòng có 12 pixel, vì vậy kim di chuyển một pixel sau mỗi 5 giây.
seconds % 60 đếm từ 0 đến 59 rồi bắt đầu lại từ 0, giống như số giây trên đồng hồ. Phép chia lấy phần nguyên cho 5 chuyển các giá trị từ 0 đến 59 thành từ 0 đến 11:
unsigned long seconds = millis() / 1000;
int secondPixel = (seconds % 60) / 5;Ở mỗi lượt chạy của loop(), hãy vẽ lại vòng từ đầu: ring.clear(), đặt pixel của kim, rồi gọi ring.show(). Nếu không xóa, các vị trí cũ vẫn sáng và vòng sẽ dần sáng kín. Vẽ lại 10 lần mỗi giây là đủ, vì vậy đoạn code khởi đầu kết thúc bằng delay(100).
Thử thách
Trung bìnhVòng đèn được nối với chân 6. Vẽ kim giây:
- tính số giây kể từ khi bật nguồn bằng
millis() / 1000 - điểm ảnh của kim là
(seconds % 60) / 5 - xóa vòng đèn, bật điểm ảnh đó màu xanh lam bằng
ring.Color(0, 0, 255)rồi hiển thị
Giữ nguyên delay(100). Nhấn Chạy và quan sát kim quay một vòng, rồi 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() {
// Xác định vị trí kim giây và vẽ kim bằng màu xanh dương
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