This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Mostrando las entradas con la etiqueta Display 7 Segmentos. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Display 7 Segmentos. Mostrar todas las entradas

jueves, 5 de septiembre de 2024

Contador de Personas con Sensor Infrarrojo y Arduino: Proyecto Educativo Paso a Paso

Proyecto Intermedio: Contador de Personas con Sensor Infrarrojo y Arduino - Proyecto Educativo

🚶‍♂️ Proyecto Intermedio: Contador de Personas con Sensor Infrarrojo y Arduino 🧮

¡Bienvenidos a otro emocionante proyecto educativo con Arduino! En este tutorial, aprenderemos a construir un "Contador de Personas con Sensor Infrarrojo". Este proyecto es perfecto para aquellos interesados en aplicaciones de monitoreo, como contar personas que ingresan a una habitación o un evento. Utilizaremos un sensor infrarrojo (IR) para detectar el paso de personas y un display de 7 segmentos para mostrar el conteo. ¡Manos a la obra! 📊🔧

Contador de Personas con Sensor Infrarrojo y Arduino: Aprende a crear un contador utilizando sensores y displays con Arduino.

Enlace al Proyecto en Tinkercad - Contador de Personas

Explora cómo funciona este proyecto y experimenta con el circuito interactivo en Tinkercad. Haz clic en el siguiente enlace para acceder: Contador de Personas - Proyecto en Tinkercad.

Componentes Necesarios

Para llevar a cabo este proyecto, vamos a necesitar los siguientes componentes:

  • 1 x Arduino Uno
  • 1 x Sensor Infrarrojo (IR)
  • 1 x Display de 7 Segmentos
  • 7 x Resistencias de 220Ω
  • Cables de Conexión
  • 1 x Protoboard
  • Fuente de Alimentación (USB de PC o batería externa)

Todos los materiales necesarios los encontrarás en los siguientes enlaces:

Configuración del Circuito

Diagrama de Conexión

Conexiones:

  • Sensor Infrarrojo (IR):
    • Conectar el pin de VCC del sensor infrarrojo a 5V de Arduino.
    • Conectar el pin GND del sensor infrarrojo a GND de Arduino.
    • Conectar el pin de salida (OUT) del sensor infrarrojo al pin 2 de Arduino.
  • Display de 7 Segmentos:
    • Conectar los pines a, b, c, d, e, f, g del display de 7 segmentos a los pines 3, 4, 5, 6, 7, 8, 9 de Arduino respectivamente.
    • Conectar cada pin del display a través de una resistencia de 220Ω para limitar la corriente.
    • Conectar el pin de común cátodo o ánodo del display a GND o 5V dependiendo del tipo de display utilizado.

Código para Controlar el Contador de Personas con Arduino

¡Aquí tienes el código completo! Puedes copiarlo fácilmente haciendo clic en el botón "Copiar Código".


// Definición de pines
const int sensorIRPin = 2;  // Pin del sensor infrarrojo
const int displayPins[7] = {3, 4, 5, 6, 7, 8, 9};  // Pines para el display de 7 segmentos

// Variables
int personCount = 0;  // Contador de personas
bool lastState = LOW;  // Estado anterior del sensor IR

void setup() {
  // Configuración del pin del sensor infrarrojo como entrada
  pinMode(sensorIRPin, INPUT);

  // Configuración de los pines del display de 7 segmentos como salida
  for (int i = 0; i < 7; i++) {
    pinMode(displayPins[i], OUTPUT);
    digitalWrite(displayPins[i], LOW);  // Inicializar los segmentos como apagados
  }

  Serial.begin(9600);  // Iniciar la comunicación serie para la depuración
}

