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