Chat


How can I help you?
me puedes hacer un codigo para que me muestre la lectura en una pnatalla display...

@copilot me puedes hacer un codigo para que me muestre la lectura en una pnatalla display de 4 y 7 segmentos con un sensor lm35 y que el arduino uno tenga una contraseña
1y
Claro, puedo ayudarte a crear un código en Arduino que haga lo siguiente:
  1. Lee la temperatura de un sensor LM35.
  2. Muestra la lectura en un display de 4 dígitos de 7 segmentos.
  3. Requiere una contraseña para mostrar la temperatura.
Asumiré que estás usando un teclado matricial 4x4 para ingresar la contraseña y que la contraseña es "1234". Si estos detalles no son correctos, por favor házmelo saber.
Para empezar, necesitarás las siguientes librerías:
  • LiquidCrystal.h para el display de 7 segmentos (si usas un modelo que soporta esta librería).
  • Keypad.h para la gestión del teclado matricial.
Aquí tienes un ejemplo de código Arduino:

Cpp


#include <Keypad.h>
#include <SevSeg.h>

// Configuración del teclado matricial
const byte ROWS = 4; // Cuatro filas
const byte COLS = 4; // Cuatro columnas
char keys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // Pines conectados a las filas
byte colPins[COLS] = {5, 4, 3, 2}; // Pines conectados a las columnas

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

// Configuración del display de 7 segmentos
SevSeg sevseg;

// Configuración del LM35
const int lm35Pin = A0; // Pin analógico donde está conectado el LM35

// Variables
String password = "1234";
String inputPassword;
bool isAuthenticated = false;

void setup() {
  Serial.begin(9600);

  byte numDigits = 4;
  byte digitPins[] = {10, 11, 12, 13};
  byte segmentPins[] = {A1, A2, A3, A4, A5, A6, A7}; // Ajusta según tu conexión
  bool resistorsOnSegments = true; // 'true' es más común
  byte hardwareConfig = COMMON_CATHODE; // O usa COMMON_ANODE si es tu caso
  bool updateWithDelays = false;
  bool leadingZeros = false;

  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
               updateWithDelays, leadingZeros);
  sevseg.setBrightness(90);
}

void loop() {
  char key = keypad.getKey();

  if (key) {
    // Almacenar la tecla presionada para formar la contraseña
    inputPassword += key;
    Serial.print("Ingresado: ");
    Serial.println(key);

    // Validar si la contraseña ingresada coincide
    if (inputPassword.length() == 4) {
      if (inputPassword.equals(password)) {
        isAuthenticated = true;
        Serial.println("Acceso permitido");
      } else {
        isAuthenticated = false;
        Serial.println("Acceso denegado");
      }
      delay(1000);
      inputPassword = ""; // Restablecer la entrada
    }
  }

  if (isAuthenticated) {
    // Leer la temperatura del LM35
    int sensorValue = analogRead(lm35Pin);
    float temperature = sensorValue * (5.0 / 1023.0) * 100.0; // Convertir a grados Celsius

    // Mostrar la temperatura en el display de 7 segmentos
    sevseg.setNumber(temperature, 1); // Un decimal
    sevseg.refreshDisplay();
  } else {
    sevseg.blank();
  }
}
Notas:
  • Asegúrate de modificar los pines utilizados según tu configuración de hardware.
  • Ajusta segmentPins y digitPins a los pines que realmente estés utilizando para el display.
  • Para este ejemplo, se ha asumido que el display de 7 segmentos es de cátodo común.
