controllo velocita motore con tasto user
Dependencies: ArduinoMotorShield mbed
Fork of motore2 by
Revision 1:b259a13421b6, committed 2016-10-22
- Comitter:
- mikteam10
- Date:
- Sat Oct 22 09:20:24 2016 +0000
- Parent:
- 0:a3a22a35e75c
- Commit message:
- motori A e B che girano a velocit? inversamente proporzionali
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r a3a22a35e75c -r b259a13421b6 main.cpp --- a/main.cpp Tue Oct 18 11:32:22 2016 +0000 +++ b/main.cpp Sat Oct 22 09:20:24 2016 +0000 @@ -1,39 +1,89 @@ #include "mbed.h" #include "ArduinoMotorShield.hpp" -Serial pc(SERIAL_TX, SERIAL_RX); +Ticker timer; ArduinoMotorShield motore; DigitalIn mybutton(USER_BUTTON); -DigitalOut myled(LED1); -Timer timer; -float velocita=0.0; -float speed=0.1; +//DigitalOut myled(LED1); +//Timer timer; +Serial pc(USBTX, USBRX); // tx, rx +PwmOut led(LED1); + +float speed2 =-1.0; // velocita di start del motore in forward +float speed =-0.1; //velocita del motore in backward +float velocita = -0.15; // variabile velocita da incrementare o decrementare da tastiera per il motore A +float velocita2 = -0.95; //variabile velocita da incrementare o decrementare da tastiera per il motore A +float brightness = 0.0; //variabile per aumentare o decrementare la luce del led1 +bool brake; + + void attime(){ + pc.printf("C1= %f \r\n", (motore.GetMotorCurrent( ArduinoMotorShield::MOTOR_A))); + pc.printf("C2= %f \r\n", (motore.GetMotorCurrent( ArduinoMotorShield::MOTOR_B))); + } + + int main() { - while(1) { + pc.printf("Premere un tasto per accendere i motori \n\r "); + pc.printf("Premere 'd' per accelerare il motore A e decelerare il motore B \n\r"); + pc.printf("Premere 'u' per accelerare il motore B e decelerare il motore A \n\r"); + + brake= false; + char s='\0'; + char c='\0'; + char p='\0'; + //while(s != 's') + s = pc.getc(); + + motore.SetMotorPower( ArduinoMotorShield::MOTOR_A, speed); + motore.SetMotorPower( ArduinoMotorShield::MOTOR_B, speed2); + timer.attach(&attime, 0.5); - //motore.SetMotorPolarity( ArduinoMotorShield::MOTOR_A, ArduinoMotorShield::MOTOR_FORWARD ); - // motore.SetMotorPolarity( ArduinoMotorShield::MOTOR_B, ArduinoMotorShield::MOTOR_BACKWARD ); - motore.SetMotorPower( ArduinoMotorShield::MOTOR_A, speed); - if(mybutton==0) timer.start(); - if(mybutton!=0){ - timer.stop(); - if(timer.read()> 0.5 && velocita< 1) { - velocita+=0.1; - timer.reset(); + while(1) { + c = pc.getc(); + + if((c == 'u') && (velocita < 1.0)) { + brightness += 0.05; + velocita += 0.05; + velocita2 -= 0.05; + led = brightness; motore.SetMotorPower( ArduinoMotorShield::MOTOR_A, velocita) ; - } - else - if(velocita>-1){ - velocita-=0.1; + motore.SetMotorPower( ArduinoMotorShield::MOTOR_B, velocita2) ; + pc.printf("\rV= %f\n\r" , velocita); + pc.printf("\rV2= %f\n\r" , velocita2); + + + } + if((c == 'd') && (velocita>-1.0)){ + velocita -= 0.05; + velocita2 += 0.05; + brightness -= 0.05; + led = brightness; motore.SetMotorPower( ArduinoMotorShield::MOTOR_A, velocita) ; + motore.SetMotorPower( ArduinoMotorShield::MOTOR_B, velocita2) ; + pc.printf("\rV= %f\n\r" , velocita); + pc.printf("\rV2= %f\n\r" , velocita2); + + } + + + if((c == 's') && (brake==false)){ + motore.SetBrake( ArduinoMotorShield::MOTOR_A, 1) ; + motore.SetBrake( ArduinoMotorShield::MOTOR_B, 1) ; + brake=true; + p = pc.getc(); + if(p == 's'){ + motore.SetBrake( ArduinoMotorShield::MOTOR_A, 0) ; + motore.SetBrake( ArduinoMotorShield::MOTOR_B, 0) ; + motore.SetMotorPower( ArduinoMotorShield::MOTOR_A, velocita) ; + motore.SetMotorPower( ArduinoMotorShield::MOTOR_B, velocita2) ; + brake=false; } } - /* if (mybutton==0) { // Button is pressed - myled = !myled; // Toggle the LED state - wait(0.5); // 200 ms - }*/ - } -} - \ No newline at end of file + + + } + + +} \ No newline at end of file