| 
							- 
 - // Please read Bounce.h for information about the liscence and authors
 - 
 - #include <Arduino.h>
 - #include "Bounce.h"
 - 
 - 
 - Bounce::Bounce(uint8_t pin,unsigned long interval_millis)
 - {
 - 	interval(interval_millis);
 - 	previous_millis = millis();
 - 	state = digitalRead(pin);
 -     this->pin = pin;
 - }
 - 
 - 
 - void Bounce::write(int new_state)
 -        {
 -        	this->state = new_state;
 -        	digitalWrite(pin,state);
 -        }
 - 
 - 
 - void Bounce::interval(unsigned long interval_millis)
 - {
 -   this->interval_millis = interval_millis;
 -   this->rebounce_millis = 0;
 - }
 - 
 - void Bounce::rebounce(unsigned long interval)
 - {
 - 	 this->rebounce_millis = interval;
 - }
 - 
 - 
 - 
 - int Bounce::update()
 - {
 - 	if ( debounce() ) {
 -         rebounce(0);
 -         return stateChanged = 1;
 -     }
 - 
 -      // We need to rebounce, so simulate a state change
 -      
 - 	if ( rebounce_millis && (millis() - previous_millis >= rebounce_millis) ) {
 -         previous_millis = millis();
 - 		 rebounce(0);
 - 		 return stateChanged = 1;
 - 	}
 - 
 - 	return stateChanged = 0;
 - }
 - 
 - 
 - unsigned long Bounce::duration()
 - {
 -   return millis() - previous_millis;
 - }
 - 
 - 
 - int Bounce::read()
 - {
 - 	return (int)state;
 - }
 - 
 - 
 - // Protected: debounces the pin
 - int Bounce::debounce() {
 - 	
 - 	uint8_t newState = digitalRead(pin);
 - 	if (state != newState ) {
 -   		if (millis() - previous_millis >= interval_millis) {
 -   			previous_millis = millis();
 -   			state = newState;
 -   			return 1;
 - 	}
 -   }
 -   
 -   return 0;
 - 	
 - }
 - 
 - // The risingEdge method is true for one scan after the de-bounced input goes from off-to-on.
 - bool  Bounce::risingEdge() { return stateChanged && state; }
 - // The fallingEdge  method it true for one scan after the de-bounced input goes from on-to-off. 
 - bool  Bounce::fallingEdge() { return stateChanged && !state; }
 - 
 
 
  |