¿Hay algo más en lo que te pueda ayudar o alguna modificación que necesites?
1y
@copilot como seria la conexión del display
1y
Para conectar un display de 4 dígitos de 7 segmentos a un Arduino Uno, necesitas saber si tu display es de ánodo común o cátodo común. En este ejemplo, asumiremos un display de cátodo común. Aquí te indico cómo hacer las conexiones básicas:
Conexiones para un Display de 4 Dígitos de 7 Segmentos:
  1. Segmentos a los Pines del Arduino:
    • Cada segmento (A, B, C, D, E, F, G) y el punto decimal (DP) en el display tiene un pin. Estos segmentos se conectan a los pines del Arduino a través de resistencias limitadoras de corriente típicamente de 220Ω.
    Asumamos los siguientes pines para los segmentos:
    • Segmento A: A1
    • Segmento B: A2
    • Segmento C: A3
    • Segmento D: A4
    • Segmento E: A5
    • Segmento F: A6
    • Segmento G: A7
  2. Digitos Comunes a Pines del Arduino:
    • Cada dígito del display también tiene un pin común que controla qué dígito está activo.
    Asumamos las siguientes conexiones de los pines comunes:
    • Dígito 1: 10
    • Dígito 2: 11
    • Dígito 3: 12
    • Dígito 4: 13
Conexiones Eléctricas
Aquí está el esquema básico de cómo conectar el display de 7 segmentos:
  • Conecta los pines del segmento del display a sus respectivos pines de salida en el Arduino: A1, A2...A7 (a través de resistencias de 220Ω).
  • Conecta los pines comunes del display a los pines 10, 11, 12, y 13 del Arduino.
Ejemplo de Conexión
  • Segmentos:
    • Conecta el pin del Segmento A del display a pin A1 del Arduino.
    • Conecta el pin del Segmento B del display a pin A2 del Arduino.
    • Repite este procedimiento para los otros segmentos (C, D, E, F, G).
  • Digitos:
    • Conecta el pin común del Dígito 1 a pin 10 del Arduino.
    • Conecta el pin común del Dígito 2 a pin 11 del Arduino.
    • Repite para el Dígito 3 y el Dígito 4.
Consideraciones
  • Resistencias: Siempre utiliza resistencias para limitar la corriente a los segmentos.
  • Tipo de Display: Asegúrate de si usas cátodo o ánodo común, puesto que el código y conexiones pueden variar.
Por favor, verifica el tipo exacto de tu display de 7 segmentos y los números de pines ya que varían por modelo y manufactura. Si tienes detalles específicos sobre tu display o necesitas aclaraciones adicionales, por favor házmelo saber.
1y
@copilot es ánodo común
1y
Perfecto, si tu display es de ánodo común, la configuración de las conexiones y la lógica en el código cambiarán ligeramente. Con un display de ánodo común, debes conectar el pin común de cada dígito a VCC en lugar de GND, y la lógica para encender un segmento es baja (0) en vez de alta (1).
Conexiones para un Display de Ánodo Común:
  1. Segmentos a los Pines del Arduino:
    • Al igual que antes, conecta cada segmento (A, B, C, D, E, F, G) y el punto decimal (DP) a través de resistencias limitadoras de corriente (típicamente 220Ω) a los pines del Arduino.
    Asumamos los siguientes pines para los segmentos:
    • Segmento A: A1
    • Segmento B: A2
    • Segmento C: A3
    • Segmento D: A4
    • Segmento E: A5
    • Segmento F: A6
    • Segmento G: A7
  2. Pines Comunes de los Dígitos a VCC:
    • Conecta los pines comunes de cada uno de los 4 dígitos a VCC (5V del Arduino).
Código Modificado
Con el cambio a un display de ánodo común, es importante configurar correctamente el tipo de hardware en la librería SevSeg. Aquí está el fragmento relevante del código:

Cpp


bool resistorsOnSegments = true; // Las resistencias están conectadas a los segmentos
byte hardwareConfig = COMMON_ANODE; // Especificar ánodo común
Procedimiento de Conexión
  1. Segmentos:
    • Cada segmento del display se conecta al pin correspondiente en el Arduino a través de una resistencia de 220Ω:
      • Segmento A a A1
      • Segmento B a A2
      • Y así sucesivamente para C, D, E, F, G.
  2. Pines Comunes de Dígitos:
    • Conecta el pin común de cada dígito al VCC del Arduino (5V).
Consideraciones
  • Polaridad: Con displays de ánodo común, cada segmento se activa con una señal bajando (0) en el pin del Arduino.
  • Resistencias: Asegúrate de usar resistencias limitadoras para cada segmento.
Si necesitas ajustar algo más específico o si tienes alguna pregunta adicional, no dudes en decirlo.
1y
2