controllo velocita motore con tasto user
Dependencies: ArduinoMotorShield mbed
Fork of motore2 by
main.cpp
- Committer:
- mikteam10
- Date:
- 2016-10-22
- Revision:
- 1:b259a13421b6
- Parent:
- 0:a3a22a35e75c
File content as of revision 1:b259a13421b6:
#include "mbed.h" #include "ArduinoMotorShield.hpp" Ticker timer; ArduinoMotorShield motore; DigitalIn mybutton(USER_BUTTON); //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() { 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); 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) ; 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; } } } }