void loop() {
  // Leer el estado del sensor infrarrojo
  bool currentState = digitalRead(sensorIRPin);

  // Detección de cambio de estado del sensor IR (persona pasa por la puerta)
  if (currentState == HIGH && lastState == LOW) {
    personCount++;  // Incrementar contador de personas
    Serial.print("Personas Contadas: ");
    Serial.println(personCount);
    mostrarNumero(personCount);  // Mostrar el conteo en el display
  }

  // Guardar el estado actual del sensor IR para la siguiente lectura
  lastState = currentState;

  delay(200);  // Pequeño retraso para evitar rebotes del sensor IR
}

// Función para mostrar números en el display de 7 segmentos
void mostrarNumero(int num) {
  // Definición de los números 0 a 9 en el display de 7 segmentos
  byte numeros[10][7] = {
    {1, 1, 1, 1, 1, 1, 0}, // 0 (A, B, C, D, E, F encendidos; G apagado)
    {0, 1, 1, 0, 0, 0, 0}, // 1 (B, C encendidos; A, D, E, F, G apagados)
    {1, 1, 0, 1, 1, 0, 1}, // 2 (A, B, D, E, G encendidos; C, F apagados)
    {1, 1, 1, 1, 0, 0, 1}, // 3 (A, B, C, D, G encendidos; E, F apagados)
    {0, 1, 1, 0, 0, 1, 1}, // 4 (B, C, F, G encendidos; A, D, E apagados)
    {1, 0, 1, 1, 0, 1, 1}, // 5 (A, C, D, F, G encendidos; B, E apagados)
    {1, 0, 1, 1, 1, 1, 1}, // 6 (A, C, D, E, F, G encendidos; B apagado)
    {1, 1, 1, 0, 0, 0, 0}, // 7 (A, B, C encendidos; D, E, F, G apagados)
    {1, 1, 1, 1, 1, 1, 1}, // 8 (A, B, C, D, E, F, G encendidos)
    {1, 1, 1, 1, 0, 1, 1}  // 9 (A, B, C, D, F, G encendidos; E apagado)
  };

  for (int i = 0; i < 7; i++) {
    digitalWrite(displayPins[i], numeros[num % 10][i]);  // Mostrar el número en el display
  }
}

        

Explicación del Código

A continuación, explicamos cada línea del código para ayudarte a comprender su funcionamiento y a desarrollar un pensamiento crítico sobre su estructura y lógica:

  1. Sensor Infrarrojo (IR): Utiliza el pin 2 de Arduino para detectar el paso de personas. Detecta un cambio de estado de bajo a alto.
  2. Display de 7 Segmentos: Los pines 3-9 de Arduino controlan los segmentos del display, que muestra el conteo actual.
  3. mostrarNumero(int num): Toma el conteo actual y muestra el número correspondiente en el display de 7 segmentos.

Problemas Comunes y Soluciones

  • El sensor IR no detecta: Verifica que el sensor esté correctamente conectado y que el pin de salida esté conectado al pin correcto de Arduino.
  • El display no muestra correctamente los números: Revisa las conexiones y asegúrate de que cada pin esté conectado a la resistencia y al pin correcto en Arduino.
  • Rebote del sensor IR: Agrega un pequeño retraso o debounce para evitar que el contador aumente incorrectamente.

Desafío para el Usuario

¿Cómo podrías modificar el proyecto para contar tanto entradas como salidas de personas? ¡Déjanos tu idea en los comentarios!

Para contar tanto entradas como salidas, puedes utilizar dos sensores IR, uno para detectar la entrada y otro para detectar la salida. Dependiendo de cuál se active primero, incrementas o decrementas el contador de personas.


// Modificación para contar entradas y salidas

const int entradaIRPin = 2;  // Pin del sensor infrarrojo de entrada
const int salidaIRPin = 3;  // Pin del sensor infrarrojo de salida

int personCount = 0;  // Contador de personas
bool lastEntradaState = LOW;  // Estado anterior del sensor de entrada
bool lastSalidaState = LOW;  // Estado anterior del sensor de salida

