Libreria para manejo de shield controlador de motores AdafuitMotorShield para Arduino

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ArduMotor.h Source File

ArduMotor.h

00001 #ifndef ARDU_MOTOR_H
00002 #define ARDU_MOTOR_H
00003 
00004 #include "mbed.h"
00005 
00006 #define MOTOR_1 1
00007 #define MOTOR_2 2
00008 #define MOTOR_3 3
00009 #define MOTOR_4 4
00010 
00011 #define PAR_12 12
00012 #define PAR_43 43
00013 #define PAR_21 21
00014 #define PAR_34 34
00015 #define PAR_23 23
00016 #define PAR_14 14
00017 #define PAR_41 41
00018 #define PAR_32 32
00019 
00020 /** Clase ArduMotor.
00021  *  Usada para controlar 2 motores de continua con ArduMotorShield de Arduino. 
00022  *  
00023  *  Ejemplo:
00024  *  @code
00025  *  #include "mbed.h"
00026  *  #include "ArduMotor.h"
00027  * 
00028  *  ArduMotor Carro(MOTOR_1,MOTOR_2);
00029  *   
00030  *  int main(){
00031  *      Carro.Avanzar(1,80); 
00032  *      Carro.Girar_der(90);
00033  *      Carro.Girar_izq(45);
00034  *      Carro.Retroceder(2,50);
00035  *      Carro.Detener(0);
00036  *  }
00037  *  @endcode
00038  */
00039 class ArduMotor {
00040 public:
00041     /** Crear una instancia ArduMotor.
00042     *
00043     *   @param Motor_A número de motor que será el motor izquierdo del carro. Opciones: MOTOR_1, MOTOR_2, MOTOR_3 o MOTOR_4.
00044     *   @param Motor_B número de motor que será el motor derecho del carro. Opciones: MOTOR_1, MOTOR_2, MOTOR_3 o MOTOR_4.
00045     */
00046     ArduMotor(int Motor_A, int Motor_B);
00047     
00048     /** Hacer avanzar el carro.
00049     *   Ambos motores se accionan para avanzar a la potencia indicada.
00050     *   
00051     *   @param Distancia distancia en metros que debe avanzar el carro.
00052     *   @param Potencia parámetro que corresponde al porcentaje de potencia de los motores, donde 0 es motor detenido y 100 es motor a máxima potencia.
00053     */
00054     void Avanzar(float Distancia, int Potencia);
00055     
00056     /** Hacer retroceder el carro.
00057     *   Ambos motores se accionan para retroceder a la potencia indicada.
00058     *   
00059     *   @param Distancia distancia en metros que debe retroceder el carro.
00060     *   @param Potencia parámetro que corresponde al porcentaje de potencia de los motores, donde 0 es motor detenido y 100 es motor a máxima potencia.
00061     */
00062     void Retroceder(float Distancia, int Potencia);
00063     
00064     /** Hacer girar el carro a la derecha.
00065     *   La función acciona únicamente el motor A hacia adelante a un 50% de la potencia.
00066     *   El motor B queda inmovilizado.
00067     *   
00068     *   @param Grados parámetro que corresponde a los grados que el carro debe girar hacia su derecha. El rango disponible es de 0 a 360 grados.
00069     */
00070     void Girar_der(int Grados);
00071     
00072     /** Hacer girar el carro a la izquierda.
00073     *   La función acciona únicamente el motor B hacia adelante a un 50% de la potencia.
00074     *   El motor A queda inmovilizado.   
00075     *
00076     *   @param Grados parámetro que corresponde a los grados que el carro debe girar hacia su izquierda. El rango disponible es de 0 a 360 grados.
00077     */
00078     void Girar_izq(int Grados);
00079     
00080     /** Detener el carro.
00081     *   La función detiene ambos motores por un tiempo determinado.
00082     *   
00083     *   @param Tiempo parámetro que corresponde al tiempo en segundos que se desea que los motores estén detenidos.
00084     */
00085     void Detener(float Tiempo);
00086     
00087 private:
00088     void grabar_shield();
00089 };
00090 
00091 /** Clase ArduMotor_4.
00092  *  Usada para controlar 4 motores de continua con ArduMotorShield de Arduino. 
00093  *  
00094  *  Ejemplo:
00095  *  @code
00096  *  #include "mbed.h"
00097  *  #include "ArduMotor.h"
00098  * 
00099  *  ArduMotor_4 Carro(Par_12,Par_43);
00100  *   
00101  *  int main(){
00102  *      Carro.Avanzar(1,80); 
00103  *      Carro.Girar_der(90);
00104  *      Carro.Girar_izq(45);
00105  *      Carro.Retroceder(2,50);
00106  *      Carro.Detener(0);
00107  *  }
00108  *  @endcode
00109  */
00110 class ArduMotor_4 {
00111 public:
00112     /** Crear una instancia ArduMotor_4.
00113     *
00114     *   @param Par_A par de motores correspondientes al lado izquierdo del carro.
00115     *   @param Par_B par de motores correspondientes al lado derecho del carro.
00116     *
00117     *   @note  
00118     *   En el código se considera que cada par de conectores del shield se usa para conectar los motores de un lado del carro (derecho o izquierdo) o para conectar los motores de un extremo del carro (delantero o traseso).
00119     *   La combinación de los pares se lee, mirando el shield desde arriba, de arriba hacia abajo.
00120     *
00121     *   Ejemplo: para usar el par de motores 3-4 en el lado izquierdo y el par 2-1 en el derecho, la linea de código para crear la instancia será
00122     *
00123     *   @code
00124     *   #include "mbed.h"
00125     *   #include "ArduMotor.h"
00126     *
00127     *   ArduMotor_4 Carro(PAR_34,PAR_21);
00128     *   @endcode
00129     *
00130     *   Una forma incorrecta de querer implementar esta misma configuración de motores sería pasar el parámentro "PAR_12" en vez de "PAR_21". Ya que esto implicaría que en la conexión de los motores 1 y 2 a la placa se debería cruzar los cables.
00131     */
00132     ArduMotor_4(int Par_A, int Par_B);
00133     
00134     /** Hacer avanzar el carro.
00135     *   Acciona los 4 motores para avanzar a la potencia indicada.
00136     *   
00137     *   @param Distancia distancia en metros que debe avanzar el carro.
00138     *   @param Potencia parámetro que corresponde al porcentaje de potencia de los motores, donde 0 es motor detenido y 100 es motor a máxima potencia.
00139     */
00140     void Avanzar(float Distancia, int Potencia);
00141     
00142     /** Hacer retroceder el carro.
00143     *   Acciona los 4 motores para retroceder a la potencia indicada.
00144     *   
00145     *   @param Distancia distancia en metros que debe retroceder el carro.
00146     *   @param Potencia parámetro que corresponde al porcentaje de potencia de los motores, donde 0 es motor detenido y 100 es motor a máxima potencia.
00147     */
00148     void Retroceder(float Distancia, int Potencia);
00149     
00150     /** Hacer girar el carro a la derecha.
00151     *   La función acciona los motores del par A hacia adelante a un 50% de la potencia.
00152     *   Los motores par B quedan inmovilizados.
00153     *   
00154     *   @param Grados parámetro que corresponde a los grados que el carro debe girar hacia su derecha. El rango disponible es de 0 a 360 grados.
00155     */
00156     void Girar_der(int Grados);
00157     
00158     /** Hacer girar el carro a la izquierda.
00159     *   La función acciona los motores del par B hacia adelante a un 50% de la potencia.
00160     *   Los motores del par A quedan inmovilizados.
00161     *   
00162     *   @param Grados parámetro que corresponde a los grados que el carro debe girar hacia su derecha. El rango disponible es de 0 a 360 grados.
00163     */
00164     void Girar_izq(int Grados);
00165     
00166     /** Detener el carro.
00167     *   La función detiene los 4 motores por un tiempo determinado.
00168     *   
00169     *   @param Tiempo parámetro que corresponde al tiempo en segundos que se desea que los motores estén detenidos.
00170     */
00171     void Detener(float Tiempo);
00172     
00173 private:
00174     void grabar_shield();
00175 };
00176 
00177 #endif