# Momentary button as latching button

**URL:** <https://forum.arduino.cc/t/momentary-button-as-latching-button/536630>\
**Category:** Programming\
**Created:** [July 16, 2018, 12:55am UTC](https://forum.arduino.cc/t/momentary-button-as-latching-button/536630 "2018-07-16T00:55:53Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![wreckitsteve](https://avatars.discourse-cdn.com/v4/letter/w/b2d939/32.png) [@wreckitsteve](https://forum.arduino.cc/u/wreckitsteve)\
**Post date:** [July 16, 2018, 12:55am UTC](https://forum.arduino.cc/t/momentary-button-as-latching-button/536630/1 "2018-07-16T00:55:53Z")

</div>

Hi,

I am looking for some help please, I need to make a momentary push button act like a latching button so that when it is pressed it does something until its pressed again to turn that function off.

My current code for the function is:

```cpp
/* function to control maintain mode */
void maintainMode()
{
  byte maintainSwitch = 0;
  maintainSwitch = digitalRead(MAINTAIN_SWITCH_PIN);
  delay(50);

  if(maintainSwitch == LOW)
  {

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Maintenance Mode: ON");
    lcd.setCursor(0, 2);
    lcd.print("Disable mode when complete.");
    digitalWrite(HEATER_RELAY_PIN, HIGH);
    digitalWrite(FILTER_UV_RELAY_PIN, HIGH);

  }else{
   
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Maintenance Mode: OFF");

}

```

The above code does not work and ive spend hours trying to find a solution, any ideas?

---

<div class="post-metadata">

**Author:** ![FredScuttle](https://avatars.discourse-cdn.com/v4/letter/f/8dc957/32.png) [@FredScuttle](https://forum.arduino.cc/u/FredScuttle)\
**Post date:** [July 16, 2018, 1:21am UTC](https://forum.arduino.cc/t/momentary-button-as-latching-button/536630/2 "2018-07-16T01:21:05Z")

</div>

How do you call the function "maintainMode()"? Post ALL your code.

---

<div class="post-metadata">

**Author:** ![groundFungus](https://avatars.discourse-cdn.com/v4/letter/g/73ab20/32.png) [@groundFungus](https://forum.arduino.cc/u/groundFungus)\
**Post date:** [July 16, 2018, 1:34am UTC](https://forum.arduino.cc/t/momentary-button-as-latching-button/536630/3 "2018-07-16T01:34:58Z")

</div>

The [state change detection example](https://www.arduino.cc/en/Tutorial/StateChangeDetection) shows how to do what you want.

---

<div class="post-metadata">

**Author:** ![wreckitsteve](https://avatars.discourse-cdn.com/v4/letter/w/b2d939/32.png) [@wreckitsteve](https://forum.arduino.cc/u/wreckitsteve)\
**Post date:** [July 16, 2018, 8:17am UTC](https://forum.arduino.cc/t/momentary-button-as-latching-button/536630/4 "2018-07-16T08:17:06Z")

</div>

> groundFungus:  
> The [state change detection example](https://www.arduino.cc/en/Tutorial/StateChangeDetection) shows how to do what you want.

Ive just looked at the code and tried it but it still acts as a momentary button! the cade just shows its current state

---

<div class="post-metadata">

**Author:** ![septillion](https://avatars.discourse-cdn.com/v4/letter/s/c5a1d2/32.png) [@septillion](https://forum.arduino.cc/u/septillion)\
**Post date:** [July 16, 2018, 8:52am UTC](https://forum.arduino.cc/t/momentary-button-as-latching-button/536630/5 "2018-07-16T08:52:28Z")

</div>

> wreckitsteve:  
> Ive just looked at the code and **tried it**

Show us! **All of it!** Because we know one thing for sure, the bug is in the code you did not post...

---

<div class="post-metadata">

**Author:** ![PaulMurrayCbr](https://avatars.discourse-cdn.com/v4/letter/p/74df32/32.png) [@PaulMurrayCbr](https://forum.arduino.cc/u/PaulMurrayCbr)\
**Post date:** [July 16, 2018, 10:01pm UTC](https://forum.arduino.cc/t/momentary-button-as-latching-button/536630/6 "2018-07-16T22:01:41Z")

</div>

When a push button is pressed, it is pressed at human speed. This means that it stays pressed for several cycles of your loop().

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [May 5, 2021, 11:17pm UTC](https://forum.arduino.cc/t/momentary-button-as-latching-button/536630/7 "2021-05-05T23:17:18Z")

</div>