void setup() {
  pinMode(entradaIRPin, INPUT);
  pinMode(salidaIRPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  bool currentEntradaState = digitalRead(entradaIRPin);
  bool currentSalidaState = digitalRead(salidaIRPin);

  if (currentEntradaState == HIGH && lastEntradaState == LOW) {
    personCount++;
    mostrarNumero(personCount);
  }
  if (currentSalidaState == HIGH && lastSalidaState == LOW) {
    personCount--;
    mostrarNumero(personCount);
  }

  lastEntradaState = currentEntradaState;
  lastSalidaState = currentSalidaState;

  delay(200);
}

        

¡Espero que disfrutes creando este proyecto tanto como yo disfruto compartiéndolo contigo! Recuerda que la práctica hace al maestro, así que sigue experimentando y adaptando este código a nuevas ideas. ¡Nos encantaría ver tus creaciones! 🚀

Si te ha gustado este artículo, por favor compártelo y suscríbete a nuestro blog para más proyectos interesantes. ¡Hasta la próxima aventura tecnológica!

domingo, 18 de agosto de 2024

Proyecto Inicial: Control de Display de 7 Segmentos con Arduino - Paso a Paso Educativo.

Proyecto Inicial: Control de Display de 7 Segmentos con Arduino - Proyecto Educativo

¡Controla un Display de 7 Segmentos con Arduino! Un Proyecto Educativo y Divertido

¡Hola, entusiasta de la electrónica! Hoy te traigo un proyecto emocionante que te ayudará a aprender a controlar un display de 7 segmentos con Arduino. Usaremos un Arduino Uno para mostrar números del 0 al 9 en un display de 7 segmentos utilizando una conexión multiplexada. Este proyecto es ideal para quienes desean aprender sobre la visualización de números en pantallas y la manipulación de hardware básico. ¡Vamos a comenzar! 😄

Control de Display de 7 Segmentos con Arduino: Aprende a mostrar números del 0 al 9 utilizando un display de 7 segmentos y Arduino.

Enlace al Proyecto en Tinkercad - Display de 7 Segmentos

Explora cómo funciona este proyecto y experimenta con el circuito interactivo en Tinkercad. Haz clic en el siguiente enlace para acceder: Display de 7 Segmentos - Proyecto en Tinkercad. Recuerda ajustar la conexión a CÁTODO en el contador de Tinkercad para que funcione correctamente.

Componentes Necesarios

Para realizar este proyecto, necesitarás los siguientes componentes:

  • 1 x Arduino Uno R3
  • 1 x Display de 7 Segmentos de 1 dígito (cátodo común)
  • 7 x Resistencias de 220 Ω
  • Cables y protoboard

Todos los materiales necesarios los encontrarás en los siguientes enlaces:

Configuración del Circuito

Diagrama de Conexión

Conexiones:

  • Display de 7 Segmentos:
    • Conecta los pines del display de 7 segmentos a los pines digitales del Arduino según el esquema siguiente: A - 2, B - 3, C - 4, D - 5, E - 6, F - 7, G - 8.
    • Conecta cada segmento a través de una resistencia de 220 Ω para limitar la corriente y proteger los LEDs.
    • Conecta el cátodo común del display a GND.

Código para Controlar el Display de 7 Segmentos con Arduino

¡Hora de ensuciarnos las manos con un poco de código! Copia y pega este código en tu Arduino IDE, y prepárate para ver los números aparecer en el display de 7 segmentos:


// Declaración de los pines de los segmentos del display
int segA = 2;
int segB = 3;
int segC = 4;
int segD = 5;
int segE = 6;
int segF = 7;
int segG = 8;

void setup() {
  // Configuración de los pines como salidas
  pinMode(segA, OUTPUT);
  pinMode(segB, OUTPUT);
  pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT);
  pinMode(segE, OUTPUT);
  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);
}

void loop() {
  // Iteramos sobre los números del 0 al 9
  for (int i = 0; i < 10; i++) {
    displayNumber(i); // Mostramos el número actual
    delay(1000); // Espera de 1 segundo entre números
  }
}

