93 int16_t
begin(uint8_t
pin, uint16_t debounce_mS = 30,
bool invert =
true,
bool usePullUp =
true)
110 return (
_sw.readPublicData(
_pin) > 0);
123 uint8_t tx[8] = { 201,
_pin,
_pinMode,1,0x55,0x55,0x55,0x55 };
125 _sw.sendPacket(tx,rx);
134 return(256 * rx[7] + rx[6]);
148 uint8_t tx[8] = { 201,
_pin,
_pinMode,1,0x55,0x55,0x55,0x55 };
150 _sw.sendPacket(tx, rx);
160 return(256 * rx[7] + rx[6]);
175 uint8_t tx[8] = { 201,
_pin,
_pinMode,(uint8_t)resetTransitionCounts,0x55,0x55,0x55,0x55 };
177 _sw.sendPacket(tx, rx);
215 _debouncedInput = serialWombatDebouncedInput;
231 void begin(int32_t* variableToIncrement,
232 int32_t slowIncrement = 1, uint32_t slow_mS_betweenIncrements = 250,
233 uint16_t slowToMediumTransition_mS = 1000,
234 int32_t mediumIncrement = 1, uint32_t medium_mS_betweenIncrements = 100,
235 uint16_t mediumToFastTransition_mS = 1000 ,
236 int32_t fastIncrement = 1, uint32_t fast_mS_betweenIncrements = 50)
238 _variableToIncrement = variableToIncrement;
240 _slowIncrement = slowIncrement;
241 _slow_mS_betweenIncrements = slow_mS_betweenIncrements;
243 _slowToMediumTransition_mS = slowToMediumTransition_mS;
245 _mediumIncrement = mediumIncrement;
246 _medium_mS_betweenIncrements = medium_mS_betweenIncrements;
248 _mediumToFastTransistion_mS = mediumToFastTransition_mS;
250 _fastIncrement = fastIncrement;
251 _fast_mS_betweenIncrements = fast_mS_betweenIncrements;
253 _lastPressDuration = 0;
262 uint16_t pressDuration = _debouncedInput.readDurationInTrueState_mS();
264 bool incremented =
false;
265 bool pressed =
false;
266 if (pressDuration > 0)
268 if (_lastPressDuration >= pressDuration)
270 _lastPressDuration = 0;
273 if (pressDuration > _mediumToFastTransistion_mS)
276 increments = (pressDuration - _lastPressDuration) / _fast_mS_betweenIncrements;
277 *_variableToIncrement += _fastIncrement * increments;
278 _lastPressDuration += _fast_mS_betweenIncrements * increments;
280 else if (pressDuration > _slowToMediumTransition_mS)
283 increments = (pressDuration - _lastPressDuration) / _medium_mS_betweenIncrements;
284 *_variableToIncrement += _mediumIncrement * increments;
285 _lastPressDuration += _medium_mS_betweenIncrements * increments;
290 increments = (pressDuration - _lastPressDuration) / _slow_mS_betweenIncrements;
291 *_variableToIncrement += _slowIncrement * increments;
292 _lastPressDuration += _slow_mS_betweenIncrements * increments;
293 incremented = increments > 0;
297 _debouncedInput.transitions = 0;
304 _lastPressDuration = 0;
305 int presses = _debouncedInput.transitions / 2;
306 *_variableToIncrement += _slowIncrement * presses;
307 _debouncedInput.transitions -= presses * 2;
314 if (*_variableToIncrement <
lowLimit)
329 int32_t* _variableToIncrement;
331 int32_t _slowIncrement;
332 uint32_t _slow_mS_betweenIncrements;
334 uint16_t _slowToMediumTransition_mS;
336 int32_t _mediumIncrement;
337 uint32_t _medium_mS_betweenIncrements;
339 uint16_t _mediumToFastTransistion_mS;
341 int32_t _fastIncrement;
342 uint32_t _fast_mS_betweenIncrements;
344 uint32_t _lastPressDuration;
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
SerialWombatPin(SerialWombatChip &serialWombatChip)
Instantiates a Serial Wombat Pin.
int16_t initPacketNoResponse(uint8_t packetNumber, uint8_t param0=0x55, uint8_t param1=0x55, uint8_t param2=0x55, uint8_t param3=0x55, uint8_t param4=0x55)
uint8_t pin()
Returns the current SW pin number. Used primarily for virtual calls by derived classes.