Problema con muestra de resultados en displays 7 segmentos cato

Hola buenas tardes amigos, estoy en apuros ya que estoy realizando un proyecto en el cual debo mostrar en 3 displays 7 segmentos la lectura de un sensor srf05 , y lo que pasa es que ya mide el sensor pero no se mantiene el numero que se quiere ver osea muestra 3 veces el mismo numero barriendo en los 3 displays y pues quiesiera es mostrar la lectura si por ejemplo es 739 pueda mantenerlos, este es el codigo que estoy utilizando

`#include <NewPing.h>

// Definiciones de pines y variables
const int pinTransistor1 = 8;
const int pinTransistor2 = 9;
const int pinTransistor3 = 10; // Asegúrate de que A1 sea un pin digital válido
const int triggerPin = 11;     // Pin de activación del sensor SRF05
const int echoPin = 12;        // Pin de recepción del sensor SRF05

NewPing sonar(triggerPin, echoPin);

// 7-seg array
int sevenSgmnt[10][4] = {
  {0, 0, 0, 0}, // 0 LSB-->
  {0, 0, 0, 1}, // 1
  {0, 0, 1, 0}, // 2
  {0, 0, 1, 1}, // 3
  {0, 1, 0, 0}, // 4
  {0, 1, 0, 1}, // 5
  {0, 1, 1, 0}, // 6
  {0, 1, 1, 1}, // 7
  {1, 0, 0, 0}, // 8
  {1, 0, 0, 1}  // 9
};

// Tiempo de visualización en milisegundos
int t_display = 50;

// Prototipos de funciones
void sevenSgmntwrite(int digit);
void activateDisplays(int digit);

void setup() {
  // Configuración de pines
  pinMode(pinTransistor1, OUTPUT);
  pinMode(pinTransistor2, OUTPUT);
  pinMode(pinTransistor3, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(triggerPin, OUTPUT);
  pinMode(echoPin, INPUT);

  // Inicialización de comunicación serial
  Serial.begin(9600);
}

void loop() {
  // Medir la distancia con el sensor SRF05
  int distance = sonar.ping_cm();

  // Convertir la distancia a dígitos individuales
  int digit1 = distance / 100;       // Dígito de las centenas
  int digit2 = (distance / 10) % 10; // Dígito de las decenas
  int digit3 = distance % 10;        // Dígito de las unidades

  // Imprimir la distancia en el puerto serial
  Serial.println(distance);

  // Activar los displays
  activateDisplays(digit1);
  delay(t_display);

  activateDisplays(digit2);
  delay(t_display);

  activateDisplays(digit3);
  delay(t_display);
}

void sevenSgmntwrite(int digit) {
  digitalWrite(4, sevenSgmnt[digit][0]);
  digitalWrite(5, sevenSgmnt[digit][1]);
  digitalWrite(6, sevenSgmnt[digit][2]);
  digitalWrite(7, sevenSgmnt[digit][3]);
}

void activateDisplays(int digit) {
  sevenSgmntwrite(digit);
  digitalWrite(pinTransistor1, HIGH);
  delay(t_display);
  digitalWrite(pinTransistor1, LOW);
  delay(10);

  sevenSgmntwrite(digit);
  digitalWrite(pinTransistor2, HIGH);
  delay(t_display);
  digitalWrite(pinTransistor2, LOW);
  delay(10);

  sevenSgmntwrite(digit);
  digitalWrite(pinTransistor3, HIGH);
  delay(t_display);
  digitalWrite(pinTransistor3, LOW);
  delay(10);
}

por favor ayuda, se los agradezco

:warning:

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español .

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

Por favor edita tu post y adjunta el código de acuerdo a las Normas del Foro en Español, punto 7. También usa la opción "Autoformato" del menú "Herramientas" de la IDE antes de copiar el código así nos facilitas su lectura.

ok, gracias

¿Qué display estás usando?
Porque para mi te faltan conexiones.
Veo que solo defines pines para los 3 cátodos y 4 segmentos, ¿y los otros 3?

estoy usando 3 displays 5161 AS que son catodo comun y los estoy multiplexando por medio se un 7448

¿Y todo eso lo debíamos adivinar?
Adjunta el esquema de conexiones, puedes hacerlo a mano y tomar una foto, lo importante es que se entienda.

Y te funciona bien con 1 solo display?
Si un display multiplexado de 3 digitos funciona bien, nada evita que 3 lo hagan bien también.
Porque la corriente que toman las entradas del 7448 no condiona la salida del Arduino.
Pero vamos a cuestionar todo:
Primero que 7448 es? es LS, es HC o HCT? La familia es importante porque las entradas BCD toman diferentes corrientes de acuerdo a la familia.
Luego que arduino usas, tambien es importante.

Ya te lo pidio @MaximoEsfuerzo asi que tienes mas razones para mostrar un esquema de conexiones y datos de los integrados y arduino involucrados.
Lo mismo con el código.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.