Libreria para manejo de shield controlador de motores AdafuitMotorShield para Arduino
Embed:
(wiki syntax)
Show/hide line numbers
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
Generated on Sun Aug 14 2022 19:41:43 by
1.7.2