Go Down

Topic: Servo library for the due... does exist? (Read 4662 times) previous topic - next topic

rbid

Hello,

By having on my program the following line:
   #include <Servo.h>

I get the compiler error under the Arduino IDE (1.5.1r2)
   vex_motor.ino:1: fatal error: Servo.h: No such file or directory
   compilation terminated.


The board is an Arduino Due.

Was the Servo library ported to the Arduino Due?... from the warning above, the answer may be no :(

Any hint?

DuaneB

Was added a few days ago, search  back in this forum and you will find it, but here is the direct link -

https://github.com/arduino/Arduino/commit/db81f52c3a27784fb44ca1ad6c77f9b1f0a4ef7d

Duane B
Read this
http://rcarduino.blogspot.com/2012/04/servo-problems-with-arduino-part-1.html
then watch this
http://rcarduino.blogspot.com/2012/04/servo-problems-part-2-demonstration.html

Rcarduino.blogspot.com

rbid


Was added a few days ago, search  back in this forum and you will find it, but here is the direct link -

https://github.com/arduino/Arduino/commit/db81f52c3a27784fb44ca1ad6c77f9b1f0a4ef7d

Duane B


Excellent, many thanks.

I'm not used to GIT, therefore, how can I download the files? (on my own risk), I guess I need to install this animal (git) and then get the files.

... just now saw the same link in the fourm..

DuaneB

Git looks like a pain to use to me also, but you should be able to cut and paste the code from the link.

Duane B

Read this
http://rcarduino.blogspot.com/2012/04/servo-problems-with-arduino-part-1.html
then watch this
http://rcarduino.blogspot.com/2012/04/servo-problems-part-2-demonstration.html

Rcarduino.blogspot.com

PLorand

#4
Dec 09, 2012, 11:58 am Last Edit: Dec 09, 2012, 12:03 pm by PLorand Reason: 1
Hello,

I tried using this servo library and I get this error when I try to compile:

Code: [Select]
In file included from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                ... (same thing repeated like 100 times) ...
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from sketch_dec09b.ino:6:
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:44: error: #include nested too deeply
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45: error: #include nested too deeply
In file included from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
               ... (same thing repeated like 100 times) ...
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from sketch_dec09b.ino:6:
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:53: error: 'servo_t' does not name a type
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:57: error: '_Nbr_16timers' was not declared in this scope
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:76: error: variable or field 'Servo_Handler' declared void
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:76: error: 'timer16_Sequence_t' was not declared in this scope
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:76: error: expected primary-expression before '*' token
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:76: error: 'pTc' was not declared in this scope
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:76: error: expected primary-expression before 'channel'
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:103: error: variable or field 'Servo_Handler' declared void
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:103: error: 'timer16_Sequence_t' was not declared in this scope
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:103: error: expected primary-expression before '*' token
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:103: error: 'tc' was not declared in this scope
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:103: error: expected primary-expression before 'channel'


I used the Sweep example provided with this library, because I wanted to see if it was working properly... Compiled with IDE 1.5.1r2... Any ideas?

rbid


Hello,

I tried using this servo library and I get this error when I try to compile:

Code: [Select]
In file included from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                ... (same thing repeated like 100 times) ...
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from sketch_dec09b.ino:6:
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:44: error: #include nested too deeply
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45: error: #include nested too deeply
In file included from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
               ... (same thing repeated like 100 times) ...
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:45,
                from sketch_dec09b.ino:6:
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:53: error: 'servo_t' does not name a type
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:57: error: '_Nbr_16timers' was not declared in this scope
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:76: error: variable or field 'Servo_Handler' declared void
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:76: error: 'timer16_Sequence_t' was not declared in this scope
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:76: error: expected primary-expression before '*' token
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:76: error: 'pTc' was not declared in this scope
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:76: error: expected primary-expression before 'channel'
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:103: error: variable or field 'Servo_Handler' declared void
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:103: error: 'timer16_Sequence_t' was not declared in this scope
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:103: error: expected primary-expression before '*' token
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:103: error: 'tc' was not declared in this scope
C:\Users\Lori\Documents\Arduino\libraries\Servo/Servo.h:103: error: expected primary-expression before 'channel'


I used the Sweep example provided with this library, because I wanted to see if it was working properly... Compiled with IDE 1.5.1r2... Any ideas?


I'm new here also, but it seems that you saved the files in the wrong location.

The Servo.cpp and Servo.h  may need to go to  .../hardware/arduino/sam/libraries/Servo directory and not to ../libraries/Servo directory...

I downloaded the files, located them in the correct place and worked :)

