Botón momentáneo multipropósito - microcontrolador/arduino/esp8266

Como más aficionado que profesional, me disculpo si estoy haciendo las preguntas incorrectas, sin embargo, he estado investigando durante un tiempo y esperaba que Stack Exchange pudiera ayudar.

He leído algunos artículos sobre circuitos de corte de baja potencia y circuitos de potencia de enganche suave, pero espero lograr algo un poco más inteligente.

Esencialmente, me gustaría una interfaz de un solo botón en la que presionar el botón encienda el circuito cuando esté apagado, actúe como una entrada cuando el circuito esté activo y luego apague el circuito si se mantiene presionado durante, por ejemplo, 3 segundos o más.

A nivel de software, es importante apagar el chip usando el microcontrolador (potencialmente dejando caer un pin a tierra conectado a un transistor/mosfet) ya que me gustaría enviar un mensaje de "apagado" antes de apagar el circuito.

es posible?

Gracias de antemano,

cris

Respuestas (2)

Sí, esto es posible.

  • Use la retención prolongada para poner el procesador en estado de suspensión.
  • Configure el mismo pin para despertar del modo de suspensión.
  • Mientras el procesador está funcionando, puede usar el pin como entrada estándar.

Sí, es posible. Estoy trabajando en algo similar. La lógica que utilicé es la siguiente,

  1. Configure ese pin en particular como un pin de interrupción. Configúrelo de manera que se active en cada transición de la señal (de mayor a menor y también de menor a mayor)
  2. En el ISR, inicie el temporizador y habilite su interrupción. Establezca el período del temporizador según el requisito de la funcionalidad de 'retención prolongada'. Si se mantiene presionado el botón durante más tiempo que el período del temporizador, se dispara la interrupción del temporizador.
  3. Una vez que se activa la interrupción del temporizador, asegúrese de apagar el temporizador y levantar una bandera que indique que el botón se presionó durante más tiempo.

Saludos