Se leen comando por el puerto serial realiza las siguientes funciones según el comando: - Genera distintos tonos por un buzzer. - Controla el movimiento de un carro (con 2 motores) con comandos - Controla el movimiento de un carro (con 2 motores) con Joystick. - Lee y envía el color leido por el puerto serial al PC

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Motor.h Source File

Motor.h

00001 #ifndef Motor_H
00002 #define Motor_H
00003 #include "mbed.h"
00004  /* **************************************************************************
00005  
00006 @CCastrop
00007 cristiank.castrop@ecci.edu.co
00008 
00009     L1      Terminal A del motor
00010     L2      Terminal B del motor
00011     SpeedPin Pin de salida PWM
00012     
00013  LastVersion: 21 - Abril - 2019  7:45pm
00014 ******************************************************************************/
00015 
00016 
00017 class MotorContinuo {
00018   public:
00019     /// Constructores para Motores Continuos
00020     MotorContinuo(PinName _L1, PinName _L2, PinName _speedPin, PinName _encodin, PinName _PosInicial, int _EncodPulses);
00021     
00022     void Forward();     // Da un sentido de giro al motor
00023     void Back();        // Genera un sentido de giro contrario al de Forward
00024     void Stop();        // Detiene el motor dejando el movimiento libre
00025     void StopT();       // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto).
00026     void SpeedDuty(int v);   // Varia la velocidad de giro del motor de 0 a 100%
00027     void SpinLength_ms(float t);  // Duración del giro en ms
00028     void SpinLength(float t);  // Duración del giro
00029     
00030   private:
00031 
00032     DigitalOut L1;
00033     DigitalOut L2;
00034     PwmOut     speedPin;
00035     DigitalIn  encodin;
00036     DigitalIn  PosInicial;
00037     int EncodPulses;
00038 
00039 
00040     
00041 
00042 };
00043 
00044 
00045 class MotorDiscreto {
00046   public:
00047     /// Constructores para Motores Continuos
00048     MotorDiscreto(PinName _Dir, PinName _Step, int _NPasos, PinName _encodin, PinName _PosInicial, int _EncodPulses);
00049       
00050     MotorDiscreto(void);    
00051     
00052     void Forward();                 // Da un sentido de giro al motor
00053     void Back();                    // Genera un sentido de giro contrario al de Forward
00054     void Stop();                    // Detiene el motor dejando el movimiento libre. Pin Enable = 0
00055     void StopT();                   // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto).
00056     void StepFreq(long n);           // Configura la Velocidad en Número(n) de pasos por segundos. Es decir la Frecuencia de paso.
00057     void RunStep(long n);           // Se mueve el motor la cantidad de pasos ingresada
00058     void Run(float t);              // Gira el motor durante el tiempo ingresado, si es 0 indefinidamente hasta llamada a Stop().
00059     void RunRound(int n);           // Girar n vueltas
00060     void Ustep(int resolucion, PinName M0, PinName M1, PinName M2);
00061                                     // Configura los pasos a 1/2, 1/4, 1/8, 1/16, 1/32
00062     long getStepOnHold(void);
00063                                     
00064     long StepOnHold;                // Pasos faltantes por ejecutar
00065     long StepsBySecond;             // Pasos por segundo
00066     
00067   private:
00068     
00069     void moveMotor(void);
00070     
00071     DigitalOut Dir;
00072     DigitalOut Step;
00073     int        NPasos;
00074     DigitalIn  encodin;
00075     DigitalIn  PosInicial;
00076     int        EncodPulses;
00077     
00078     DigitalOut* EnablePin;
00079     DigitalOut* M0;
00080     DigitalOut* M1;
00081     DigitalOut* M2;
00082     
00083     Ticker Move;                /// Timer de interrupcion
00084     float TStep;                /// periodo del paso TStep = 1/StepsBySecond;
00085     
00086     int entradas;               /// registra cada 2 ingresos a la interrupcion
00087     bool _moveMotorStopped;     // en 1 cuando se da la orden al motor de detenerse
00088 };
00089 
00090 
00091 
00092 
00093 class TraccionD
00094 {
00095     
00096     public:
00097     
00098     TraccionD(PinName _StepMI, PinName _DirMI, PinName _StepMD, PinName _DirMD, int _NPasos, float _r, float _L); // para giro declarar primero la frecuencia de paso
00099     
00100     void Forward();                 // Da un sentido de giro al motor
00101     void Back();                    // Genera un sentido de giro contrario al de Forward
00102     void Left();                    // Configura el sentido de giro de ambos motores de manera contraria para girar hacia la izquierda
00103     void Right();                   // Configura el sentido de giro de ambos motores de manera contraria e inverso al de Left() para girar hacia la derecha
00104     void Stop();                    // Detiene el motor dejando el movimiento libre. Pin Enable = 0
00105     void StopT();                   // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto).
00106     void StepFreq(long n);//maximo~350 // Configura la Velocidad en Número(n) de pasos por segundos. Es decir la Frecuencia de paso.
00107     void RunStep(long n);           // Se mueve el motor la cantidad de pasos ingresada
00108     void Run(float t);              // Gira el motor durante el tiempo ingresado, si es 0 indefinidamente hasta llamada a Stop().
00109     void RunRound(int n);           // Girar n vueltas
00110     void Giro(long grados, bool sentido);      // IMPORTANTE: Para llamar esta funcino PRIMERO se debe definir la frecuencia de paso
00111                                                // Gira el movil la cantidad de grados indicados en sentido indicado. 
00112                                                // en función del radio de las llantas y el radio del eje que une las llantas.
00113                                                // ejemplo: (90, Horario) o (120, AntiHorario)
00114 
00115     long getStepOnHold(void);
00116     
00117     
00118     private:
00119     
00120     void moveMotor(void);           // Funcion que es ejecutada cada interupcion del Ticker Move
00121     
00122                                     // Configuracion de los pines
00123     DigitalOut StepMI,DirMI;        
00124     DigitalOut StepMD, DirMD;
00125     int        NPasos;
00126     float r;                        // Radio de la llanta
00127     float L;                        // Longitud desde del eje medido entre las 2 llantas dividido en 2.
00128     float Rl;                       // Relacion(Rl) de distacia entre los dos Radios(r y L)
00129     long StepOnHold;                // Pasos faltantes por ejecutar
00130     long StepsBySecond;             // Pasos por segundo
00131     
00132     DigitalOut* EnablePinM1;
00133     DigitalOut* EnablePinM2;
00134     
00135     Ticker Move;                /// Timer de interrupcion
00136     float TStep;                /// periodo del paso TStep = 1/StepsBySecond;
00137     
00138     int entradas;               /// registra cada 2 ingresos a la interrupcion
00139                                     
00140     
00141 
00142 
00143 
00144 };
00145 #endif
00146 
00147 
00148 
00149 
00150 
00151 
00152 
00153 
00154 
00155 
00156 
00157 
00158 
00159 
00160