--- Ricky

PLorand

#6
Dec 09, 2012, 01:31 pm Last Edit: Dec 09, 2012, 01:38 pm by PLorand Reason: 1
The "Servo" folder is located both in the "C:\Users\Lori\Documents\Arduino\libraries\Servo" and the "C:\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo". And the errors I got are not "File not found exceptions" or similar...

I've also tried removing the library from "C:\Users\Lori\Documents\Arduino\libraries\Servo" and just leaving the "C:\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo" and I'm still getting the same errors...

PLorand

Investigating some more into these errors, it seems that the "#include <Arduino.h>" is "nested too deeply" (as the compiler says it). This would cause the rest of the errors from the bottom of the error list, like " 'servo_t' does not name a type", or " '_Nbr_16timers' was not declared in this scope", etc... Any ideas how to fix this?

rbid


The "Servo" folder is located both in the "C:\Users\Lori\Documents\Arduino\libraries\Servo" and the "C:\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo". And the errors I got are not "File not found exceptions" or similar...

I've also tried removing the library from "C:\Users\Lori\Documents\Arduino\libraries\Servo" and just leaving the "C:\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo" and I'm still getting the same errors...


I guess we both are talking about the "Arduino Due"... , I have added the following files:
- E:\Work\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo\Servo.h
- E:\Work\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo\Servo.cpp
- E:\Work\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo\keywords.txt
- E:\Work\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo\examples\Knob\Knob.ino
- E:\Work\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo\examples\Sweep\Sweep.ino

Now, from the error messages, it seems that the #ifndef Servo_h in line 45 is giving the hint. Do you have another Servo_h #define in some other place?.

On the Arduino IDE, did you select the correct board, otherwise you will be taking the avr files. (...\arduino-1.5.1r2\hardware\arduino\avr\libraries\Servo)

Just want to help.. I'm also new here, but for me the new files worked as required...

Have a nice day.

PLorand

#9
Dec 09, 2012, 05:14 pm Last Edit: Dec 09, 2012, 05:20 pm by PLorand Reason: 1


The "Servo" folder is located both in the "C:\Users\Lori\Documents\Arduino\libraries\Servo" and the "C:\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo". And the errors I got are not "File not found exceptions" or similar...

I've also tried removing the library from "C:\Users\Lori\Documents\Arduino\libraries\Servo" and just leaving the "C:\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo" and I'm still getting the same errors...


I guess we both are talking about the "Arduino Due"... , I have added the following files:
- E:\Work\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo\Servo.h
- E:\Work\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo\Servo.cpp
- E:\Work\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo\keywords.txt
- E:\Work\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo\examples\Knob\Knob.ino
- E:\Work\arduino-1.5.1r2\hardware\arduino\sam\libraries\Servo\examples\Sweep\Sweep.ino

Now, from the error messages, it seems that the #ifndef Servo_h in line 45 is giving the hint. Do you have another Servo_h #define in some other place?.

On the Arduino IDE, did you select the correct board, otherwise you will be taking the avr files. (...\arduino-1.5.1r2\hardware\arduino\avr\libraries\Servo)

Just want to help.. I'm also new here, but for me the new files worked as required...

Have a nice day.


SORRY! I'm the idiot... Mistakenly I've copied the contents of the .cpp file in the .h file, that's what was causing the problems... Maybe if it was easier to download files from Github, rather then copy-paste them piece-by-piece these mistakes wouldn't occur... Thanks for your help! :)

rbid


Maybe if it was easier to download files from Github, rather then copy-paste them piece-by-piece these mistakes wouldn't occur... Thanks for your help! :)

Copy and Paste is one of the great enemies of a programmer :)

I'm glad you found the problem.

Have a nice day

--- Ricky

PLorand

Yeah, definitely is!   :)

1 question... I didn't have the time to go trough the library's code fully to see exactly how it's working. How many servos can you connect to the Due using this library?... Theoretically you should be able to connect a maximum of 10 servos per timer channel, let's say 8 to have some space to work with and avoid errors and we have channels 4,5,6 free, so those could be used to control 24 outputs. Now I don't know how this library works exactly yet, but does it synchronize the pulses such that it can use 8 outputs per channel and multiple channels for more then 8 outputs?..

Thanks for your help!

Go Up