Controla un motor DC vidireccional y lee los pulsos del encoder. Gira el motor al derecho hasta llegar a un recorrido especifico y luego lo gira al reves hasta llegar al punto inicial.
Revision 4:33df694ea769, committed 2017-05-14
- Comitter:
- javierjsp
- Date:
- Sun May 14 12:34:49 2017 +0000
- Parent:
- 3:129c10cc04e2
- Commit message:
- a?adido un ticker para enviar el valor de pulsos por bluetooth
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 129c10cc04e2 -r 33df694ea769 main.cpp --- a/main.cpp Thu Apr 27 17:02:35 2017 +0000 +++ b/main.cpp Sun May 14 12:34:49 2017 +0000 @@ -2,18 +2,21 @@ #include "Motor.h" #include "QEI.h" -QEI encoder1(PE_11, PE_9, NC, 6, QEI::X4_ENCODING); // (A, B, indice, PulsosPorRev, TipoDeEncoder) +QEI encoder1(PE_11, PE_9, NC, 6, QEI::X4_ENCODING); // (P0, P1, indice, PulsosPorRev, TipoDeEncoder) Motor motor1(PE_13, PF_15, PG_14); // (pwm, derecho, inverso) -Serial bt(PE_8, PE_7); // tx, rx (serial 5) +Serial bt(PE_8, PE_7); // RX, TX (serial 5) +Ticker ticker1; // iniciamos un ticker DigitalOut led1(LED1); // definimos la salida del LED +int pulsos = 0; // numero de pulsos recorridos + +void enviar_bt(); // declaramos el prototipo de la funcion que ejecutara el ticker int main() { - motor1.period(0.00005); // establece el periodo del PWM, equivalente a una frecuencia de 20KHz. + motor1.period(0.001); // establece el periodo del PWM, equivalente a una frecuencia de 20KHz. bt.baud(9600); // velocidad de transmision del bluetooth a 9600 baudios - int pulsos = 0; // numero de pulsos recorridos int recorrido = 240; // pulsos que queremos que recorra (modificaremos este valor hasta saber cuantos pulsos corresponden a una vuelta) - bt.printf("%d", pulsos); // envia el valor de "pulsos" por bluetooth + ticker1.attach(&enviar_bt, 0.1); // asignamos la funcion "enviar_bt" a la interrupcion del "ticker1" y le damos un intervalo de 0.1s led1 = 1; // encendemos un led de la placa durante 1s para asegurarnos de que el programa se esta ejecutando correctamente wait(1); @@ -21,9 +24,8 @@ while(pulsos<recorrido) // gira el motor al derecho hasta que los pulsos sean los del recorrido asignado { - motor1.speed(0.4); - pulsos= encoder1.getPulses(); - bt.printf("%d", pulsos); // envia el valor de "pulsos" por bluetooth + motor1.speed(0.4); + pulsos= encoder1.getPulses(); } motor1.brake(); // frena el motor y enciende un led 1s para saber que hemos llegado al punto deseado @@ -40,5 +42,9 @@ motor1.brake(); // frena el motor y deja encendido un led para saber que hemos llegado al punto deseado led1 = 1; - } + +void enviar_bt() // definimos la funcion que ejecutara el ticker +{ + bt.printf("%d", pulsos); // envia el valor de "pulsos" por bluetooth +}