Programme d'utilisation servomotors MX12 V1

Committer:
R66Y
Date:
Fri May 19 14:32:14 2017 +0000
Revision:
0:80df663dd15e
programme pour utiliser les servomoteurs MX12.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
R66Y 0:80df663dd15e 1 /* mbed Microcontroller Library - Ticker
R66Y 0:80df663dd15e 2 * Copyright (c) 2007-2009 ARM Limited. All rights reserved.
R66Y 0:80df663dd15e 3 */
R66Y 0:80df663dd15e 4
R66Y 0:80df663dd15e 5 #ifndef MBED_TICKER_H
R66Y 0:80df663dd15e 6 #define MBED_TICKER_H
R66Y 0:80df663dd15e 7
R66Y 0:80df663dd15e 8 #include "TimerEvent.h"
R66Y 0:80df663dd15e 9 #include "FunctionPointer.h"
R66Y 0:80df663dd15e 10
R66Y 0:80df663dd15e 11 namespace mbed {
R66Y 0:80df663dd15e 12
R66Y 0:80df663dd15e 13 /* Class: Ticker
R66Y 0:80df663dd15e 14 * A Ticker is used to call a function at a recurring interval
R66Y 0:80df663dd15e 15 *
R66Y 0:80df663dd15e 16 * You can use as many seperate Ticker objects as you require.
R66Y 0:80df663dd15e 17 *
R66Y 0:80df663dd15e 18 * Example:
R66Y 0:80df663dd15e 19 * > // Toggle the blinking led after 5 seconds
R66Y 0:80df663dd15e 20 * >
R66Y 0:80df663dd15e 21 * > #include "mbed.h"
R66Y 0:80df663dd15e 22 * >
R66Y 0:80df663dd15e 23 * > Ticker timer;
R66Y 0:80df663dd15e 24 * > DigitalOut led1(LED1);
R66Y 0:80df663dd15e 25 * > DigitalOut led2(LED2);
R66Y 0:80df663dd15e 26 * >
R66Y 0:80df663dd15e 27 * > int flip = 0;
R66Y 0:80df663dd15e 28 * >
R66Y 0:80df663dd15e 29 * > void attime() {
R66Y 0:80df663dd15e 30 * > flip = !flip;
R66Y 0:80df663dd15e 31 * > }
R66Y 0:80df663dd15e 32 * >
R66Y 0:80df663dd15e 33 * > int main() {
R66Y 0:80df663dd15e 34 * > timer.attach(&attime, 5);
R66Y 0:80df663dd15e 35 * > while(1) {
R66Y 0:80df663dd15e 36 * > if(flip == 0) {
R66Y 0:80df663dd15e 37 * > led1 = !led1;
R66Y 0:80df663dd15e 38 * > } else {
R66Y 0:80df663dd15e 39 * > led2 = !led2;
R66Y 0:80df663dd15e 40 * > }
R66Y 0:80df663dd15e 41 * > wait(0.2);
R66Y 0:80df663dd15e 42 * > }
R66Y 0:80df663dd15e 43 * > }
R66Y 0:80df663dd15e 44 *
R66Y 0:80df663dd15e 45 */
R66Y 0:80df663dd15e 46 class Ticker : public TimerEvent {
R66Y 0:80df663dd15e 47
R66Y 0:80df663dd15e 48 public:
R66Y 0:80df663dd15e 49
R66Y 0:80df663dd15e 50 /* Function: attach
R66Y 0:80df663dd15e 51 * Attach a function to be called by the Ticker, specifiying the interval in seconds
R66Y 0:80df663dd15e 52 *
R66Y 0:80df663dd15e 53 * Variables:
R66Y 0:80df663dd15e 54 * fptr - pointer to the function to be called
R66Y 0:80df663dd15e 55 * t - the time between calls in seconds
R66Y 0:80df663dd15e 56 */
R66Y 0:80df663dd15e 57 void attach(void (*fptr)(void), float t) {
R66Y 0:80df663dd15e 58 attach_us(fptr, t * 1000000.0f);
R66Y 0:80df663dd15e 59 }
R66Y 0:80df663dd15e 60
R66Y 0:80df663dd15e 61 /* Function: attach
R66Y 0:80df663dd15e 62 * Attach a member function to be called by the Ticker, specifiying the interval in seconds
R66Y 0:80df663dd15e 63 *
R66Y 0:80df663dd15e 64 * Variables:
R66Y 0:80df663dd15e 65 * tptr - pointer to the object to call the member function on
R66Y 0:80df663dd15e 66 * mptr - pointer to the member function to be called
R66Y 0:80df663dd15e 67 * t - the time between calls in seconds
R66Y 0:80df663dd15e 68 */
R66Y 0:80df663dd15e 69 template<typename T>
R66Y 0:80df663dd15e 70 void attach(T* tptr, void (T::*mptr)(void), float t) {
R66Y 0:80df663dd15e 71 attach_us(tptr, mptr, t * 1000000.0f);
R66Y 0:80df663dd15e 72 }
R66Y 0:80df663dd15e 73
R66Y 0:80df663dd15e 74 /* Function: attach_us
R66Y 0:80df663dd15e 75 * Attach a function to be called by the Ticker, specifiying the interval in micro-seconds
R66Y 0:80df663dd15e 76 *
R66Y 0:80df663dd15e 77 * Variables:
R66Y 0:80df663dd15e 78 * fptr - pointer to the function to be called
R66Y 0:80df663dd15e 79 * t - the time between calls in micro-seconds
R66Y 0:80df663dd15e 80 */
R66Y 0:80df663dd15e 81 void attach_us(void (*fptr)(void), unsigned int t) {
R66Y 0:80df663dd15e 82 _function.attach(fptr);
R66Y 0:80df663dd15e 83 setup(t);
R66Y 0:80df663dd15e 84 }
R66Y 0:80df663dd15e 85
R66Y 0:80df663dd15e 86 /* Function: attach_us
R66Y 0:80df663dd15e 87 * Attach a member function to be called by the Ticker, specifiying the interval in micro-seconds
R66Y 0:80df663dd15e 88 *
R66Y 0:80df663dd15e 89 * Variables:
R66Y 0:80df663dd15e 90 * tptr - pointer to the object to call the member function on
R66Y 0:80df663dd15e 91 * mptr - pointer to the member function to be called
R66Y 0:80df663dd15e 92 * t - the time between calls in micro-seconds
R66Y 0:80df663dd15e 93 */
R66Y 0:80df663dd15e 94 template<typename T>
R66Y 0:80df663dd15e 95 void attach_us(T* tptr, void (T::*mptr)(void), unsigned int t) {
R66Y 0:80df663dd15e 96 _function.attach(tptr, mptr);
R66Y 0:80df663dd15e 97 setup(t);
R66Y 0:80df663dd15e 98 }
R66Y 0:80df663dd15e 99
R66Y 0:80df663dd15e 100 /* Function: detach
R66Y 0:80df663dd15e 101 * Detach the function
R66Y 0:80df663dd15e 102 */
R66Y 0:80df663dd15e 103 void detach();
R66Y 0:80df663dd15e 104
R66Y 0:80df663dd15e 105 protected:
R66Y 0:80df663dd15e 106
R66Y 0:80df663dd15e 107 void setup(unsigned int t);
R66Y 0:80df663dd15e 108 virtual void handler();
R66Y 0:80df663dd15e 109
R66Y 0:80df663dd15e 110 unsigned int _delay;
R66Y 0:80df663dd15e 111 FunctionPointer _function;
R66Y 0:80df663dd15e 112
R66Y 0:80df663dd15e 113 };
R66Y 0:80df663dd15e 114
R66Y 0:80df663dd15e 115 } // namespace mbed
R66Y 0:80df663dd15e 116
R66Y 0:80df663dd15e 117 #endif