controllo velocita motore con tasto user

Dependencies:   ArduinoMotorShield mbed

Fork of motore2 by Rapid PrototypingST32Nucleo

Files at this revision

API Documentation at this revision

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