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

Postagens mais visitadas deste blog

CONTROLE REMOTO 433MHz

Introdução à pinagem do Arduino Uno

BASIC ARDUINO WEB SERVER