"Fabricación de proyectos a través de a implementación de la robótica"

"Fabricación de proyectos a través de a implementación de la robótica"

miércoles, 22 de mayo de 2024

MARCADOR PARA UN FUTBOLÍN

  • Los alumnos de 4ºDIVER realizan el diseño y programación para un display de 7 segmentos. Este proyecto se destinará como marcador del futbolín ubicado en la ludoteca del centro. 
  • El diseño se realiza en SketchUp for Schools, imprimiendo posteriormente cada una de las piezas en la impresora 3D.



  • Cabe destacar que la parte frontal del display se imprime con PLA translúcido para que se aprecie el encendido de los leds.




  • El circuito se realiza previamente en TinkerCAD como práctica, antes de realizarlo físicamente.



A continuación se adjuntan varios enlaces con la explicación del resultado final:



Posteriormente se programa para que realice las siguientes funciones: 
- Con una pulsación corta, el marcador aumenta en una cifra.
- Con una pulsación larga (superior a 1 segundo), el marcador se reinicia marcando el número cero.

Programa de ARDUINO:

// Definir los pines de los LEDs
int leds[] = {2, 3, 4, 5, 6, 7, 8};
// Pin del pulsador
const int botonPin = 9;
// Variable para almacenar el tiempo de inicio cuando se presiona el botón
unsigned long tiempoInicio = 0;
// Variable para almacenar el estado anterior del botón
bool ultimoEstadoBoton = HIGH;
// Variable para almacenar el estado actual del botón
bool estadoBoton = HIGH;
// Variable para almacenar el número actual mostrado en los LEDs
int numeroActual = 0;

// Definir los patrones de cada número en los LEDs
// 0-9
bool numeros[10][7] = {
  {1, 1, 1, 1, 1, 1, 0}, // 0
  {0, 1, 1, 0, 0, 0, 0}, // 1
  {1, 1, 0, 1, 1, 0, 1}, // 2
  {1, 1, 1, 1, 0, 0, 1}, // 3
  {0, 1, 1, 0, 0, 1, 0}, // 4
  {1, 0, 1, 1, 0, 1, 1}, // 5
  {1, 0, 1, 1, 1, 1, 1}, // 6
  {1, 1, 1, 0, 0, 0, 0}, // 7
  {1, 1, 1, 1, 1, 1, 1}, // 8
  {1, 1, 1, 1, 0, 1, 1}  // 9
};

void setup() {
  // Inicializar los pines de los LEDs como salidas
  for (int i = 0; i < 7; i++) {
    pinMode(leds[i], OUTPUT);
  }
  // Configurar el pin del pulsador como entrada
  pinMode(botonPin, INPUT_PULLUP);

  // Mostrar el número cero al iniciar Arduino
  mostrarNumero(0);
}

void loop() {
  // Leer el estado actual del pulsador
  estadoBoton = digitalRead(botonPin);

  // Si el estado actual del botón es diferente al estado anterior
  if (estadoBoton != ultimoEstadoBoton) {
    // Si el botón acaba de ser pulsado (de HIGH a LOW)
    if (estadoBoton == LOW) {
      // Almacenar el tiempo de inicio
      tiempoInicio = millis();
    } else {
      // Si el botón acaba de ser soltado (de LOW a HIGH)
      // Calcular la duración del tiempo que el botón fue pulsado
      unsigned long duracionPulsacion = millis() - tiempoInicio;

      // Si la duración de la pulsación es mayor o igual a 1000ms (1 segundos)
      if (duracionPulsacion >= 1000) {
        // Parpadear los LEDs antes de apagarlos
        parpadearLeds();
        // Apagar todos los LEDs
        apagarLeds();
        // Reiniciar el número actual a cero
        numeroActual = 0;
        // Mostrar el número cero
        mostrarNumero(numeroActual);
      } else {
        // Si la duración de la pulsación es menor a 3 segundos, incrementar el número actual
        numeroActual = (numeroActual + 1) % 10;
        // Mostrar el número actual
        mostrarNumero(numeroActual);
      }
    }
  }

  // Actualizar el estado anterior del botón
  ultimoEstadoBoton = estadoBoton;
}

// Función para mostrar un número en los LEDs
void mostrarNumero(int numero) {
  for (int i = 0; i < 7; i++) {
    digitalWrite(leds[i], numeros[numero][i]);
  }
}

// Función para apagar todos los LEDs
void apagarLeds() {
  for (int i = 0; i < 7; i++) {
    digitalWrite(leds[i], LOW);
  }
}

// Función para parpadear los LEDs tres veces
void parpadearLeds() {
  for (int j = 0; j < 3; j++) {
    for (int i = 0; i < 7; i++) {
      digitalWrite(leds[i], HIGH);
    }
    delay(100);
    apagarLeds();
    delay(100);
  }
}

No hay comentarios:

Publicar un comentario

Vídeos de las pruebas de los proyectos realizados

A continuación os dejamos los vídeos de las primeras pruebas de los proyectos desarrollados dentro del presente curso 24-25 del proyecto CIT...