Error compiling for Arduino Uno

I'm making a basic machine that simply dumps two cups to feed my hamster while I am away this weekend.

However, when I try to compile my sketch, I get the following error:

Arduino: 1.6.9 (Windows 10), Board: "Arduino/Genuino Uno"

In file included from C:\Program Files (x86)\Arduino\libraries\Servo\src/Servo.h:63:0,

                 from C:\Users\Troy\Documents\Arduino\HamsterFeed\HamsterFeed.ino:2:

C:\Program Files (x86)\Arduino\libraries\Servo\src/avr/ServoTimers.h:57:16: error: redeclaration of '_timer1'

 typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t;

                ^

In file included from C:\Users\Troy\Documents\Arduino\HamsterFeed\HamsterFeed.ino:1:0:

C:\Users\Troy\Documents\Arduino\libraries\VarSpeedServo/VarSpeedServo.h:112:16: note: previous declaration 'timer16_Sequence_t _timer1'

 typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ;                  

                ^

In file included from C:\Program Files (x86)\Arduino\libraries\Servo\src/Servo.h:63:0,

                 from C:\Users\Troy\Documents\Arduino\HamsterFeed\HamsterFeed.ino:2:

C:\Program Files (x86)\Arduino\libraries\Servo\src/avr/ServoTimers.h:57:25: error: redeclaration of '_Nbr_16timers'

 typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t;

                         ^

In file included from C:\Users\Troy\Documents\Arduino\HamsterFeed\HamsterFeed.ino:1:0:

C:\Users\Troy\Documents\Arduino\libraries\VarSpeedServo/VarSpeedServo.h:112:25: note: previous declaration 'timer16_Sequence_t _Nbr_16timers'

 typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ;                  

                         ^

In file included from C:\Program Files (x86)\Arduino\libraries\Servo\src/Servo.h:63:0,

                 from C:\Users\Troy\Documents\Arduino\HamsterFeed\HamsterFeed.ino:2:

C:\Program Files (x86)\Arduino\libraries\Servo\src/avr/ServoTimers.h:57:41: error: conflicting declaration 'typedef enum timer16_Sequence_t timer16_Sequence_t'

 typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t;

                                         ^

In file included from C:\Users\Troy\Documents\Arduino\HamsterFeed\HamsterFeed.ino:1:0:

C:\Users\Troy\Documents\Arduino\libraries\VarSpeedServo/VarSpeedServo.h:112:41: error: 'timer16_Sequence_t' has a previous declaration as 'typedef enum timer16_Sequence_t timer16_Sequence_t'

 typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ;                  

                                         ^

In file included from C:\Users\Troy\Documents\Arduino\HamsterFeed\HamsterFeed.ino:2:0:

C:\Program Files (x86)\Arduino\libraries\Servo\src/Servo.h:87:3: error: conflicting declaration 'typedef struct ServoPin_t ServoPin_t'

 } ServoPin_t   ;  

   ^

In file included from C:\Users\Troy\Documents\Arduino\HamsterFeed\HamsterFeed.ino:1:0:

C:\Users\Troy\Documents\Arduino\libraries\VarSpeedServo/VarSpeedServo.h:133:3: error: 'ServoPin_t' has a previous declaration as 'typedef struct ServoPin_t ServoPin_t'

 } ServoPin_t   ;  

   ^

In file included from C:\Users\Troy\Documents\Arduino\HamsterFeed\HamsterFeed.ino:2:0:

C:\Program Files (x86)\Arduino\libraries\Servo\src/Servo.h:92:3: error: conflicting declaration 'typedef struct servo_t servo_t'

 } servo_t;

   ^

In file included from C:\Users\Troy\Documents\Arduino\HamsterFeed\HamsterFeed.ino:1:0:

C:\Users\Troy\Documents\Arduino\libraries\VarSpeedServo/VarSpeedServo.h:140:3: error: 'servo_t' has a previous declaration as 'typedef struct servo_t servo_t'

 } servo_t;

   ^

exit status 1
Error compiling for board Arduino/Genuino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I have Googled around for a fix, but could not find anything of use.

I'm running Windows 10 with IDE version 1.6.9, I'm using an Arduino Uno, and using libraries Servo.h and VarSpeedServo.h

Any help would be appreciated greatly on behalf of Nibbles the hamster :slight_smile:

Thank you.

As a guess, VarSpeedServo is essentially an enhanced version of Servo, and uses the same timers and data structures, so you can't use them both in the same sketch. You can probably find methods in VarSpeedServo that duplicate the simpler functions from Servo...

westfw:
As a guess, VarSpeedServo is essentially an enhanced version of Servo, and uses the same timers and data structures, so you can't use them both in the same sketch.

Agreed. Other possibility is that the include is being pulled in twice, but most include files have gear in them to deal with this gracefully.