Relógio Analógico Estilo POV com LEDs – Projeto DIY Arduino Nano
Componentes e Materiais
![]() |
Arduino Nano R3 | × | 1 |
![]() |
LEDs (genéricos) | × | 17 |
![]() |
Sensor de Efeito Hall | × | 1 |
![]() |
Resistor 100 Ω | × | 17 |
| Motor DC (genérico) | × | 1 | |
![]() |
Conversor Boost (Step-Up) Fixado | × | 1 |
Ferramentas
- Ferro de solda
Aplicativos
- Arduino IDE
Sobre o Projeto
Displays de Persistência de Visão (POV) mostram imagens exibindo segmentos em rápida sucessão; o cérebro humano percebe uma imagem contínua. Este projeto, do site "hobby projects", apresenta um relógio analógico simples mas visualmente eficaz. A parte eletrônica contém Arduino Nano, 17 LEDs e sensor Hall. Grupos de LEDs (d1-d11, d12-d16, d17) têm cores diferentes para melhor efeito. Alimentação por bateria Li-ion via conversor step-up.
O maior desafio foi a estabilidade mecânica. Inicialmente a bateria estava descentrada, causando vibração em alta rotação. Reposicionei a bateria no centro de rotação.
Rotação por motor 12V com fonte variável para controle de velocidade. No código, ajuste delayMicroseconds conforme a velocidade do motor.
O vídeo não tem qualidade suficiente devido à taxa de quadros da câmera.
Código
// hobbyprojects // ArduinoNanoPropellerLEDAnalogClock20190403A
int LED1 = 2, LED2 = 3, LED3 = 4, LED4 = 5, LED5 = 6, LED6 = 7, LED7 = 8;
int LED8 = 9, LED9 = 10, LED10 = 11, LED11 = 12;
int LED12 = A1, LED13 = A2, LED14 = A3, LED15 = A4, LED16 = A5;
int sensorPin = A0;
unsigned int n, ADCvalue, propeller_posn;
unsigned long previousTime = 0;
byte hours = 12;
byte minutes = 15;
byte seconds = 0;
int val;
void setup() {
for (int i = 2; i <= 12; i++) pinMode(i, OUTPUT);
pinMode(LED12, OUTPUT); pinMode(LED13, OUTPUT); pinMode(LED14, OUTPUT);
pinMode(LED15, OUTPUT); pinMode(LED16, OUTPUT);
pinMode(sensorPin, INPUT_PULLUP);
if (hours == 12) hours = 0;
}
void loop() {
val = digitalRead(sensorPin);
while (val == LOW) val = digitalRead(sensorPin);
if (millis() >= previousTime) {
previousTime += 1000;
seconds++;
if (seconds == 60) { seconds = 0; minutes++; }
if (minutes == 60) { minutes = 0; hours++; }
if (hours == 12) hours = 0;
}
propeller_posn = 30;
n = 0;
while (n < 60) {
drawMinuteMarker();
if (propeller_posn % 5 == 0) drawHourMarker();
if (propeller_posn % 15 == 0) drawQuarterMarker();
if (propeller_posn == hours * 5 || (propeller_posn == 0 && hours == 0)) drawHoursHand();
if (propeller_posn == minutes) drawMinutesHand();
if (propeller_posn == seconds) drawSecondsHand();
delayMicroseconds(140); // largura do pixel LED (ajuste conforme velocidade)
displayClear();
drawInner_Circle();
delayMicroseconds(600); // gap entre pixels/marcadores
n++;
propeller_posn++;
if (propeller_posn == 60) propeller_posn = 0;
}
val = digitalRead(sensorPin);
while (val == HIGH) val = digitalRead(sensorPin);
}
void displayClear() {
for (int i = 2; i <= 12; i++) digitalWrite(i, LOW);
digitalWrite(LED12, LOW); digitalWrite(LED13, LOW); digitalWrite(LED14, LOW);
digitalWrite(LED15, LOW); digitalWrite(LED16, LOW);
}
void drawMinuteMarker() { digitalWrite(LED16, HIGH); }
void drawHourMarker() { digitalWrite(LED15, HIGH); digitalWrite(LED14, HIGH); }
void drawQuarterMarker() { digitalWrite(LED13, HIGH); digitalWrite(LED12, HIGH); }
void drawHoursHand() {
for (int i = 2; i <= 8; i++) digitalWrite(i, HIGH);
}
void drawMinutesHand() {
for (int i = 2; i <= 10; i++) digitalWrite(i, HIGH);
}
void drawSecondsHand() {
for (int i = 2; i <= 11; i++) digitalWrite(i, HIGH);
}
void drawInner_Circle() {
digitalWrite(LED1, HIGH);
delayMicroseconds(30);
digitalWrite(LED1, LOW);
}
Esquemático
Processo de manufatura
- Construa um Sequenciador de LED com Timer 555 e Contador 4017 – Divisão de Frequência e Debounce
- Relógio Cuco: História, Artesanato e Evolução Moderna
- Construa Seu Próprio LUMAZOID: Visualizador de Música DIY com Arduino
- Relógio POV com Arduino: Construa um Display LED de Persistência de Visão
- Dispositivo de Precisão para Medição de Pressão e Fluxo de Ar com Sensor Analógico
- Construa Seu Próprio Jogo de Roleta com 37 LEDs e Arduino Nano
- Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
- Relógio 3D RGB Arduclock – Bluetooth, LEDs Endereçáveis e RTC
- Controle de Trim Tab para FlightGear com Arduino Nano: Roda Analógica Compacta
- Display Interativo de Matriz LED na Porta com Sensor PIR – Saudação de Férias Arduino




