fina mbed source

Dependencies:   mbed TCS3472_I2C VL6180

Files at this revision

API Documentation at this revision

Comitter:
xinzhizhulaoban
Date:
Mon Dec 17 04:53:52 2018 +0000
Commit message:
MBED source

Changed in this revision

TCS3472_I2C.lib Show annotated file Show diff for this revision Revisions of this file
VL6180.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TCS3472_I2C.lib	Mon Dec 17 04:53:52 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/karlmaxwell67/code/TCS3472_I2C/#6d5bb4ad7d6e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/VL6180.lib	Mon Dec 17 04:53:52 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/teams/B29VS-SysProj-Group-5-Element/code/VL6180/#82297674d72d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Dec 17 04:53:52 2018 +0000
@@ -0,0 +1,430 @@
+#include "mbed.h"
+#include "TCS3472_I2C.h"
+#include "VL6180.h"
+DigitalOut distance_over(p24);
+DigitalOut start_Digital_Tube(p15);
+DigitalOut start_LED(p16);
+DigitalOut start_question1(p18);
+DigitalOut start_question2(p19);
+DigitalIn result1_led(p7);
+DigitalIn result2_led(p8);
+DigitalIn result1_Digital_Tube(p11);
+DigitalIn result2_Digital_Tube(p12);
+DigitalIn result1_question(p13);
+DigitalIn result2_question(p14);
+VL6180 TOF_sensor(p28, p27);
+TCS3472_I2C rgb_sensor(p9, p10);
+DigitalOut color1(p21);
+DigitalOut color2(p22);
+DigitalOut start_good_supply(p17);
+DigitalIn color_over(p23);
+DigitalOut servo_test(p20);
+DigitalIn infrared1(p25);
+DigitalIn infrared3(p26);
+DigitalIn infrared2(p29);
+DigitalIn infrared4(p30);
+
+
+Serial      pc(USBTX, USBRX);
+
+int main()
+{
+    int game_count;
+    int distance_count;
+    int good_shut_down;
+    int Digital_Tube,LED,QUESTION1,QUESTION2;
+    uint8_t dist;       //distance
+    int count_color;
+    char a;
+    float R,G,B;
+    TOF_sensor.VL6180_Init();
+    int rgb_readings[4];    //color
+    int user,maintance;
+    rgb_sensor.enablePowerAndRGBC();
+    rgb_sensor.setIntegrationTime(100);
+while(1)
+{
+    Digital_Tube=0;
+    LED=0;
+    QUESTION1=0;
+    QUESTION2=0;
+    start_Digital_Tube=0;
+    start_LED=0;
+    start_question1=0;
+    start_question2=0;
+    start_good_supply=0;
+    servo_test=0;
+    color1=0;
+    color2=0;
+    good_shut_down=0;
+    distance_over=0;
+    distance_count=0;
+    game_count=0;
+    
+    while(1)
+    {
+        a=pc.getc();
+        if(a=='9')
+        {
+            break;
+        }
+    }
+
+    while(1) 
+    {
+        dist = TOF_sensor.getDistance();        //always reading the data of distance
+        if(dist>=100 && dist<255)
+        {
+            distance_over=0;
+            pc.printf("10");
+            break;
+        }
+        else
+        {
+            distance_over=1;
+        }
+    }
+    while(1)
+    {
+        a=pc.getc();
+        if(a=='2') //if the mbed get the signal to read card
+        {
+            while(1)
+            {
+                //identify the card
+                if(infrared1==1 && infrared2==1 && infrared3==1 && infrared4==1)
+                {
+                    user=0;
+                    maintance=1;
+                    pc.printf("0");
+                    break;
+                }
+                else
+                {
+                    user=1;
+                    maintance=0;
+                    pc.printf("1");
+                    break;
+                }
+            }
+            break;
+        }
+        if(a=='7')
+        {
+            break;
+        }
+    }
+    while(user==1 && maintance==0)
+    {
+        while(1)
+        {
+            a=pc.getc();
+            if(a=='7')
+            {
+                break;
+            }
+            if(a=='8')
+            {
+                Digital_Tube=1;
+                break;
+            }
+            if(a=='9')
+            {
+                LED=1;
+                break;
+            }
+            if(a=='5')
+            {
+                QUESTION1=1;
+                break;
+            }
+            if(a=='6')
+            {
+                QUESTION2=1;
+                break;
+            }
+        }
+        if(Digital_Tube==1 && LED==0 && QUESTION1==0 && QUESTION2==0)
+        {
+            start_Digital_Tube=1;
+            while(1) 
+            {
+                game_count=game_count+1;
+                dist = TOF_sensor.getDistance();
+                if(dist<=100 || dist>=200)
+                {
+                    distance_over=1;
+                    distance_count=distance_count+1;
+                    if(distance_count==1000)
+                    {
+                        break;
+                    }
+                }
+                else
+                {
+                    distance_over=0;
+                    distance_count=0;
+                }
+                if(result1_Digital_Tube==1 && result2_Digital_Tube==0) 
+                {
+                    pc.printf("1");
+                    start_Digital_Tube=0;
+                    break;
+                }
+                if(result1_Digital_Tube==0 && result2_Digital_Tube==1) 
+                {
+                    pc.printf("0");
+                    start_Digital_Tube=0;
+                    break;
+                }
+                if(game_count==4000)
+                {
+                    game_count=0;
+                    pc.printf("long time without operating");
+                    break;
+                }  
+            }
+        }
+        if(Digital_Tube==0 && LED==1 && QUESTION1==0 && QUESTION2==0)
+        {
+            start_LED=1;
+            while(1) 
+            {
+                game_count=game_count+1;
+                dist = TOF_sensor.getDistance();
+                if(dist<=100 || dist>=200)
+                {
+                    distance_over=1;
+                    distance_count=distance_count+1;
+                    if(distance_count==1000)
+                    {
+                        break;
+                    }
+                }
+                else
+                {
+                    distance_over=0;
+                    distance_count=0;
+                }
+                if(result1_led==1 && result2_led==0) 
+                {
+                    pc.printf("1");
+                    start_LED=0;
+                    break;
+                }
+                if(result1_led==0 && result2_led==1) 
+                {
+                    pc.printf("0");
+                    start_LED=0;
+                    break;
+                }
+                if(game_count==4000)
+                {
+                    game_count=0;
+                    pc.printf("long time without operating");
+                    break;
+                } 
+            }
+        }
+        if(Digital_Tube==0 && LED==0 && QUESTION1==1 && QUESTION2==0)
+        {
+            start_question1=1;
+            start_question2=0;
+            while(1) 
+            {
+                game_count=game_count+1;
+                dist = TOF_sensor.getDistance();
+                if(dist<=100 && dist>=200)
+                {
+                    distance_over=1;
+                    distance_count=distance_count+1;
+                    if(distance_count==1000)
+                    {
+                        break;
+                    }
+                }
+                else
+                {
+                    distance_over=0;
+                    distance_count=0;
+                }
+                if(result1_question==1 && result2_question==0) 
+                {
+                    pc.printf("1");
+                    start_question1=0;
+                    break;
+                }
+                if(result1_question==0 && result2_question==1) 
+                {
+                    pc.printf("0");
+                    start_question1=0;
+                    break;
+                }
+                if(game_count==4000)
+                {
+                    game_count=0;
+                    pc.printf("long time without operating");
+                    break;
+                }
+            }
+        }
+        if(Digital_Tube==0 && LED==0 && QUESTION1==0 && QUESTION2==1)
+        {
+            start_question1=0;
+            start_question2=1;
+            while(1) 
+            {
+                game_count=game_count+1;
+                dist = TOF_sensor.getDistance();
+                if(dist<=100 || dist>=200)
+                {
+                    distance_over=1;
+                    distance_count=distance_count+1;
+                    if(distance_count==1000)
+                    {
+                        break;
+                    }
+                }
+                else
+                {
+                    distance_over=0;
+                    distance_count=0;
+                }
+                if(result1_question==1 && result2_question==0) 
+                {
+                    pc.printf("1");
+                    start_question1=0;
+                    start_question2=0;
+                    break;
+                }
+                if(result1_question==0 && result2_question==1) 
+                {
+                    pc.printf("0");
+                    start_question1=0;
+                    start_question2=0;
+                    break;
+                }
+                if(game_count==4000)
+                {
+                    game_count=0;
+                    pc.printf("long time without operating");
+                    break;
+                } 
+            }
+        }
+        break;
+    }
+    while(user==0 && maintance==1)
+    {
+        a=pc.getc();
+        if(a=='3')
+        {
+            start_Digital_Tube=1;
+            start_LED=1;
+            start_question1=1;
+            wait(10);
+            start_Digital_Tube=0;
+            start_LED=0;
+            start_question1=0;
+        }
+        if(a=='4')
+        {
+            servo_test=1;
+            wait(10);
+            servo_test=0;
+        }
+        if(a=='5')
+        {
+            dist = TOF_sensor.getDistance(); 
+            rgb_sensor.getAllColors(rgb_readings);
+            pc.printf("The distance are %d and the color are Red %d     Green %d    Blue %d\n",dist,rgb_readings[1],rgb_readings[2],rgb_readings[3]);
+        }
+        if(a=='6')
+        {
+            while(1) 
+            {
+                count_color=0;
+                R=0;
+                G=0;
+                B=0;
+                color1=0;
+                color2=0;
+                start_good_supply=0;
+                while(1) 
+                {
+                    count_color=count_color+1;
+                    rgb_sensor.getAllColors(rgb_readings);
+                    R=R+rgb_readings[1];
+                    G=G+rgb_readings[2];
+                    B=B+rgb_readings[3];
+                    if(count_color>=10) 
+                    {
+                        R=R/10;
+                        G=G/10;
+                        B=B/10;
+                        break;
+                    }
+                }
+                start_good_supply=1;
+                if((R-B)>=100 && (G-B)>=100 && R>G) 
+                {
+                    color1=0;
+                    color2=1;
+                    while(1) 
+                    {
+                        if(color_over==1) 
+                        {
+                            start_good_supply=0;
+                            wait(2);
+                            break;
+                        }
+                    }
+                } 
+                else if((R-B)>=100 && (R-G)>=100 && (G-B)<=100) 
+                {
+                    color1=1;
+                    color2=0;
+                    while(1) 
+                    {
+                        if(color_over==1) 
+                        {
+                            start_good_supply=0;
+                            wait(2);
+                            break;
+                        }
+                    }
+                } 
+                else if((G-R)>=70 && (G-B)>=100) 
+                {
+                    color1=1;
+                    color2=1;
+                    while(1) 
+                    {
+                        if(color_over==1) 
+                        {
+                            start_good_supply=0;
+                            wait(2);
+                            break;
+                        }
+                    }
+                } 
+                else
+                {
+                    good_shut_down=good_shut_down+1;
+                    if(good_shut_down==5)
+                    {
+                        good_shut_down=0;
+                        break;
+                    }
+                }
+            }
+        }
+        if(a=='7')
+        {
+            break;
+        }
+            
+    }
+}
+            
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Dec 17 04:53:52 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/3a7713b1edbc
\ No newline at end of file