public void DigitalRead_1_should_trigger_Down() { var wasCalled = false; _button.Down = () => { wasCalled = true; }; A.CallTo(() => _arduino.DigitalRead(Pin)).Returns(0); wasCalled.ShouldBeFalse(); _button.IsDown.ShouldBeFalse(); _timer.Tick(); A.CallTo(() => _arduino.DigitalRead(Pin)).Returns(1); _timer.Tick(); wasCalled.ShouldBeTrue(); _button.IsDown.ShouldBeTrue(); }
private void Setup(IArduino board, int pin) { SetInterval(() => { var isDown = board.DigitalRead(pin) == 1; var wasDown = IsDown; if (!wasDown && isDown) { IsDown = true; Down(); } else if (wasDown && !isDown) { IsDown = false; Up(); } }, 5); }