PAULO PY1CH BUSSOLA ROTOR DA ANTENA ARDUINO UNO COM DISPLAY LED 7 SEGMENTOS 3 DIGITOS
por
ARIDIO SCHIAPPACASSA PY1CC (2022) PY1ESU (1975)
25 SETEMBRO 2026
PAULO PY1CH BUSSOLA ROTOR DA ANTENA ARDUINO UNO
COM DISPLAY LED 7 SEGMENTOS 3 DIGITOS
ANODO COMUM TRANSISTORES 3x BC559 12V PNP base 8k2 coletor 3x BC549 NPN base 3k3 arduino D10 D11 D12
CATODOS a b c d e f g 470ohms coletor 7x BC549 base 3k3 arduino D2 D3 D4 D5 D6 D7 D8
#include "SevSeg.h"
SevSeg sevseg;
// VARIÁVEIS PARA O CONTROLE DE TEMPO (NÃO-BLOQUEANTE)
unsigned long tempoAnterior = 0; // Armazena o instante da última leitura
const long intervaloLeitura = 300; // Tempo de espera entre as leituras (em milissegundos)
void setup() {
// Configuração básica do display
byte numDigits = 3;
byte digitPins[] = {10, 11, 12};
byte segmentPins[] = {2, 3, 4, 5, 6, 7, 8}; // 7 pinos (sem ponto decimal)
// Configurações para transistores NPN e resistores nos segmentos
byte hardwareConfig = N_TRANSISTORS;
bool resistorsOnSegments = true;
bool updateWithDelays = false;
bool leadingZeros = false;
bool disableDecPoint = true;
// Inicialização da biblioteca
sevseg.begin(
hardwareConfig,
numDigits,
digitPins,
segmentPins,
resistorsOnSegments,
updateWithDelays,
leadingZeros,
disableDecPoint
);
sevseg.setBrightness(100);
// O pino A5 é configurado como entrada por padrão
pinMode(A5, INPUT);
}
void loop() {
// Captura o tempo atual desde que o Arduino foi ligado
unsigned long tempoAtual = millis();
// VERIFICAÇÃO: Já se passaram 300ms desde a última leitura?
if (tempoAtual - tempoAnterior >= intervaloLeitura) {
// Salva o momento atual como o tempo da última leitura
tempoAnterior = tempoAtual;
// Executa a leitura analógica e a conversão de escala
// 1. Lê o valor analógico atual de A5 (varia de 0 até 1023 5V - 676 3,3V)
// potenciometro de 5k 0V a 3,3V leitura corrigida para 0 a 360 graus
int valorAnalogico = analogRead(A5);
// 2. Redimensiona o valor para 0 a 360 graus
int valorFormatado = valorAnalogico*0.532544379;//map(valorAnalogico, 0, 1023, 0, 360);
// 3. Atualiza a memória da biblioteca com o novo valor lido
sevseg.setNumber(valorFormatado);
}
// 4. Executa a multiplexação (deve rodar sem interrupções ou delays aqui)
// ATENÇÃO: Esta função DEVE ficar fora do 'if' para rodar direto no loop
sevseg.refreshDisplay();
}
Comentários
Postar um comentário