Skip to main content

On Button Input Released

This block is triggered when a button or digital input is released (goes HIGH to LOW or LOW to HIGH, depending on configuration).

On Button Input Released Block

Overview

The On Button Input Released block detects button release events on GPIO digital input pins, enabling detection of button hold duration and release-triggered actions.

Configuration

  • GPIO Line: Which digital input pin to monitor
  • Trigger Edge: Rising edge or falling edge (opposite of press)
  • Debounce: Debounce time in milliseconds

Use Cases

Common button release scenarios:

Momentary Actions

Execute action only after button released:

On Button Pressed:
Show "Action pending..."
On Button Released:
Execute action
Show "Action complete"

Hold Duration

Measure how long button was held:

On Button Pressed:
Start timer

On Button Released:
Stop timer
duration = timer value

If duration < 1 second:
Short press action
Else if duration < 5 seconds:
Medium press action
Else:
Long press action

Safety Confirmation

Require button release before proceeding:

On Button Pressed:
Prepare action

On Button Released:
Confirm ready
Execute when safe

Toggle with Feedback

Provide feedback during press, execute on release:

On Button Pressed:
Blink LED

On Button Released:
state = NOT state
Set output to state
Stop blinking

Press-Release Pattern

Typical button handling pattern:

PRESSED:
1. Button goes active
2. On Button Pressed triggers
3. Start action or timer
4. Provide feedback

HELD:
5. Button remains active
6. Optional: Monitor hold duration
7. Optional: Execute hold action

RELEASED:
8. Button goes inactive
9. On Button Released triggers
10. Complete action
11. Update state

Applications

Elevator Button

On Button Pressed:
Illuminate button LED
Queue floor request

On Button Released:
(Button stays lit until floor reached)

Push-to-Talk

On Button Pressed:
Enable microphone
Start recording

On Button Released:
Disable microphone
Stop recording
Send audio

Manual Control

On Button Pressed:
Motor starts

On Button Released:
Motor stops

Copy/Paste Function

On Button Pressed (short):
Copy value

On Button Pressed (long):
Paste value

(Determined on release)

Hold Duration Detection

Implement press duration detection:

Variables: press_time, release_time, duration

On Button Pressed:
press_time = current_time

On Button Released:
release_time = current_time
duration = release_time - press_time

If duration < 500ms:
Quick tap action
Else if duration < 2000ms:
Normal press action
Else if duration < 5000ms:
Long press action
Else:
Extra long press action

Debouncing

Release debouncing same as press:

  • Prevents false releases
  • Filters contact bounce
  • Typical: 10-50ms
  • Adjust based on button type

State Management

Track button state:

Variable: button_held = false

On Button Pressed:
button_held = true

On Button Released:
button_held = false

User Feedback

Provide feedback on release:

On Button Released:
Beep confirmation
Flash LED
Update display
Log action

Safety Applications

Safety-critical release handling:

On Emergency Stop Pressed:
Immediate shutdown
Lock out controls

On Emergency Stop Released:
Remain in safe state
Require manual reset
Log reset event

Multi-Button Sequences

Implement button sequences:

On Button1 Pressed then Released:
sequence_step = 1

On Button2 Pressed then Released:
If sequence_step == 1:
sequence_step = 2

On Button3 Pressed then Released:
If sequence_step == 2:
Execute secret function
sequence_step = 0

Hardware Considerations

Pull Resistors

Same configuration as button press:

  • Pull-up or pull-down
  • Match press configuration
  • Consistent logic levels

Noise Filtering

Release detection benefits from:

  • Hardware debounce (RC filter)
  • Software debounce
  • Schmitt trigger inputs

Performance

Release detection:

  • Same speed as press detection
  • Negligible CPU overhead
  • Interrupt-driven (efficient)
  • Real-time response

Troubleshooting

Common release issues:

  • Multiple triggers: Increase debounce time
  • Release not detected: Check wiring and pull resistors
  • Delayed response: Verify debounce time not too long
  • Inconsistent: Check for loose connections

Best Practices

Button release best practices:

  1. Always pair with press handler
  2. Use appropriate debounce
  3. Validate state before action
  4. Provide user feedback
  5. Handle held vs released logic
  6. Test edge cases
  7. Consider accessibility

Advanced Patterns

Click and Drag

On Button Pressed:
Start drag operation
Track position

On Button Released:
Complete drag
Commit position

Gesture Detection

On Button1 Pressed:
timestamp1 = current_time

On Button1 Released:
duration1 = current_time - timestamp1

On Button2 Pressed:
timestamp2 = current_time
gap = timestamp2 - release_time1

(Analyze timing for gesture)

Linking to Variables

Release events can:

  • Update button state variables
  • Store duration in variables
  • Trigger variable changes
  • Log release events

See Also