kjkjkjk

Dependencies:   mbed juli111

Revision:
0:e7940fd49047
Child:
1:0c82ff54d168
diff -r 000000000000 -r e7940fd49047 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed May 08 04:00:08 2019 +0000
@@ -0,0 +1,192 @@
+#include "mbed.h"
+#include "stdint.h"
+#include <string>
+#include "MCP23017.h"
+#include "WattBob_TextLCD.h"
+#include "VL6180.h"
+
+//Hyperterminal configuration
+//9600 bauds, 8-bit data, no parity
+
+//VL6180X defines
+
+#define IDENTIFICATIONMODEL_ID 0x0000
+
+VL6180  TOF_sensor(I2C_SDA, I2C_SCL);
+DigitalOut myled0(LED2);
+
+#define     BACK_LIGHT_ON(INTERFACE)    INTERFACE->write_bit(1,BL_BIT)
+#define     BACK_LIGHT_OFF(INTERFACE)   INTERFACE->write_bit(0,BL_BIT)
+
+MCP23017            *par_port;
+WattBob_TextLCD     *lcd;
+Serial STM2Android(PC_4,PC_5,9600);
+I2C i2c(PC_1, PC_0); //pins for I2C communication (SDA, SCL)
+
+DigitalOut d(D3);  //dianjide diyiwei
+//DigitalOut j(D4);  //dianjide dierwei
+
+DigitalOut a(PC_10);//hongwaide yi
+DigitalOut b(PC_12);//hongwaide er
+
+int sensor_addr = 41 << 1;
+DigitalOut green(LED1);
+
+char flag_Android[]="";
+char flag_Android_1[]="begin";
+
+int main()
+{   
+    int goal_1=0;
+    int goal_2=0;
+    d=1;
+    uint8_t dist;
+      //julichuanganqi
+    par_port = new MCP23017(I2C_SDA, I2C_SCL,0x0400);
+    par_port->config(0x0F00, 0x0F00, 0x0F00);           // configure MCP23017 chip on WattBob
+    lcd = new WattBob_TextLCD(par_port); 
+      
+    
+ 
+ while(1)
+ {
+         STM2Android.scanf("%s",&flag_Android);
+         if(strcmp(flag_Android,flag_Android_1)==0)
+         {
+   
+            dist = TOF_sensor.getDistance();
+            lcd->cls(); 
+            lcd->locate(0,0);
+            green = 1; // off
+            // Connect to the Color sensor and verify whether we connected to the correct sensor. 
+            i2c.frequency(100000);//修改为100000,否则报错
+            char id_regval[1] = {146};
+            char data[1] = {0};
+            i2c.write(sensor_addr,id_regval,1, true);
+            i2c.read(sensor_addr,data,1,false);
+            if (data[0]==68) 
+            {
+                green = 0;
+                wait (2); 
+                green = 1;
+            } 
+            else 
+            {
+                green = 1; 
+            }
+              // Initialize color sensor
+            char timing_register[2] = {129,0};
+            i2c.write(sensor_addr,timing_register,2,false);
+            char control_register[2] = {143,0};
+            i2c.write(sensor_addr,control_register,2,false);    
+            char enable_register[2] = {128,3};
+            i2c.write(sensor_addr,enable_register,2,false);
+            // Read data from color sensor (Clear/Red/Green/Blue)
+            char clear_reg[1] = {148};
+            char clear_data[2] = {0,0};
+            i2c.write(sensor_addr,clear_reg,1, true);
+            i2c.read(sensor_addr,clear_data,2, false);
+            int clear_value = ((int)clear_data[1] << 8) | clear_data[0];
+            char red_reg[1] = {150};
+            char red_data[2] = {0,0};
+            i2c.write(sensor_addr,red_reg,1, true);
+            i2c.read(sensor_addr,red_data,2, false);
+            int red_value = ((int)red_data[1] << 8) | red_data[0];
+            char green_reg[1] = {152};
+            char green_data[2] = {0,0};
+            i2c.write(sensor_addr,green_reg,1, true);
+            i2c.read(sensor_addr,green_data,2, false);
+            int green_value = ((int)green_data[1] << 8) | green_data[0];
+            char blue_reg[1] = {154};
+            char blue_data[2] = {0,0};
+            i2c.write(sensor_addr,blue_reg,1, true);
+            i2c.read(sensor_addr,blue_data,2, false);
+            int blue_value = ((int)blue_data[1] << 8) | blue_data[0];
+                                                                 // print sensor readings
+            wait(20);                                                     
+            if (red_value>green_value&&red_value>blue_value)     //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("a2");//red+2
+                  goal_1=2;
+              }
+            else if (green_value>red_value&&green_value>blue_value)     //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("a1");//green+1
+                  goal_1=1;
+              }
+            else if (red_value>green_value&&red_value>blue_value)     //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("a0");//blue+0
+                  goal_=0;
+              }
+            wait(5);
+            
+            
+            
+            
+              
+           d=0;//dianjizhuandong
+           wait(10);
+           d=1;//dianjitingzhizhuandong
+           wait(2);
+           
+           
+           
+           if (red_value>green_value&&red_value>blue_value)     //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("b2");//red+2
+                  goal_2=2;
+              }
+            else if (green_value>red_value&&green_value>blue_value)     //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("b1");//green+1
+                  goal_2=1;
+              }
+            else if (red_value>green_value&&red_value>blue_value)     //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("b0");//blue+0
+                  goal_2=0;
+              }
+           if(goal_1>goal_2)
+              
+    //    if (a==0&&b==0) kehu=0;//yonghushibie
+    //   else if (a==0&&b==1) kehu=1;
+    //    else if (a==1&&b==0) kehu=2;
+    //    else if (a==1&&b==1) kehu=3;
+        
+       
+       // STM2Android.printf("aClear(%d),Red(%d),Green(%d),Blue(%d),d=(%d)\r\n", clear_value, red_value, green_value, blue_value, dist);
+        //STM2Android.printf("ad=(%d)\r\n",dist);
+        STM2Android.printf("a1");
+
+        d=0;//dianjizhuandong
+        wait(10);
+        d=1;
+        
+       // d=1;
+        //wait(2);
+     }
+
+
+   
+    
+                
+       // else{
+   //lingyigechuanganqi
+  // z=0;
+  // y=0;s=1;
+  // wait(2);
+  // y=1;s=0;
+  // wait(2);
+
+  //  dist = TOF_sensor.getDistance();
+  //  STM2Android.printf("d=%d", dist);
+    //wait(0.5);
+   // lcd->cls(); 
+    //lcd->locate(0,0);
+   
+   //wait(5);
+     
+    // }
+ }
+}
\ No newline at end of file