Oscar Alejandro Martinez Mancilla
/
Parte_2_Practica_2_Actuadores
Parte_2_Practica_2_Actuadores
main.cpp@1:f7bc881a64ca, 2015-03-22 (annotated)
- Committer:
- oscarmtzman
- Date:
- Sun Mar 22 16:38:42 2015 +0000
- Revision:
- 1:f7bc881a64ca
- Parent:
- 0:41ffebb20939
Parte_2_Pr?ctica_2_Actuadores
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
oscarmtzman | 0:41ffebb20939 | 1 | #include "mbed.h" //Se declara la librería de mbed |
oscarmtzman | 0:41ffebb20939 | 2 | |
oscarmtzman | 0:41ffebb20939 | 3 | //--- O/I Pines ------------------------------------------------ |
oscarmtzman | 0:41ffebb20939 | 4 | AnalogIn pot(A0); //Se declara el puerto de entrada analócia para el potenciometro |
oscarmtzman | 0:41ffebb20939 | 5 | InterruptIn botonGiro(D2); //Se declara el puerto de entrada para el boton controlador de giro |
oscarmtzman | 0:41ffebb20939 | 6 | InterruptIn botonSecuencia(D3); //Se declara el puerto de entrada para el boton controlador de secuencia |
oscarmtzman | 0:41ffebb20939 | 7 | DigitalOut salidaReloj(PTC4); //Se declara el puerto de salida para la señal de reloj |
oscarmtzman | 0:41ffebb20939 | 8 | DigitalOut salidaSecuencia(PTC3); //Se declara el puerto de salida para el tipo de secuencia |
oscarmtzman | 0:41ffebb20939 | 9 | DigitalOut salidaGiro(PTC0); //Se declara el puerto de salida para el sentido de giro |
oscarmtzman | 0:41ffebb20939 | 10 | DigitalOut led(LED1); //Se declara el puerto de salida para el led que indica que el programa está corriendo |
oscarmtzman | 0:41ffebb20939 | 11 | Timer timer; //Se declara el timer |
oscarmtzman | 0:41ffebb20939 | 12 | |
oscarmtzman | 0:41ffebb20939 | 13 | |
oscarmtzman | 0:41ffebb20939 | 14 | //--- Constantes --------------------------------------------- |
oscarmtzman | 1:f7bc881a64ca | 15 | #define MAX_FREQ 1000 //Se define el valor de la frecuencia máxima de la señal de reloj |
oscarmtzman | 0:41ffebb20939 | 16 | #define MIN_FREQ 4 //Se define el valor de la frecuencia minima de la señal de reloj |
oscarmtzman | 0:41ffebb20939 | 17 | |
oscarmtzman | 0:41ffebb20939 | 18 | |
oscarmtzman | 0:41ffebb20939 | 19 | //--- Variables ----------------------------------------------- |
oscarmtzman | 1:f7bc881a64ca | 20 | int freq=0; //Se declaran la variable para guardar la frecuencia de la señal de reloj |
oscarmtzman | 0:41ffebb20939 | 21 | int t=0; //Se declaran la variable para guardar la lectura del timer |
oscarmtzman | 0:41ffebb20939 | 22 | |
oscarmtzman | 0:41ffebb20939 | 23 | |
oscarmtzman | 0:41ffebb20939 | 24 | //--- Declaración de Funciones -------------------------------- |
oscarmtzman | 0:41ffebb20939 | 25 | void cambio_secuencia(); //Se declara la función para la interrupción del boton controlador de secuencia |
oscarmtzman | 0:41ffebb20939 | 26 | void cambio_giro(); //Se declara la función para la interrupción del boton controlador de sentido de giro |
oscarmtzman | 0:41ffebb20939 | 27 | |
oscarmtzman | 0:41ffebb20939 | 28 | |
oscarmtzman | 0:41ffebb20939 | 29 | //--- Programa Principal -------------------------------- |
oscarmtzman | 0:41ffebb20939 | 30 | int main(){ |
oscarmtzman | 1:f7bc881a64ca | 31 | timer.start(); //Se inicializa el timer |
oscarmtzman | 1:f7bc881a64ca | 32 | botonGiro.rise(&cambio_giro); //Se direcciona la funcion cambio_giro al flanco positivo del boton controlador de sentido de giro |
oscarmtzman | 1:f7bc881a64ca | 33 | botonSecuencia.rise(&cambio_secuencia); //Se direcciona la funcion cambio_giro al flanco positivo del boton controlador de secuencia |
oscarmtzman | 0:41ffebb20939 | 34 | |
oscarmtzman | 0:41ffebb20939 | 35 | while(1){ //Ciclo del programa principal |
oscarmtzman | 0:41ffebb20939 | 36 | freq=MIN_FREQ+(MAX_FREQ-MIN_FREQ)*pot; //Se lee el potenciometro y se mapea la lectura al rango de frecuencias máxima y mínima |
oscarmtzman | 0:41ffebb20939 | 37 | if (t>(500/freq)){ //Condición que se cumplirá cada medio periodo, con ella se crea la señal de reloj |
oscarmtzman | 0:41ffebb20939 | 38 | salidaReloj=!salidaReloj; //Se cambia el estado de la salida de reloj |
oscarmtzman | 0:41ffebb20939 | 39 | timer.reset(); //Se resetea la cuenta del timer |
oscarmtzman | 0:41ffebb20939 | 40 | } |
oscarmtzman | 0:41ffebb20939 | 41 | t=timer.read_ms(); //Se lee el timer en milisegundos |
oscarmtzman | 0:41ffebb20939 | 42 | } |
oscarmtzman | 0:41ffebb20939 | 43 | |
oscarmtzman | 0:41ffebb20939 | 44 | } |
oscarmtzman | 0:41ffebb20939 | 45 | |
oscarmtzman | 0:41ffebb20939 | 46 | //--- Funciones -------------------------------- |
oscarmtzman | 0:41ffebb20939 | 47 | void cambio_secuencia(){ //Función para la interrupción del boton controlador de secuencia |
oscarmtzman | 0:41ffebb20939 | 48 | salidaSecuencia=!salidaSecuencia; //Se cambia el tipo de secuencia |
oscarmtzman | 0:41ffebb20939 | 49 | } |
oscarmtzman | 0:41ffebb20939 | 50 | |
oscarmtzman | 0:41ffebb20939 | 51 | void cambio_giro(){ //Función para la interrupción del boton controlador de sentido de giro |
oscarmtzman | 0:41ffebb20939 | 52 | salidaGiro=!salidaGiro; //Se cambia el sentido de giro |
oscarmtzman | 0:41ffebb20939 | 53 | } |