Sz_Insper / Mbed 2 deprecated Line_follow

Dependencies:   mbed

Revision:
0:0d443d0229c9
Child:
1:fe4f6f2d9ca6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Oct 05 18:11:37 2018 +0000
@@ -0,0 +1,105 @@
+#include "mbed.h"
+#define corte 2800
+
+AnalogIn S0(A3);
+AnalogIn S1(A5);
+DigitalIn BT(BUTTON1);
+DigitalOut led(LED1);
+DigitalOut IN1B(PA_0);
+DigitalOut IN2B(PA_1);
+DigitalOut IN1A(PB_4);
+DigitalOut IN2A(PB_5);
+DigitalOut ENA(PA_10);
+DigitalOut ENB(PC_1);
+Serial pc(USBTX, USBRX); // tx, rx
+
+
+int main()
+{
+    float S0_val = 0;
+    float S1_val = 0;
+    bool flag = 0;
+    
+    ENA = 1;
+    ENB = 1;
+
+    while(1) 
+    {
+        
+        
+        S0_val = S0.read();
+        S1_val = S1.read(); 
+        
+        S0_val = S0_val * 3300; // Converts value in the 0V-3.3V range
+        S1_val = S1_val * 3300; // Converts value in the 0V-3.3V range
+        
+        // Display values
+        printf("measure S0 = %.0f mV\n", S0_val);
+        printf("measure S1 = %.0f mV\n", S1_val);
+        
+        if(BT == 0)
+        {
+            wait(0.1);
+            if(BT == 0 && flag == 0)
+            {
+                flag = 1;
+                led = 1;
+                wait(0.5);
+            }
+        }
+        
+        if(flag == 0)
+        led = 0;
+        
+        if(flag == 1)
+        {
+            printf("ACIONADO\n");
+            if((S0_val > corte) && (S1_val > corte))
+            {
+                IN2A = 0;
+                IN2B = 0;
+                IN1A = 0;
+                IN1B = 0;
+            }
+            
+            if((S0_val < corte) && (S1_val < corte))
+            {
+                IN2A = 1;
+                IN2B = 0;
+                IN1A = 0;
+                IN1B = 1;
+            }
+            
+            if((S0_val < corte) && (S1_val > corte))
+            {
+                IN2A = 0;
+                IN2B = 0;
+                IN1A = 0;
+                IN1B = 1;
+            }
+            
+            if((S0_val > corte) && (S1_val < corte))
+            {
+                IN2A = 1;
+                IN2B = 0;
+                IN1A = 0;
+                IN1B = 0;
+            }
+        }
+        
+        if(BT == 0)
+        {
+            wait(0.1);
+            if(BT == 0 && flag == 1)
+            {
+                flag = 0;
+                printf("DESACIONADO\n");
+                ENA = 0;
+                ENB = 0;
+                wait(0.5);
+            }
+        }        
+
+        //wait(0.2); // 1 second
+    }
+}