yyyy

Dependencies:   mbed juli111

Files at this revision

API Documentation at this revision

Comitter:
mihaidd
Date:
Mon May 13 09:07:38 2019 +0000
Commit message:
ffff

Changed in this revision

juli111.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
diff -r 000000000000 -r ae94058fb59a juli111.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/juli111.lib	Mon May 13 09:07:38 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mihaidd/code/juli111/#a9b4ee4ed395
diff -r 000000000000 -r ae94058fb59a main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon May 13 09:07:38 2019 +0000
@@ -0,0 +1,264 @@
+#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,115200);//上位机串口定义
+I2C i2c1(PC_1, PC_0); //pins for I2C communication (SDA, SCL) 人颜色的串口定义
+I2C i2c2(PB_14, PB_13); //机器人颜色的串口定义
+
+DigitalOut d(PB_3);  //电机的第一位
+DigitalOut j(PA_9);  //电机的第二位
+DigitalOut k(PC_7);  //电机的第三位
+DigitalOut a(PC_10);//红外的一
+DigitalOut b(PC_12);//红外的二
+
+int sensor_addr = 41 << 1;
+
+char flag_Android[]="";
+char flag_Android_1[]="begin";
+char flag_Android_2[]="distance";
+char Android_0[]="";
+char Android_1='l';
+char flag_Android_3[]="repair";
+int main()
+{   
+    int goal_1=0;//人类得分
+    int goal_2=0;//机器人得分
+    d=1;
+    j=1;
+    k=1;
+    int kehu=0;//客户类型
+
+    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)
+ {
+       
+            dist = TOF_sensor.getDistance();
+            lcd->cls(); 
+            lcd->locate(0,0);
+            i2c1.frequency(100000);//修改为100000,否则报错
+            i2c2.frequency(100000);
+            
+            char id_regval[1] = {146};
+            char data[1] = {0};
+            i2c1.write(sensor_addr,id_regval,1, true);
+            i2c1.read(sensor_addr,data,1,false);
+            i2c2.write(sensor_addr,id_regval,1, true);
+            i2c2.read(sensor_addr,data,1,false);
+              
+            char timing_register[2] = {129,0};
+            i2c1.write(sensor_addr,timing_register,2,false);
+            i2c2.write(sensor_addr,timing_register,2,false);
+    
+            char control_register[2] = {143,0};
+            i2c1.write(sensor_addr,control_register,2,false);
+            i2c2.write(sensor_addr,control_register,2,false);
+    
+            char enable_register[2] = {128,3};
+            i2c1.write(sensor_addr,enable_register,2,false);
+            i2c2.write(sensor_addr,enable_register,2,false);
+            // Read data from color sensor (Clear/Red/Green/Blue)
+            
+            char clear_reg[1] = {148};
+            char clear_data1[2] = {0,0};
+            char clear_data2[2] = {0,0};
+            
+            i2c1.write(sensor_addr,clear_reg,1, true);
+            i2c1.read(sensor_addr,clear_data1,2, false);
+            i2c2.write(sensor_addr,clear_reg,1, true);
+            i2c2.read(sensor_addr,clear_data2,2, false);
+        
+            int clear_value1 = ((int)clear_data1[1] << 8) | clear_data1[0];
+            int clear_value2 = ((int)clear_data2[1] << 8) | clear_data2[0];
+            
+            char red_reg[1] = {150};
+            char red_data1[2] = {0,0};
+            char red_data2[2] = {0,0};
+        
+            i2c1.write(sensor_addr,red_reg,1, true);
+            i2c1.read(sensor_addr,red_data1,2, false);
+            i2c2.write(sensor_addr,red_reg,1, true);
+            i2c2.read(sensor_addr,red_data2,2, false);
+        
+            int red_value1 = ((int)red_data1[1] << 8) | red_data1[0];
+            int red_value2 = ((int)red_data2[1] << 8) | red_data2[0];
+        
+            char green_reg[1] = {152};
+            char green_data1[2] = {0,0};
+            char green_data2[2] = {0,0};
+            
+            i2c1.write(sensor_addr,green_reg,1, true);
+            i2c1.read(sensor_addr,green_data1,2, false);
+            i2c2.write(sensor_addr,green_reg,1, true);
+            i2c2.read(sensor_addr,green_data2,2, false);
+        
+            int green_value1 = ((int)green_data1[1] << 8) | green_data1[0];
+            int green_value2 = ((int)green_data2[1] << 8) | green_data2[0];
+        
+            char blue_reg[1] = {154};
+            char blue_data1[2] = {0,0};
+            char blue_data2[2] = {0,0};
+            
+            i2c1.write(sensor_addr,blue_reg,1, true);
+            i2c1.read(sensor_addr,blue_data1,2, false);
+            i2c2.write(sensor_addr,blue_reg,1, true);
+            i2c2.read(sensor_addr,blue_data2,2, false);
+        
+            int blue_value1 = ((int)blue_data1[1] << 8) | blue_data1[0];
+            int blue_value2 = ((int)blue_data2[1] << 8) | blue_data2[0];
+            // print sensor readings
+//            while(1)
+//            {
+//                if(STM2Android.readable())
+//                {
+            STM2Android.scanf("%s",&Android_0);//要给上位机传输dist以及用户识别
+//            break; 
+//                 }
+//            }
+wait(2);
+            if(strcmp(Android_0,flag_Android_2)==0)
+               {
+               //  if (a==0&&b==0) kehu=0;//用户识别 小孩
+               // else if (a==0&&b==1) kehu=1;//青年
+               //else if (a==1&&b==0) kehu=2;//老人
+               //STM2Android.printf("x%d\r\n",kehu);
+                    wait(1);
+                   // if(dist<=180)
+                        STM2Android.printf("e");//距离合适
+               
+          /*     else if(strcmp(Android_0,flag_Android_3)==0)//维护模式
+               {
+                   STM2Android.scanf("%c",&Android_1);
+                   if(Android_1=='c')STM2Android.printf("dClear1(%d),Red1(%d),Green1(%d),Blue1(%d)\r\n", clear_value1, red_value1, green_value1, blue_value1);
+                   else if(Android_1=='d')STM2Android.printf("dd=(%d)\r\n",dist);
+                   else if(Android_1=='e')
+                   {
+                       d=0;j=0;k=0;//电机转动
+                       wait(10);
+                       d=1;j=1;k=1;//电机停止转动
+                   }
+               }
+        */    
+      /*      wait(2);
+            STM2Android.scanf("%s",&flag_Android);//得到上位机传来的begin
+
+         if(strcmp(flag_Android,flag_Android_1)==0)
+         {
+            wait(1);                                                     
+            if ((red_value1>green_value1)&&(red_value1>blue_value1))     //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("a3");//red+3
+                  goal_1=3;
+              }
+           else if ((green_value1>red_value1)&&(green_value1>blue_value1))     //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("a2");//green+2
+                  goal_1=2;
+              }
+          else if ((blue_value1>green_value1)&&(blue_value1>red_value1))     //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("a1");//blue+1
+                  goal_1=1;
+              }
+            wait(1);
+            d=0;j=0;k=0;//电机转动
+            wait(5);
+            d=1;j=1;k=1;//电机停止转动
+            wait(1);
+            
+            if ((red_value2>green_value2)&&(red_value2>blue_value2))     //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("b3");//red+3
+                  goal_2=3;
+              }
+          else  if ((green_value2>red_value2)&&(green_value2>blue_value2))     //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("b2");//green+2
+                  goal_2=2;
+              }
+          else if ((blue_value2>green_value2)&&(blue_value2>red_value2))   //shifoukeyiyizhichuanzhi???????????????
+              {
+                  STM2Android.printf("b1");//blue+1
+                  goal_2=1;
+              }     
+              wait(1);
+              
+           if(goal_1>goal_2)
+            {
+                  STM2Android.printf("c1");//ren win
+                  if(kehu==0)
+                   {
+                       d=0;
+                       j=0;
+                       k=1;
+                       wait(5);
+                       d=1;
+                       j=1;
+                       k=1;
+                   }
+                   else if(kehu==1)
+                   {
+                       d=0;
+                       j=1;
+                       k=0;
+                   }
+                   else if(kehu==2)
+                   {
+                       d=1;
+                       j=0;
+                       k=0;
+                   }
+            }
+            
+            //
+            
+          else if(goal_1<=goal_2) 
+                  STM2Android.printf("c0");//robot win       
+         
+          // 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);     
+        }//小if语句判断结束                          */
+     }//大if语句判断结束
+     
+     
+     
+        // else if(strcmp(Android_0,flag_Android_3)==0)//维护模式
+//               {
+//                   STM2Android.scanf("%c",&Android_1);
+//                   if(Android_1=='c')STM2Android.printf("dClear1(%d),Red1(%d),Green1(%d),Blue1(%d)\r\n", clear_value1, red_value1, green_value1, blue_value1);
+//                   else if(Android_1=='d')STM2Android.printf("dd=(%d)\r\n",dist);
+//                   else if(Android_1=='e')
+//                   {
+//                       d=0;j=0;k=0;//电机转动
+//                       wait(10);
+//                       d=1;j=1;k=1;//电机停止转动
+//                   }
+//               }
+ }//while循环结束
+
+}
\ No newline at end of file
diff -r 000000000000 -r ae94058fb59a mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon May 13 09:07:38 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file