This version does not work on my pc however it should work if i look at all the data send to hidscope and de led which does it correct. We should tray another pc because my pc does give still some errors on the libaries

Dependencies:   HIDScope MODSERIAL mbed

Fork of Milestone_1_Motor_DualDirection_potmeter_v2 by Michel Vos

Revision:
3:f00ddd66fe39
Parent:
2:735ca8577f31
Child:
4:fe0b7e7b1de9
--- a/main.cpp	Fri Sep 28 10:53:57 2018 +0000
+++ b/main.cpp	Fri Sep 28 11:33:57 2018 +0000
@@ -6,7 +6,8 @@
 PwmOut led(D10);
 AnalogIn potmeter(A5);
 DigitalIn button(D2);
-DigitalOut directionpin(D5);
+DigitalOut directionpin(D7);
+MODSERIAL pc(USBTX, USBRX);
 
 HIDScope scope(2);
 Ticker ticker;
@@ -15,7 +16,8 @@
 
 volatile float x;
 volatile float y;
-volatile float p = potmeter;
+volatile float scaled_potmeter;
+volatile float c;
 
 void sendData() {
     scope.set(0,potmeter); //set the potmeter data to the first scope
@@ -23,40 +25,51 @@
     scope.send(); //send the datapoints of the 2 motors
 }
 
+void Proces_states(void){
+    switch (CurrentState){       
+        case forward:
+            directionpin = 1;
+            pwmpin.write(scaled_potmeter); //pwm of motor is potmeter value
+            led.write(scaled_potmeter); //led is potmeter value  
+            break;
+        case stop:
+            // do nothing
+            break;
+        case backwards:
+            directionpin = 0;
+            c = scaled_potmeter*-1;
+            pwmpin.write(c); //pwm of motor is potmeter value
+            led.write(c); //led is potmeter value 
+            break; 
+    }            
+}
+
 int main() {
-      
-//    float u = -0.3f; //determineusefulvalue, -0.3f is justanexample
-//    directionpin = u > 0; //if bigger than 0, gives true, otherwise gives false   
     x = 1; //placeholder value for potmeter of second motor
     
-    float scaled_potmeter = (p*2)-1; //scale potmeter from 0-1 to (-1 to 1)
-    float c; //value to be used in negative scaled potmeter value
-    bool forward = scaled_potmeter > 0;
-    bool stop = scaled_potmeter == 0;
-    bool backwards = scaled_potmeter < 0;
-    
     pwmpin.period_us(60); //60 microseconds PWM period, 16.7 kHz
     led.period_us(60); //60 microseconds
     ticker.attach(&sendData, 0.005f); //send data to hidscope at 200Hz
 
-    while (true) {        
-        switch (CurrentState){       
-            case forward:
-                directionpin = true;
-                pwmpin.write(scaled_potmeter); //pwm of motor is potmeter value
-                led.write(scaled_potmeter); //led is potmeter value  
-                break;
-            case stop:
-                // do nothing
-                break;
-            case backwards:
-                directionpin = false;
-                c = scaled_potmeter*-1;
-                pwmpin.write(c); //pwm of motor is potmeter value
-                led.write(c); //led is potmeter value 
-                break; 
-        }            
-        wait(1.0f);
+    while (true) {  
+        scaled_potmeter = (potmeter*2)-1; //scale potmeter from 0-1 to (-1 to 1)
+
+        if (scaled_potmeter > 0) {
+            CurrentState = forward;
+            pc.printf("state = forward\r\n");
+            Proces_states();
+        }
+        if (scaled_potmeter == 0) {
+            CurrentState = stop;
+            pc.printf("state = stop\r\n");
+            Proces_states(); 
+        }
+        if (scaled_potmeter < 0) {
+            CurrentState = backwards;
+            pc.printf("state = backwards\r\n");
+            Proces_states(); 
+        }   
+        wait(0.2f);
     }
 }