Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Cronómetro Arduino Sencillo: Activado por Botón con EEPROM e Interrupciones

Componentes y suministros

ComponenteDescripciónCantidad
Arduino UNO Cualquier modelo Arduino. 1
Pulsador (no retentivo) Con resistencia pull-down de 1kΩ. 1
Resistencia 10kΩ Para pull-up/pull-down según necesidad. 1

Aplicaciones y servicios

Sobre el proyecto

Un cronómetro simple que se activa al pulsar un botón. Guarda el último tiempo medido en la EEPROM interna para conservarlo tras reinicios. Ideal para integrar en otros proyectos.

EEPROM

Memoria no volátil del Arduino (1024 bytes en Uno). Se usa la librería EEPROM.h (incluida por defecto) para almacenar el tiempo en la dirección 0.

Interrupciones

El pin 2 (interruptPin) detecta cambios de nivel (CHANGE). Al pulsar el botón, la interrupción llama a refreshTime() tanto en flanco de subida (inicio) como de bajada (fin). La resistencia pull-down mantiene el pin LOW en reposo.

Código del proyecto

Definiciones e includes

#include <EEPROM.h>
#define interruptPin 2
#define eeAddress 0
float starttime = 0;
float endtime = 0;
float resulttime = 0, oldresulttime = 0;

setup()

void setup() {
  Serial.begin(9600);
  while (!Serial) { ; }
  Serial.println("Serial comms are ready sir!:.. bip bip");
  attachInterrupt(digitalPinToInterrupt(interruptPin), refreshTime, CHANGE);
}

loop()

void loop() {
  // Tu código principal aquí
  // La variable resulttime (guardada en EEPROM) está disponible
}

Función refreshTime()

void refreshTime() {
  if (digitalRead(interruptPin)) { // Flanco subida: inicio
    starttime = millis();
    Serial.print("Start time: "); Serial.println(starttime);
  } else { // Flanco bajada: fin
    endtime = millis();
    resulttime = endtime - starttime;
    Serial.print("End time: "); Serial.println(endtime);
    Serial.print("Result time: "); Serial.println(resulttime);
    WhatsNewEeprom();
  }
}

Función WhatsNewEeprom()

void WhatsNewEeprom() {
  Serial.println("-----------checking eeprom");
  EEPROM.get(eeAddress, oldresulttime);
  Serial.print("oldresulttime"); Serial.println(oldresulttime);
  Serial.print("resulttime"); Serial.println(resulttime);
  if (resulttime != oldresulttime) {
    EEPROM.put(eeAddress, resulttime);
    Serial.print("-----Ding! New time recorded in eeprom: "); Serial.println(resulttime);
  } else {
    Serial.println("No new time found, eeprom was not disturbed");
  }
}

Antirrebote (Debouncing)

El rebote mecánico del pulsador genera múltiples flancos. Se puede mitigar por software o hardware (condensador 220nF en paralelo entre el pin y GND).

Cronómetro Arduino Sencillo: Activado por Botón con EEPROM e Interrupciones

Esquemático

Conexión simple del pulsador con resistencia pull-down.

Cronómetro Arduino Sencillo: Activado por Botón con EEPROM e Interrupciones

Proceso de manufactura

  1. Construye un Reloj de Pared Elegante con Anillo Neopixel 60 LEDs Adafruit y Arduino
  2. Reloj de Palabras DIY con Arduino: Construye una Pantalla Elegante en Tiempo Real
  3. Construya un osciloscopio Arduino de 20 kHz en LCD Nokia 5110: Guía DIY fácil
  4. Construye un Spybot controlado por Bluetooth con Arduino
  5. FlickMote: Mando IR por gestos para Smart Home
  6. TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
  7. Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
  8. Sensor de obstáculos IR casero con Arduino – Tutorial fácil con LED IR y fotodiodo
  9. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  10. Soluciones de Alimentación Optimizadas para Proyectos Arduino
  11. Construye un reloj despertador fiable con RTC DS1302 y Arduino UNO