A Servo control library that works on any output pin, not just the PWM pins
Fork of UniServ by
Revision 1:8343f1715462, committed 2017-02-08
- Comitter:
- mario_meh
- Date:
- Wed Feb 08 08:35:32 2017 +0000
- Parent:
- 0:dde1a0011645
- Commit message:
- Zadnje izmjene pred predaju
Changed in this revision
UniServ.cpp | Show annotated file Show diff for this revision Revisions of this file |
UniServ.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r dde1a0011645 -r 8343f1715462 UniServ.cpp --- a/UniServ.cpp Wed Oct 13 23:53:29 2010 +0000 +++ b/UniServ.cpp Wed Feb 08 08:35:32 2017 +0000 @@ -1,55 +1,94 @@ /* UniServ Servo Library - * Copyright (c) 2010 Matt Parsons - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +* Copyright (c) 2010 Matt Parsons +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ - #include "mbed.h" - #include "UniServ.h" - UniServ::UniServ(PinName pin) : ServPin(pin){ - Period=20000; - Position=1500; - ServMin=400; - ServMax=2600; - - Pulse.attach_us(this,&UniServ::SigStart,Period); - } - - void UniServ::SigStart(){ - ServPin=1; - PulseEnd.attach_us(this,&UniServ::SigStop,Position); - } +/** Default metoda za servo motor C90 +* @code +* #include "mbed.h" +* #include "UniServ.h" +* +* t.start(); +* sMotor.write_us(2000); +* t.stop(); +* pc.printf("%f\n\r", t.read()); +* wait_ms(1000); +* t.reset(); +* t.start(); +* sMotor.write_us(0); +* t.stop(); +* pc.printf("%f\n\r", t.read()); +* wait_ms(1000); +* t.reset(); +* t.start(); +* sMotor.write_us(3000); +* t.stop(); +* pc.printf("%f\n\r", t.read()); +* wait_ms(1000); +* t.reset(); +* t.start(); +* sMotor.write_us(1000); +* t.stop(); +* pc.printf("%f\n\r", t.read()); +* wait_ms(1000); +* sMotor.Disable(); +* +* Dodao metodu Disable() zbog toga da se oslobodi +* cpu dok se ne izvrši slijedeća operacija +* @endcode +*/ - void UniServ::SigStop(){ - ServPin=0; - } +#include "mbed.h" +#include "UniServ.h" + +UniServ::UniServ(PinName pin) : ServPin(pin){ + Period=20000; + Position=1500; + ServMin=400; + ServMax=2600; + + Pulse.attach_us(this,&UniServ::SigStart,Period); + } + +void UniServ::SigStart(){ + ServPin=1; + PulseEnd.attach_us(this,&UniServ::SigStop,Position); + } + +void UniServ::SigStop(){ + ServPin=0; + } + +void UniServ::write_us(int PosIn){ + Position=PosIn; + if(PosIn<ServMin){Position=ServMin;} + if(PosIn>ServMax){Position=ServMax;} + } - void UniServ::write_us(int PosIn){ - Position=PosIn; - if(PosIn<ServMin){Position=ServMin;} - if(PosIn>ServMax){Position=ServMax;} - } - - int UniServ::read_us(){ - return Position; - } - - + int UniServ::read_us(){ + return Position; + } + void UniServ::Disable() { + Pulse.detach(); + } + + \ No newline at end of file
diff -r dde1a0011645 -r 8343f1715462 UniServ.h --- a/UniServ.h Wed Oct 13 23:53:29 2010 +0000 +++ b/UniServ.h Wed Feb 08 08:35:32 2017 +0000 @@ -1,24 +1,24 @@ /* UniServ Servo Library - * Copyright (c) 2010 Matt Parsons - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +* Copyright (c) 2010 Matt Parsons +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ #ifndef MBED_UNISERVE_H #define MBED_UNISERVE_H @@ -31,6 +31,7 @@ UniServ(PinName); void write_us(int); int read_us(); + void Disable(); // Dodao private: void SigStart();