| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -24,7 +24,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  Note that analogWrite of PWM on pins associated with the timer are disabled when the first servo is attached.
 | 
					 | 
					 | 
					 | 
					  Note that analogWrite of PWM on pins associated with the timer are disabled when the first servo is attached.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  Timers are seized as needed in groups of 12 servos - 24 servos use two timers, 48 servos will use four.
 | 
					 | 
					 | 
					 | 
					  Timers are seized as needed in groups of 12 servos - 24 servos use two timers, 48 servos will use four.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  The sequence used to sieze timers is defined in timers.h
 | 
					 | 
					 | 
					 | 
					  The sequence used to seize timers is defined in timers.h
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  The methods are:
 | 
					 | 
					 | 
					 | 
					  The methods are:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -50,7 +50,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					/*
 | 
					 | 
					 | 
					 | 
					/*
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 * Defines for 16 bit timers used with  Servo library
 | 
					 | 
					 | 
					 | 
					 * Defines for 16 bit timers used with  Servo library
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *
 | 
					 | 
					 | 
					 | 
					 *
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 * If _useTimerX is defined then TimerX is a 16 bit timer on the curent board
 | 
					 | 
					 | 
					 | 
					 * If _useTimerX is defined then TimerX is a 16 bit timer on the current board
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 * timer16_Sequence_t enumerates the sequence that the timers should be allocated
 | 
					 | 
					 | 
					 | 
					 * timer16_Sequence_t enumerates the sequence that the timers should be allocated
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 * _Nbr_16timers indicates how many 16 bit timers are available.
 | 
					 | 
					 | 
					 | 
					 * _Nbr_16timers indicates how many 16 bit timers are available.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 *
 | 
					 | 
					 | 
					 | 
					 *
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -94,7 +94,7 @@ typedef enum { _Nbr_16timers } timer16_Sequence_t ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define MIN_PULSE_WIDTH       544     // the shortest pulse sent to a servo
 | 
					 | 
					 | 
					 | 
					#define MIN_PULSE_WIDTH       544     // the shortest pulse sent to a servo
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define MAX_PULSE_WIDTH      2400     // the longest pulse sent to a servo
 | 
					 | 
					 | 
					 | 
					#define MAX_PULSE_WIDTH      2400     // the longest pulse sent to a servo
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define DEFAULT_PULSE_WIDTH  1500     // default pulse width when servo is attached
 | 
					 | 
					 | 
					 | 
					#define DEFAULT_PULSE_WIDTH  1500     // default pulse width when servo is attached
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define REFRESH_INTERVAL    20000     // minumim time to refresh servos in microseconds
 | 
					 | 
					 | 
					 | 
					#define REFRESH_INTERVAL    20000     // minimum time to refresh servos in microseconds
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define SERVOS_PER_TIMER       12     // the maximum number of servos controlled by one timer
 | 
					 | 
					 | 
					 | 
					#define SERVOS_PER_TIMER       12     // the maximum number of servos controlled by one timer
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define MAX_SERVOS   (_Nbr_16timers  * SERVOS_PER_TIMER)
 | 
					 | 
					 | 
					 | 
					#define MAX_SERVOS   (_Nbr_16timers  * SERVOS_PER_TIMER)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -118,13 +118,13 @@ public:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  uint8_t attach(int pin);           // attach the given pin to the next free channel, sets pinMode, returns channel number or 0 if failure
 | 
					 | 
					 | 
					 | 
					  uint8_t attach(int pin);           // attach the given pin to the next free channel, sets pinMode, returns channel number or 0 if failure
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  uint8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes.
 | 
					 | 
					 | 
					 | 
					  uint8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  void detach();
 | 
					 | 
					 | 
					 | 
					  void detach();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  void write(int value);             // if value is < 200 its treated as an angle, otherwise as pulse width in microseconds
 | 
					 | 
					 | 
					 | 
					  void write(int value);             // if value is < 200 it is treated as an angle, otherwise as pulse width in microseconds
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  void writeMicroseconds(int value); // Write pulse width in microseconds
 | 
					 | 
					 | 
					 | 
					  void writeMicroseconds(int value); // Write pulse width in microseconds
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  int read();                        // returns current pulse width as an angle between 0 and 180 degrees
 | 
					 | 
					 | 
					 | 
					  int read();                        // returns current pulse width as an angle between 0 and 180 degrees
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  int readMicroseconds();            // returns current pulse width in microseconds for this servo (was read_us() in first release)
 | 
					 | 
					 | 
					 | 
					  int readMicroseconds();            // returns current pulse width in microseconds for this servo (was read_us() in first release)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  bool attached();                   // return true if this servo is attached, otherwise false
 | 
					 | 
					 | 
					 | 
					  bool attached();                   // return true if this servo is attached, otherwise false
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
 | 
					 | 
					 | 
					 | 
					#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  int pin;                           // store the hw pin of the servo
 | 
					 | 
					 | 
					 | 
					  int pin;                           // store the hardware pin of the servo
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif
 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					private:
 | 
					 | 
					 | 
					 | 
					private:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   uint8_t servoIndex;               // index into the channel data for this servo
 | 
					 | 
					 | 
					 | 
					   uint8_t servoIndex;               // index into the channel data for this servo
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |