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 - I2CSlave
R66Y 0:80df663dd15e 2 * Copyright (c) 2007-2011 ARM Limited. All rights reserved.
R66Y 0:80df663dd15e 3 */
R66Y 0:80df663dd15e 4
R66Y 0:80df663dd15e 5 #ifndef MBED_I2C_SLAVE_H
R66Y 0:80df663dd15e 6 #define MBED_I2C_SLAVE_H
R66Y 0:80df663dd15e 7
R66Y 0:80df663dd15e 8 #include "device.h"
R66Y 0:80df663dd15e 9
R66Y 0:80df663dd15e 10 #if DEVICE_I2CSLAVE
R66Y 0:80df663dd15e 11
R66Y 0:80df663dd15e 12 #include "platform.h"
R66Y 0:80df663dd15e 13 #include "PinNames.h"
R66Y 0:80df663dd15e 14 #include "PeripheralNames.h"
R66Y 0:80df663dd15e 15 #include "Base.h"
R66Y 0:80df663dd15e 16
R66Y 0:80df663dd15e 17 namespace mbed {
R66Y 0:80df663dd15e 18
R66Y 0:80df663dd15e 19 /* Class: I2CSlave
R66Y 0:80df663dd15e 20 * An I2C Slave, used for communicating with an I2C Master device
R66Y 0:80df663dd15e 21 *
R66Y 0:80df663dd15e 22 * Example:
R66Y 0:80df663dd15e 23 * > // Simple I2C responder
R66Y 0:80df663dd15e 24 * > #include <mbed.h>
R66Y 0:80df663dd15e 25 * >
R66Y 0:80df663dd15e 26 * > I2CSlave slave(p9, p10);
R66Y 0:80df663dd15e 27 * >
R66Y 0:80df663dd15e 28 * > int main() {
R66Y 0:80df663dd15e 29 * > char buf[10];
R66Y 0:80df663dd15e 30 * > char msg[] = "Slave!";
R66Y 0:80df663dd15e 31 * >
R66Y 0:80df663dd15e 32 * > slave.address(0xA0);
R66Y 0:80df663dd15e 33 * > while (1) {
R66Y 0:80df663dd15e 34 * > int i = slave.receive();
R66Y 0:80df663dd15e 35 * > switch (i) {
R66Y 0:80df663dd15e 36 * > case I2CSlave::ReadAddressed:
R66Y 0:80df663dd15e 37 * > slave.write(msg, strlen(msg) + 1); // Includes null char
R66Y 0:80df663dd15e 38 * > break;
R66Y 0:80df663dd15e 39 * > case I2CSlave::WriteGeneral:
R66Y 0:80df663dd15e 40 * > slave.read(buf, 10);
R66Y 0:80df663dd15e 41 * > printf("Read G: %s\n", buf);
R66Y 0:80df663dd15e 42 * > break;
R66Y 0:80df663dd15e 43 * > case I2CSlave::WriteAddressed:
R66Y 0:80df663dd15e 44 * > slave.read(buf, 10);
R66Y 0:80df663dd15e 45 * > printf("Read A: %s\n", buf);
R66Y 0:80df663dd15e 46 * > break;
R66Y 0:80df663dd15e 47 * > }
R66Y 0:80df663dd15e 48 * > for(int i = 0; i < 10; i++) buf[i] = 0; // Clear buffer
R66Y 0:80df663dd15e 49 * > }
R66Y 0:80df663dd15e 50 * > }
R66Y 0:80df663dd15e 51 * >
R66Y 0:80df663dd15e 52 */
R66Y 0:80df663dd15e 53 class I2CSlave : public Base {
R66Y 0:80df663dd15e 54
R66Y 0:80df663dd15e 55 public:
R66Y 0:80df663dd15e 56
R66Y 0:80df663dd15e 57 enum RxStatus {
R66Y 0:80df663dd15e 58 NoData = 0
R66Y 0:80df663dd15e 59 , ReadAddressed = 1
R66Y 0:80df663dd15e 60 , WriteGeneral = 2
R66Y 0:80df663dd15e 61 , WriteAddressed = 3
R66Y 0:80df663dd15e 62 };
R66Y 0:80df663dd15e 63
R66Y 0:80df663dd15e 64 /* Constructor: I2CSlave
R66Y 0:80df663dd15e 65 * Create an I2C Slave interface, connected to the specified pins.
R66Y 0:80df663dd15e 66 *
R66Y 0:80df663dd15e 67 * Variables:
R66Y 0:80df663dd15e 68 * sda - I2C data line pin
R66Y 0:80df663dd15e 69 * scl - I2C clock line pin
R66Y 0:80df663dd15e 70 */
R66Y 0:80df663dd15e 71 I2CSlave(PinName sda, PinName scl, const char *name = NULL);
R66Y 0:80df663dd15e 72
R66Y 0:80df663dd15e 73 /* Function: frequency
R66Y 0:80df663dd15e 74 * Set the frequency of the I2C interface
R66Y 0:80df663dd15e 75 *
R66Y 0:80df663dd15e 76 * Variables:
R66Y 0:80df663dd15e 77 * hz - The bus frequency in hertz
R66Y 0:80df663dd15e 78 */
R66Y 0:80df663dd15e 79 void frequency(int hz);
R66Y 0:80df663dd15e 80
R66Y 0:80df663dd15e 81 /* Function: receive
R66Y 0:80df663dd15e 82 * Checks to see if this I2C Slave has been addressed.
R66Y 0:80df663dd15e 83 *
R66Y 0:80df663dd15e 84 * Variables:
R66Y 0:80df663dd15e 85 * returns - a status indicating if the device has been addressed, and how
R66Y 0:80df663dd15e 86 * > NoData - the slave has not been addressed
R66Y 0:80df663dd15e 87 * > ReadAddressed - the master has requested a read from this slave
R66Y 0:80df663dd15e 88 * > WriteAddressed - the master is writing to this slave
R66Y 0:80df663dd15e 89 * > WriteGeneral - the master is writing to all slave
R66Y 0:80df663dd15e 90 */
R66Y 0:80df663dd15e 91 int receive(void);
R66Y 0:80df663dd15e 92
R66Y 0:80df663dd15e 93 /* Function: read
R66Y 0:80df663dd15e 94 * Read from an I2C master.
R66Y 0:80df663dd15e 95 *
R66Y 0:80df663dd15e 96 * Variables:
R66Y 0:80df663dd15e 97 * data - pointer to the byte array to read data in to
R66Y 0:80df663dd15e 98 * length - maximum number of bytes to read
R66Y 0:80df663dd15e 99 * returns - 0 on success, non-0 otherwise
R66Y 0:80df663dd15e 100 */
R66Y 0:80df663dd15e 101 int read(char *data, int length);
R66Y 0:80df663dd15e 102
R66Y 0:80df663dd15e 103 /* Function: read
R66Y 0:80df663dd15e 104 * Read a single byte from an I2C master.
R66Y 0:80df663dd15e 105 *
R66Y 0:80df663dd15e 106 * Variables:
R66Y 0:80df663dd15e 107 * returns - the byte read
R66Y 0:80df663dd15e 108 */
R66Y 0:80df663dd15e 109 int read(void);
R66Y 0:80df663dd15e 110
R66Y 0:80df663dd15e 111 /* Function: write
R66Y 0:80df663dd15e 112 * Write to an I2C master.
R66Y 0:80df663dd15e 113 *
R66Y 0:80df663dd15e 114 * Variables:
R66Y 0:80df663dd15e 115 * data - pointer to the byte array to be transmitted
R66Y 0:80df663dd15e 116 * length - the number of bytes to transmite
R66Y 0:80df663dd15e 117 * returns - a 0 on success, non-0 otherwise
R66Y 0:80df663dd15e 118 */
R66Y 0:80df663dd15e 119 int write(const char *data, int length);
R66Y 0:80df663dd15e 120
R66Y 0:80df663dd15e 121 /* Function: write
R66Y 0:80df663dd15e 122 * Write a single byte to an I2C master.
R66Y 0:80df663dd15e 123 *
R66Y 0:80df663dd15e 124 * Variables
R66Y 0:80df663dd15e 125 * data - the byte to write
R66Y 0:80df663dd15e 126 * returns - a '1' if an ACK was received, a '0' otherwise
R66Y 0:80df663dd15e 127 */
R66Y 0:80df663dd15e 128 int write(int data);
R66Y 0:80df663dd15e 129
R66Y 0:80df663dd15e 130 /* Function: address
R66Y 0:80df663dd15e 131 * Sets the I2C slave address.
R66Y 0:80df663dd15e 132 *
R66Y 0:80df663dd15e 133 * Variables
R66Y 0:80df663dd15e 134 * address - the address to set for the slave (ignoring the least
R66Y 0:80df663dd15e 135 * signifcant bit). If set to 0, the slave will only respond to the
R66Y 0:80df663dd15e 136 * general call address.
R66Y 0:80df663dd15e 137 */
R66Y 0:80df663dd15e 138 void address(int address);
R66Y 0:80df663dd15e 139
R66Y 0:80df663dd15e 140 /* Function: stop
R66Y 0:80df663dd15e 141 * Reset the I2C slave back into the known ready receiving state.
R66Y 0:80df663dd15e 142 */
R66Y 0:80df663dd15e 143 void stop(void);
R66Y 0:80df663dd15e 144
R66Y 0:80df663dd15e 145 protected:
R66Y 0:80df663dd15e 146
R66Y 0:80df663dd15e 147 I2CName _i2c;
R66Y 0:80df663dd15e 148 };
R66Y 0:80df663dd15e 149
R66Y 0:80df663dd15e 150 } // namespace mbed
R66Y 0:80df663dd15e 151
R66Y 0:80df663dd15e 152 #endif
R66Y 0:80df663dd15e 153
R66Y 0:80df663dd15e 154 #endif
R66Y 0:80df663dd15e 155