class project digital Group B4-B5

Dependencies:   ArduMotoShield ArduinoMotorShield mbed

Revision:
0:3aaac6f4553e
Child:
2:83f5986b5e23
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Dec 09 04:08:35 2015 +0000
@@ -0,0 +1,128 @@
+#include "ArduMotoShield.h"
+#include "mbed.h"
+
+ArduMotoShield Motor;
+AnalogIn EMS(A0),A(A1),current(A2),RV_set(A3),RV2(A4);
+DigitalIn mybutton(USER_BUTTON),L339(D4);
+
+Serial Device(D8, D2);
+Serial pc(SERIAL_TX, SERIAL_RX);
+
+void swap(float &x,float &y);
+
+int main(void){
+    
+    Device.baud(9600);
+    pc.baud(9600);
+    float value =0;
+    float Speed = 0;
+    float Left = 0,Right = 0;
+    float x=0,y=0;
+    char word;
+    int i=0,count=0;
+    
+    pc.printf("Hello PROJECT_CAR.\n");
+    while(1)
+    {
+       // printf("Valuenery = %.2f. %d\n", RV2.read(),abs(i));
+        //wait(0.75);
+        Motor.stop();
+        if(count<=0)
+        {
+            if(Device.readable())
+            {
+                word = Device.getc();
+                pc.printf(" %c.\n",word);
+                if(word == '%')
+                {
+                    Speed = RV_set.read()*3.3;
+                    if(Speed >=0 && Speed < 0.825)//0-0.825
+                    {
+                        x=0;y=0.824;
+                        pc.printf("Level %d is = %.3f \t %.3f \t %.3f \t %.3f.\n",i=0,x,y,RV_set.read(),Speed);
+                    }
+                    else if(Speed >= 0.825 && Speed < 1.650)//0.825-1.650
+                    {
+                        x=0.825;y=1.649;
+                        pc.printf("Level %d is = %.3f \t %.3f \t %.3f \t %.3f.\n",i=1,x,y,RV_set.read(),Speed);
+                    }
+                    else if(Speed >= 1.650 && Speed < 2.475)//1.650-2.475
+                    {
+                        x=1.650;y=2.474;
+                        pc.printf("Level %d is = %.3f \t %.3f \t %.3f \t %.3f.\n",i=2,x,y,RV_set.read(),Speed);
+                    }
+                    else//2.475-3.300
+                    {
+                        x=2.475;y=3.300;
+                        pc.printf("Level %d is = %.3f \t %.3f \t %.3f \t %.3f.\n",i=3,x,y,RV_set.read(),Speed);
+                    }
+                    count++;
+                }
+                if(word == '#')
+                { 
+                    value = current.read()*1023;
+                    Device.printf("%.2f,",0);//ความเร็ว
+                    Device.printf("%.2f,",(((value-490)*5/1023)/0.0645));//กระแส
+                    if(RV_set.read()>=0&&RV_set.read()<0.25)
+                        Device.printf(" แห้ง ,\n");//โหมด
+                    else if(RV_set.read()>=0.25&&RV_set.read()<0.50)
+                        Device.printf(" ผอม ,\n");//โหมด
+                    else if(RV_set.read()>=0.50&&RV_set.read()<0.75)
+                        Device.printf(" อวบ ,\n");//โหมด
+                    else
+                        Device.printf(" อ้วน ,\n");//โหมด
+                }    
+            }
+            wait(0.5);
+        }
+        else
+        {
+            if(Device.readable())
+            {
+                if(RV_set.read()>=0.03)
+                {
+                    if(RV2.read()<0.49)
+                    {
+                        Right = y/3.3;
+                        Left = RV2.read()/2+(0.25*i);
+                        pc.printf("Value = %.2f , %.2f , %.2f.\n",RV2.read(),Left,Right);  
+                    }
+                    else if(RV2.read()>=0.49&&RV2.read()<=0.51)
+                    {
+                        Left = y/3.3;
+                        Right = y/3.3;
+                        pc.printf("CentF = %.2f , %.2f , %.2f\n",Left,Right,RV2.read());   
+                    }
+                    else 
+                    {
+                        Left = y/3.3;
+                        Right = (((RV2.read()*2)-2)*(-1)/4)+(0.25*i);
+                        pc.printf("Right = %.2f , %.2f , %.2f.\n",RV2.read(),Left,Right);
+                    }
+                    Motor.forward(Left,Right); 
+                        value = current.read()*1023;
+                        Device.printf("%.2f,",((Left+Right)/2));//ความเร็ว
+                        Device.printf("%.2f,",(((value-490)*5/1023)/0.0645));//กระแส
+                        if(1==0)
+                            Device.printf(" แห้ง ,\n");//โหมด
+                        else if(i==1)
+                            Device.printf(" ผอม ,\n");//โหมด
+                        else if(i==2)
+                            Device.printf(" อวบ ,\n");//โหมด
+                        else
+                            Device.printf(" อ้วน ,\n");//โหมด
+                    wait(0.5);
+                }
+            }
+        }
+    }
+    //Motor.stop();
+}
+
+void swap(float &x,float &y)
+{
+    float temp;
+    temp = x;
+    x = y;
+    y = temp;
+}
\ No newline at end of file