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).

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
Related Blocks
- On Button Pressed: Detect press event
- Timer Start: Measure hold duration
- Digital Line Set: Provide feedback
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:
- Always pair with press handler
- Use appropriate debounce
- Validate state before action
- Provide user feedback
- Handle held vs released logic
- Test edge cases
- 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