void displayNumber(int number) {
  // Encendemos/apagamos segmentos según el número a mostrar
  switch (number) {
    case 0: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, HIGH); digitalWrite(segG, LOW); break;
    case 1: digitalWrite(segA, LOW); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); break;
    case 2: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, LOW); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, LOW); digitalWrite(segG, HIGH); break;
    case 3: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, HIGH); break;
    case 4: digitalWrite(segA, LOW); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); break;
    case 5: digitalWrite(segA, HIGH); digitalWrite(segB, LOW); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, LOW); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); break;
    case 6: digitalWrite(segA, HIGH); digitalWrite(segB, LOW); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); break;
    case 7: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, LOW); digitalWrite(segE, LOW); digitalWrite(segF, LOW); digitalWrite(segG, LOW); break;
    case 8: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, HIGH); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); break;
    case 9: digitalWrite(segA, HIGH); digitalWrite(segB, HIGH); digitalWrite(segC, HIGH); digitalWrite(segD, HIGH); digitalWrite(segE, LOW); digitalWrite(segF, HIGH); digitalWrite(segG, HIGH); break;
  }
}

        

Explicación del Código

A continuación, explicamos cada línea del código para ayudarte a comprender su funcionamiento y a desarrollar un pensamiento crítico sobre su estructura y lógica:

  1. int segA = 2; ... int segG = 8;: Estas líneas declaran las variables para cada uno de los segmentos del display de 7 segmentos, asignándoles los pines de Arduino que los controlarán.
  2. void setup() { ... }: La función setup() configura los pines de los segmentos como salidas digitales utilizando la función pinMode(). Esto es necesario para controlar cada segmento individualmente.
  3. void loop() { ... }: La función loop() se ejecuta repetidamente en un bucle infinito. Utilizamos un bucle for para iterar del 0 al 9 y mostrar cada número en el display de 7 segmentos. Después de mostrar cada número, el programa espera un segundo antes de pasar al siguiente número.
  4. void displayNumber(int number) { ... }: Esta función utiliza una declaración switch para establecer el estado de los segmentos del display según el número que se desee mostrar. Para cada número, los segmentos correspondientes se encienden (HIGH) o apagan (LOW) utilizando la función digitalWrite().

Problemas Comunes y Soluciones

  • El display no muestra números correctamente: Verifica que las conexiones de cada segmento al Arduino sean correctas y que el cátodo común esté conectado a GND.
  • Los segmentos del display están demasiado tenues: Asegúrate de que las resistencias utilizadas sean de 220 Ω. Resistencias de mayor valor pueden causar que los LEDs no se enciendan con suficiente brillo.
  • El número mostrado no cambia: Verifica que el bucle for en el loop() esté funcionando correctamente y que el retardo (delay) sea el adecuado.

Desafío para el Usuario

¿Cómo podrías modificar el proyecto para mostrar números más grandes (como el 10) o para contar hacia atrás? ¡Déjanos tu idea en los comentarios!

Puedes modificar el código para incluir un segundo display de 7 segmentos. Conecta otro display y utiliza otro conjunto de pines digitales para controlarlo. Aquí tienes un ejemplo de cómo hacer esto:


// Añade estas líneas al código existente

int segA2 = 9; // Segundo display, segmento A
// ... Define los pines para los otros segmentos del segundo display

void setup() {
  // Configuración de pines para ambos displays
  pinMode(segA2, OUTPUT);
  // Configura el resto de los pines para el segundo display
}

void displayNumber2(int number) {
  // Similar a displayNumber(), pero controla el segundo display
}

        

¡Espero que disfrutes creando este proyecto tanto como yo disfruto compartiéndolo contigo! Recuerda que la práctica hace al maestro, así que sigue experimentando y adaptando este código a nuevas ideas. ¡Nos encantaría ver tus creaciones! 🚀

Si te ha gustado este artículo, por favor compártelo y suscríbete a nuestro blog para más proyectos interesantes. ¡Hasta la próxima aventura tecnológica!