![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
asdfhkjlk
Fork of Muestreo_Motor_CD_Tuzo_5 by
main.cpp
- Committer:
- Sumobot
- Date:
- 2017-11-10
- Revision:
- 1:f7fb4980557c
- Parent:
- 0:1c17e8f0fcc0
- Child:
- 2:6bf21247bab4
File content as of revision 1:f7fb4980557c:
#include "mbed.h" #include "rtos.h" DigitalOut led1(LED1); DigitalOut led2(LED2); InterruptIn inter(p5); //Se declara la variable de la interrupción DigitalOut senal(p7); //Se declara el pin el cual insertará la señal al pin de la interrupción DigitalIn pulsos(p6); //Pin en el cual se insertarán los pulsos del encoder. DigitalOut senal1(p21); DigitalIn opto(p23); AnalogIn pot(p19); DigitalOut prueba1(p10); InterruptIn prueba2(p9); Timer t; //Función que medirá el tiempo de operación //Thread thread; //Thread thread2; //Thread thread3; Thread thread4; //Función que se ejecutará en paralelo al programa principal Thread thread5; float velo=0, vRef=0, err=0, p=0, control=0, b, c, Control1=0; //Variable flotante en la cual se guardará la velocidad en rpm int iteraciones=0; //iteraciones=Variable que contará el número de pulsos /*void Prueba() { senal1=1; wait(.0003); senal1=0; led2=!led2; }*/ void controlador() { //Thread::wait(3000); while(1) { //prueba2.rise(&Prueba); } } void contador() { //Función ejecutada por la interrupción inter, la cual es un contador para la variable iteración iteraciones=iteraciones+1; } void pruebas() { while(1){ senal=pulsos.read(); //se filtra la señal del encoder, para limpar el ruido. } } void filtro() { while(1){ prueba1=opto.read(); //se filtra la señal del encoder, para limpar el ruido. } } void interr() { inter.rise(&contador); //Se declara la interrupción } /*void vel() { //Funcion Se convierte de iteraciones a rpmn vel, ejecutada por el hilo secundario while (1) { //Se ejecuta siempre t.reset(); //Se inicializa el timer Thread::wait(1000); //Se espera 1 segundo printf("n vale: %d\n\r", iteraciones); //Se imprime el número de iteraciones para monitorear velo= iteraciones*60*t.read(); //Se convierte de iteraciones a rpm printf("La velocidad en rpm es: %f\n\r", velo); //Se imprimen las rpm printf("El Pot es: %f\n\r", pot.read()); //printf("el tiempo es: %f\n\r", t.read()); //Se imprime el tiempo de ejecución para monitorear iteraciones=0; //Se comienza la cuenta de iteraciones de 0, para el siguiente ciclo } }*/ int main() { //vRef=600; //Hilo principal //t.start(); //Se inicializa el timer //thread.start(vel); //Se inicializa el hilo secundario //thread2.start(filtro); //thread3.start(interr); thread4.start(controlador); thread5.start(filtro); while(1){ led1=!led1; } } //p=0.4295; /*while(1) { err= vRef-velo; control= p*err; // Rango de error es de 0 a 1500; cuando el error es 1500 el angulo debe ser if(err<0){ led1=!led1; } if(err>1000){ led2=!led2; } if(err>=0 && err<600){ Control1=control/257.7; } if(err==600){ } if(err>600 && err<1000){ } */