Parte_2_Practica_2_Actuadores

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }