123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
-
-
-
-
- #ifndef servo_h
- #define servo_h
-
- #include <inttypes.h>
-
-
-
-
- #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
- #define _useTimer5
-
- #define _useTimer3
- #define _useTimer4
-
- typedef enum { _timer5, _timer3, _timer4, _Nbr_16timers } timer16_Sequence_t ;
-
- #elif defined(__AVR_ATmega32U4__)
-
- #define _useTimer3
-
- typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ;
-
- #elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
- #define _useTimer3
-
-
- typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ;
-
- #elif defined(__AVR_ATmega128__) ||defined(__AVR_ATmega1281__) || defined(__AVR_ATmega1284P__) ||defined(__AVR_ATmega2561__)
- #define _useTimer3
-
-
- typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ;
-
- #else
-
-
- typedef enum { _Nbr_16timers } timer16_Sequence_t ;
-
- #endif
-
- #define Servo_VERSION 2
-
- #define MIN_PULSE_WIDTH 544
- #define MAX_PULSE_WIDTH 2400
- #define DEFAULT_PULSE_WIDTH 1500
- #define REFRESH_INTERVAL 20000
-
- #define SERVOS_PER_TIMER 12
- #define MAX_SERVOS (_Nbr_16timers * SERVOS_PER_TIMER)
-
- #define INVALID_SERVO 255
-
- typedef struct {
- uint8_t nbr :6 ;
- uint8_t isActive :1 ;
- } ServoPin_t;
-
- typedef struct {
- ServoPin_t Pin;
- unsigned int ticks;
- } servo_t;
-
- class Servo {
- public:
- Servo();
- uint8_t attach(int pin);
- uint8_t attach(int pin, int min, int max);
- void detach();
- void write(int value);
- void writeMicroseconds(int value);
- int read();
- int readMicroseconds();
- bool attached();
- #if defined(ENABLE_AUTO_BED_LEVELING) && PROBE_SERVO_DEACTIVATION_DELAY > 0
- int pin;
- #endif
- private:
- uint8_t servoIndex;
- int8_t min;
- int8_t max;
- };
-
- #endif
|