NeoPixel 시계: 초
Coddy Arduino 여정의 프로젝트 섹션에 포함된 레슨. 24개 중 21번째.
마지막 프로젝트는 숫자가 없는 시계입니다. 시계 문자판의 12시간처럼 NeoPixel 12개를 고리 모양으로 배치하고, 각 시곗바늘을 색깔 있는 빛으로 표시합니다. 픽셀 0은 맨 위, 12시 위치에 있고, 숫자는 시계 방향으로 배열됩니다. 버튼 두 개로 시간을 설정합니다.
먼저 초침입니다. 1분은 60초이고 고리에는 픽셀이 12개 있으므로, 초침은 5초마다 픽셀 하나씩 움직입니다.
seconds % 60은 0부터 59까지 센 다음 시계의 초처럼 다시 0부터 시작합니다. 정수 나눗셈으로 0부터 59까지의 값을 0부터 11까지로 바꿉니다.
unsigned long seconds = millis() / 1000;
int secondPixel = (seconds % 60) / 5;loop()가 실행될 때마다 고리를 처음부터 그립니다. ring.clear()로 지우고, 초침의 픽셀을 설정한 다음 ring.show()를 호출합니다. 지우지 않으면 이전 위치가 계속 켜져 있어 고리가 빛으로 가득 차게 됩니다. 초당 10번 다시 그리면 충분하므로, 시작 코드의 마지막에는 delay(100)을 둡니다.
챌린지
중급링은 핀 6에 연결되어 있습니다. 초침을 그리세요:
- 전원이 켜진 후 경과한 초를
millis() / 1000으로 계산합니다. - 초침의 픽셀은
(seconds % 60) / 5입니다. - 링을 지우고,
ring.Color(0, 0, 255)로 해당 픽셀을 파란색으로 켠 다음 표시합니다.
delay(100)은 그대로 두세요. Run을 눌러 초침이 한 바퀴 도는 것을 본 다음 Check를 누르세요.
직접 해보기
#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() {
// 초침의 위치를 계산하고 파란색으로 그립니다
delay(100); // 초당 열 번 다시 그립니다
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
프로젝트의 모든 레슨
직접 연습해 보세요: Arduino 플레이그라운드