controllo velocita motore con tasto user

Dependencies:   ArduinoMotorShield mbed

Fork of motore2 by Rapid PrototypingST32Nucleo

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;
                            }
                    }
        
        
  
        }


}