RobotCore 1.0
WPILib port to raspberry Pi
Loading...
Searching...
No Matches
Debouncer.java
1// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
4
5package org.wpilib.math.filter;
6
7import org.wpilib.math.util.MathSharedStore;
8
13public class Debouncer {
23
24 private double m_debounceTime;
25 private DebounceType m_debounceType;
26 private boolean m_baseline;
27
28 private double m_prevTime;
29
37 public Debouncer(double debounceTime, DebounceType type) {
38 m_debounceTime = debounceTime;
39 m_debounceType = type;
40
41 resetTimer();
42
43 m_baseline = m_debounceType == DebounceType.FALLING;
44 }
45
52 public Debouncer(double debounceTime) {
53 this(debounceTime, DebounceType.RISING);
54 }
55
56 private void resetTimer() {
57 m_prevTime = MathSharedStore.getTimestamp();
58 }
59
60 private boolean hasElapsed() {
61 return MathSharedStore.getTimestamp() - m_prevTime >= m_debounceTime;
62 }
63
70 public boolean calculate(boolean input) {
71 if (input == m_baseline) {
72 resetTimer();
73 }
74
75 if (hasElapsed()) {
76 if (m_debounceType == DebounceType.BOTH) {
77 m_baseline = input;
78 resetTimer();
79 }
80 return input;
81 } else {
82 return m_baseline;
83 }
84 }
85
92 public void setDebounceTime(double time) {
93 m_debounceTime = time;
94 }
95
102 public double getDebounceTime() {
103 return m_debounceTime;
104 }
105
111 public void setDebounceType(DebounceType type) {
112 m_debounceType = type;
113
114 m_baseline = m_debounceType == DebounceType.FALLING;
115 }
116
123 return m_debounceType;
124 }
125}
void setDebounceType(DebounceType type)
void setDebounceTime(double time)
boolean calculate(boolean input)
Debouncer(double debounceTime)
Debouncer(double debounceTime, DebounceType type)