|  |  | @ -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. | 
			
		
	
		
		
			
				
					
					|  |  |  |  * |  |  |  |  * | 
			
		
	
	
		
		
			
				
					|  |  | @ -89,12 +89,12 @@ typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ; | 
			
		
	
		
		
			
				
					
					|  |  |  | typedef enum { _Nbr_16timers } timer16_Sequence_t ; |  |  |  | typedef enum { _Nbr_16timers } timer16_Sequence_t ; | 
			
		
	
		
		
			
				
					
					|  |  |  | #endif |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #define Servo_VERSION           2      // software version of this library
 |  |  |  | #define Servo_VERSION           2     // software version of this library
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #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
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |