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

Committer:
CCastrop1012
Date:
Fri Sep 03 05:22:19 2021 +0000
Revision:
0:3a37f6734913
Programa finalizado y funcional.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CCastrop1012 0:3a37f6734913 1 #ifndef Motor_H
CCastrop1012 0:3a37f6734913 2 #define Motor_H
CCastrop1012 0:3a37f6734913 3 #include "mbed.h"
CCastrop1012 0:3a37f6734913 4 /* **************************************************************************
CCastrop1012 0:3a37f6734913 5
CCastrop1012 0:3a37f6734913 6 @CCastrop
CCastrop1012 0:3a37f6734913 7 cristiank.castrop@ecci.edu.co
CCastrop1012 0:3a37f6734913 8
CCastrop1012 0:3a37f6734913 9 L1 Terminal A del motor
CCastrop1012 0:3a37f6734913 10 L2 Terminal B del motor
CCastrop1012 0:3a37f6734913 11 SpeedPin Pin de salida PWM
CCastrop1012 0:3a37f6734913 12
CCastrop1012 0:3a37f6734913 13 LastVersion: 21 - Abril - 2019 7:45pm
CCastrop1012 0:3a37f6734913 14 ******************************************************************************/
CCastrop1012 0:3a37f6734913 15
CCastrop1012 0:3a37f6734913 16
CCastrop1012 0:3a37f6734913 17 class MotorContinuo {
CCastrop1012 0:3a37f6734913 18 public:
CCastrop1012 0:3a37f6734913 19 /// Constructores para Motores Continuos
CCastrop1012 0:3a37f6734913 20 MotorContinuo(PinName _L1, PinName _L2, PinName _speedPin, PinName _encodin, PinName _PosInicial, int _EncodPulses);
CCastrop1012 0:3a37f6734913 21
CCastrop1012 0:3a37f6734913 22 void Forward(); // Da un sentido de giro al motor
CCastrop1012 0:3a37f6734913 23 void Back(); // Genera un sentido de giro contrario al de Forward
CCastrop1012 0:3a37f6734913 24 void Stop(); // Detiene el motor dejando el movimiento libre
CCastrop1012 0:3a37f6734913 25 void StopT(); // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto).
CCastrop1012 0:3a37f6734913 26 void SpeedDuty(int v); // Varia la velocidad de giro del motor de 0 a 100%
CCastrop1012 0:3a37f6734913 27 void SpinLength_ms(float t); // Duración del giro en ms
CCastrop1012 0:3a37f6734913 28 void SpinLength(float t); // Duración del giro
CCastrop1012 0:3a37f6734913 29
CCastrop1012 0:3a37f6734913 30 private:
CCastrop1012 0:3a37f6734913 31
CCastrop1012 0:3a37f6734913 32 DigitalOut L1;
CCastrop1012 0:3a37f6734913 33 DigitalOut L2;
CCastrop1012 0:3a37f6734913 34 PwmOut speedPin;
CCastrop1012 0:3a37f6734913 35 DigitalIn encodin;
CCastrop1012 0:3a37f6734913 36 DigitalIn PosInicial;
CCastrop1012 0:3a37f6734913 37 int EncodPulses;
CCastrop1012 0:3a37f6734913 38
CCastrop1012 0:3a37f6734913 39
CCastrop1012 0:3a37f6734913 40
CCastrop1012 0:3a37f6734913 41
CCastrop1012 0:3a37f6734913 42 };
CCastrop1012 0:3a37f6734913 43
CCastrop1012 0:3a37f6734913 44
CCastrop1012 0:3a37f6734913 45 class MotorDiscreto {
CCastrop1012 0:3a37f6734913 46 public:
CCastrop1012 0:3a37f6734913 47 /// Constructores para Motores Continuos
CCastrop1012 0:3a37f6734913 48 MotorDiscreto(PinName _Dir, PinName _Step, int _NPasos, PinName _encodin, PinName _PosInicial, int _EncodPulses);
CCastrop1012 0:3a37f6734913 49
CCastrop1012 0:3a37f6734913 50 MotorDiscreto(void);
CCastrop1012 0:3a37f6734913 51
CCastrop1012 0:3a37f6734913 52 void Forward(); // Da un sentido de giro al motor
CCastrop1012 0:3a37f6734913 53 void Back(); // Genera un sentido de giro contrario al de Forward
CCastrop1012 0:3a37f6734913 54 void Stop(); // Detiene el motor dejando el movimiento libre. Pin Enable = 0
CCastrop1012 0:3a37f6734913 55 void StopT(); // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto).
CCastrop1012 0:3a37f6734913 56 void StepFreq(long n); // Configura la Velocidad en Número(n) de pasos por segundos. Es decir la Frecuencia de paso.
CCastrop1012 0:3a37f6734913 57 void RunStep(long n); // Se mueve el motor la cantidad de pasos ingresada
CCastrop1012 0:3a37f6734913 58 void Run(float t); // Gira el motor durante el tiempo ingresado, si es 0 indefinidamente hasta llamada a Stop().
CCastrop1012 0:3a37f6734913 59 void RunRound(int n); // Girar n vueltas
CCastrop1012 0:3a37f6734913 60 void Ustep(int resolucion, PinName M0, PinName M1, PinName M2);
CCastrop1012 0:3a37f6734913 61 // Configura los pasos a 1/2, 1/4, 1/8, 1/16, 1/32
CCastrop1012 0:3a37f6734913 62 long getStepOnHold(void);
CCastrop1012 0:3a37f6734913 63
CCastrop1012 0:3a37f6734913 64 long StepOnHold; // Pasos faltantes por ejecutar
CCastrop1012 0:3a37f6734913 65 long StepsBySecond; // Pasos por segundo
CCastrop1012 0:3a37f6734913 66
CCastrop1012 0:3a37f6734913 67 private:
CCastrop1012 0:3a37f6734913 68
CCastrop1012 0:3a37f6734913 69 void moveMotor(void);
CCastrop1012 0:3a37f6734913 70
CCastrop1012 0:3a37f6734913 71 DigitalOut Dir;
CCastrop1012 0:3a37f6734913 72 DigitalOut Step;
CCastrop1012 0:3a37f6734913 73 int NPasos;
CCastrop1012 0:3a37f6734913 74 DigitalIn encodin;
CCastrop1012 0:3a37f6734913 75 DigitalIn PosInicial;
CCastrop1012 0:3a37f6734913 76 int EncodPulses;
CCastrop1012 0:3a37f6734913 77
CCastrop1012 0:3a37f6734913 78 DigitalOut* EnablePin;
CCastrop1012 0:3a37f6734913 79 DigitalOut* M0;
CCastrop1012 0:3a37f6734913 80 DigitalOut* M1;
CCastrop1012 0:3a37f6734913 81 DigitalOut* M2;
CCastrop1012 0:3a37f6734913 82
CCastrop1012 0:3a37f6734913 83 Ticker Move; /// Timer de interrupcion
CCastrop1012 0:3a37f6734913 84 float TStep; /// periodo del paso TStep = 1/StepsBySecond;
CCastrop1012 0:3a37f6734913 85
CCastrop1012 0:3a37f6734913 86 int entradas; /// registra cada 2 ingresos a la interrupcion
CCastrop1012 0:3a37f6734913 87 bool _moveMotorStopped; // en 1 cuando se da la orden al motor de detenerse
CCastrop1012 0:3a37f6734913 88 };
CCastrop1012 0:3a37f6734913 89
CCastrop1012 0:3a37f6734913 90
CCastrop1012 0:3a37f6734913 91
CCastrop1012 0:3a37f6734913 92
CCastrop1012 0:3a37f6734913 93 class TraccionD
CCastrop1012 0:3a37f6734913 94 {
CCastrop1012 0:3a37f6734913 95
CCastrop1012 0:3a37f6734913 96 public:
CCastrop1012 0:3a37f6734913 97
CCastrop1012 0:3a37f6734913 98 TraccionD(PinName _StepMI, PinName _DirMI, PinName _StepMD, PinName _DirMD, int _NPasos, float _r, float _L); // para giro declarar primero la frecuencia de paso
CCastrop1012 0:3a37f6734913 99
CCastrop1012 0:3a37f6734913 100 void Forward(); // Da un sentido de giro al motor
CCastrop1012 0:3a37f6734913 101 void Back(); // Genera un sentido de giro contrario al de Forward
CCastrop1012 0:3a37f6734913 102 void Left(); // Configura el sentido de giro de ambos motores de manera contraria para girar hacia la izquierda
CCastrop1012 0:3a37f6734913 103 void Right(); // Configura el sentido de giro de ambos motores de manera contraria e inverso al de Left() para girar hacia la derecha
CCastrop1012 0:3a37f6734913 104 void Stop(); // Detiene el motor dejando el movimiento libre. Pin Enable = 0
CCastrop1012 0:3a37f6734913 105 void StopT(); // Detiene el motor truncando o enclavando el movimiento(Lo mantiene quieto).
CCastrop1012 0:3a37f6734913 106 void StepFreq(long n);//maximo~350 // Configura la Velocidad en Número(n) de pasos por segundos. Es decir la Frecuencia de paso.
CCastrop1012 0:3a37f6734913 107 void RunStep(long n); // Se mueve el motor la cantidad de pasos ingresada
CCastrop1012 0:3a37f6734913 108 void Run(float t); // Gira el motor durante el tiempo ingresado, si es 0 indefinidamente hasta llamada a Stop().
CCastrop1012 0:3a37f6734913 109 void RunRound(int n); // Girar n vueltas
CCastrop1012 0:3a37f6734913 110 void Giro(long grados, bool sentido); // IMPORTANTE: Para llamar esta funcino PRIMERO se debe definir la frecuencia de paso
CCastrop1012 0:3a37f6734913 111 // Gira el movil la cantidad de grados indicados en sentido indicado.
CCastrop1012 0:3a37f6734913 112 // en función del radio de las llantas y el radio del eje que une las llantas.
CCastrop1012 0:3a37f6734913 113 // ejemplo: (90, Horario) o (120, AntiHorario)
CCastrop1012 0:3a37f6734913 114
CCastrop1012 0:3a37f6734913 115 long getStepOnHold(void);
CCastrop1012 0:3a37f6734913 116
CCastrop1012 0:3a37f6734913 117
CCastrop1012 0:3a37f6734913 118 private:
CCastrop1012 0:3a37f6734913 119
CCastrop1012 0:3a37f6734913 120 void moveMotor(void); // Funcion que es ejecutada cada interupcion del Ticker Move
CCastrop1012 0:3a37f6734913 121
CCastrop1012 0:3a37f6734913 122 // Configuracion de los pines
CCastrop1012 0:3a37f6734913 123 DigitalOut StepMI,DirMI;
CCastrop1012 0:3a37f6734913 124 DigitalOut StepMD, DirMD;
CCastrop1012 0:3a37f6734913 125 int NPasos;
CCastrop1012 0:3a37f6734913 126 float r; // Radio de la llanta
CCastrop1012 0:3a37f6734913 127 float L; // Longitud desde del eje medido entre las 2 llantas dividido en 2.
CCastrop1012 0:3a37f6734913 128 float Rl; // Relacion(Rl) de distacia entre los dos Radios(r y L)
CCastrop1012 0:3a37f6734913 129 long StepOnHold; // Pasos faltantes por ejecutar
CCastrop1012 0:3a37f6734913 130 long StepsBySecond; // Pasos por segundo
CCastrop1012 0:3a37f6734913 131
CCastrop1012 0:3a37f6734913 132 DigitalOut* EnablePinM1;
CCastrop1012 0:3a37f6734913 133 DigitalOut* EnablePinM2;
CCastrop1012 0:3a37f6734913 134
CCastrop1012 0:3a37f6734913 135 Ticker Move; /// Timer de interrupcion
CCastrop1012 0:3a37f6734913 136 float TStep; /// periodo del paso TStep = 1/StepsBySecond;
CCastrop1012 0:3a37f6734913 137
CCastrop1012 0:3a37f6734913 138 int entradas; /// registra cada 2 ingresos a la interrupcion
CCastrop1012 0:3a37f6734913 139
CCastrop1012 0:3a37f6734913 140
CCastrop1012 0:3a37f6734913 141
CCastrop1012 0:3a37f6734913 142
CCastrop1012 0:3a37f6734913 143
CCastrop1012 0:3a37f6734913 144 };
CCastrop1012 0:3a37f6734913 145 #endif
CCastrop1012 0:3a37f6734913 146
CCastrop1012 0:3a37f6734913 147
CCastrop1012 0:3a37f6734913 148
CCastrop1012 0:3a37f6734913 149
CCastrop1012 0:3a37f6734913 150
CCastrop1012 0:3a37f6734913 151
CCastrop1012 0:3a37f6734913 152
CCastrop1012 0:3a37f6734913 153
CCastrop1012 0:3a37f6734913 154
CCastrop1012 0:3a37f6734913 155
CCastrop1012 0:3a37f6734913 156
CCastrop1012 0:3a37f6734913 157
CCastrop1012 0:3a37f6734913 158
CCastrop1012 0:3a37f6734913 159
CCastrop1012 0:3a37f6734913 160