野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9068|回复: 3

关于巡检机器人的主要代码分享

[复制链接]
发表于 2019-6-13 16:00:24 | 显示全部楼层 |阅读模式

我的机器人实现的功能有:自主充电,自动巡检,加减速等,通过wifi与上位机进行交互实现远程控制和数据上传等功能

主要的代码如下:

#include "test.h"
#include "bsp_esp8266.h"
#include "bsp_SysTick.h"
#include <stdio.h>  
#include <stdlib.h>
#include <string.h>  
#include <stdbool.h>
#include "bsp_dht11.h"
#include "bsp_TiMbase.h"
#include "bsp_led.h"
#include "stdint.h"
#include "bsp_GeneralTim.h"
#define PI  3.14
#define C PI*7
typedef  char BYTE;
extern uint32_t time,time1;
extern uint16_t flag,flag1;
extern   int32_t j,s,s1,s2 ;
volatile uint8_t ucTcpClosedFlag = 0;
extern   void Delay(__IO uint32_t nCount);
extern float ADC_ConvertedValueLocal;
extern __IO uint16_t ADC_ConvertedValue;
//char cStr [ 1500 ] = { 0 };
//&para;¨&Ograve;&aring;·&cent;&Euml;&Iacute;&ordm;&macr;&Ecirc;&yacute;
//char* DT_Send_User();
extern uint32_t circle,cw;

void dt_send(uint16_t a,uint8_t b);//&sup2;&Icirc;&Ecirc;&yacute;a&Ouml;&cedil;&micro;&Auml;&Ecirc;&Ccedil;&Ecirc;&yacute;&frac34;&Yacute;&pound;&not;&sup2;&Icirc;&Ecirc;&yacute;b&Ouml;&cedil;&micro;&Auml;&Ecirc;&Ccedil;&Ouml;&cedil;&Aacute;&icirc;
void dt_send1(uint16_t a,uint8_t b);
void dt_send2(uint16_t a,uint8_t b);
//char* s_str(char*p_str,uint8_t p_nlen,char*p_str1);
//void s_char(int p_num,char*p_ch);
char data_send[100] ={0};
uint16_t a_a;//&para;¨&Ograve;&aring;&Ecirc;&yacute;&frac34;&Yacute;&Eacute;&Iuml;&acute;&laquo;
int sudu ( uint16_t b_a);
int sudu ( uint16_t b_a)// &frac14;&AElig;&Euml;&atilde;&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;
{
  switch(b_a)
     {
      case 0 :  //&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;
       a_a=25;
     // dt_send1(a_a,2);
      break;
      case 1 :  //&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;
       a_a=20;
      //dt_send1(a_a,2);
      break;
      case 2 :  //&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;
       a_a=15;
      ///dt_send1(a_a,2);
      break;
      case 3 :  //&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;
       a_a=10;
      //dt_send1(a_a,2);
      break;
      
      default:
       a_a=5;
     // dt_send1(a_a,2);
      break;
      
     }
return a_a;
}

int weizi(uint32_t a);
int weizi(uint32_t a)     //&frac14;&AElig;&Euml;&atilde;&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;&ordm;&macr;&Ecirc;&yacute;
{
  if(a<80000000)//&Ograve;&raquo;&cedil;&ouml;&Iuml;&THORN;&para;¨
  {
   if(cw==1&&flag==1)
   {
    s1=(s1)+((a/2)/800)*C;
   
   }
   else if(cw==0&&flag==1)
   {
    s2 =  (-(C*a))+(s2);
   
   }
   else
   {
    return s;
   }
   s=s1+s2;

   return s;
  }
  else
  {
   circle=0;
  
   return s;
  }
}


void ESP8266_StaTcpClient_UnvarnishTest ( void )
{
uint8_t ucStatus;

char cStr [ 100 ] = { 0 };
  
  printf ( "\r\n&Otilde;&yacute;&Ocirc;&Uacute;&Aring;&auml;&Ouml;&Atilde; ESP8266 ......\r\n" );

macESP8266_CH_ENABLE();

ESP8266_AT_Test ();

ESP8266_Net_Mode_Choose ( STA );

  while ( ! ESP8266_JoinAP ( macUser_ESP8266_ApSsid, macUser_ESP8266_ApPwd ) );

ESP8266_Enable_MultipleId ( DISABLE );

while ( ! ESP8266_Link_Server ( enumTCP, macUser_ESP8266_TcpServer_IP, macUser_ESP8266_TcpServer_Port, Single_ID_0 ) );

while ( ! ESP8266_UnvarnishSend () );

printf ( "\r\n&Aring;&auml;&Ouml;&Atilde; ESP8266 &Iacute;ê±&Iuml;\r\n" );

   a_a=1;
  dt_send(a_a,0);
   ESP8266_SendString ( ENABLE, cStr,0 , Single_ID_0 );

while ( 1 )
{
  char*pRecStr =NULL;
   
    pRecStr = ESP8266_ReceiveString( ENABLE);
  
    if(*(pRecStr+1)==0x0A)
   {
    if(*(pRecStr+2)==01&&flag1 ==0&&flag==0)//×&Ocirc;&para;&macr;&Ntilde;&sup2;&frac14;ìflag1 ==1
     {
      time =0;
      flag1 = 1;//&Aring;&ETH;&para;&Iuml;&Ecirc;&Ccedil;·&ntilde;&Ecirc;&Ccedil;&Ocirc;&Uacute;&Ocirc;&Euml;&para;&macr;&raquo;&sup1;&Ecirc;&Ccedil;&Ocirc;&Uacute;&Iacute;&pound;&Ouml;&sup1;  1±í&Ecirc;&frac34;&Ocirc;&Euml;&para;&macr;  0±í&Ecirc;&frac34;&Iacute;&pound;&Ouml;&sup1;
      Delay(6666);
      if(flag1==1)
      {
       a_a=3;
       TIM_Cmd(BASIC_TIM, ENABLE);
        dt_send(a_a,1);
      }
     }
         else if(*(pRecStr+2)==0x02&&flag1 ==1)//&Egrave;&Euml;&sup1;¤&Ntilde;&sup2;&frac14;ìflag1 ==0
     {
      TIM_Cmd(BASIC_TIM, DISABLE);
      time =0;
      printf(cStr,"&Otilde;&yacute;&Ocirc;&Uacute;&Ccedil;&ETH;&raquo;&raquo;&Egrave;&Euml;&sup1;¤&Auml;&pound;&Ecirc;&frac12;");
      j=4;
      flag1 = 0;
      Delay(6666);
      a_a=2;
           dt_send(a_a,2);
     }
          else if(*(pRecStr+2)==0x03&&flag1 ==0)
     {
      TIM_Cmd(BASIC_TIM, ENABLE);
      
      flag=1;
      printf(cStr,"&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;5cm/s&pound;&not;&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;%d&Atilde;×\n",s);
      a_a=0x0001;
      dt_send(a_a,3);//a_a±í&Ecirc;&frac34;&micro;&Auml;&Ecirc;&Ccedil;&Ecirc;&yacute;&frac34;&Yacute;  3±í&Ecirc;&frac34;&micro;&Auml;&Ecirc;&Ccedil;&Ouml;&cedil;&Aacute;&icirc;
      
     }
     else if(*(pRecStr+2)==0x04&&flag1 ==0&&flag==1)//&frac14;&Oacute;&Euml;&Ugrave;&Ouml;&cedil;&Aacute;&icirc;
     {
      j--;//j±í&Ecirc;&frac34;&Oacute;&euml;&Euml;&Ugrave;&para;&Egrave;&Iuml;à&para;&Ocirc;&Oacute;&brvbar;&pound;¨×&Ocirc;&frac14;&ordm;&Eacute;è&para;¨&Euml;ü&micro;&Auml;&Ouml;&micro;&pound;&copy;
      if(j==3)
      {
       time=0;
       printf(cStr,"&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;10cm/s&pound;&not;&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;%d&Atilde;×\n",s);
       a_a=2;
       dt_send(a_a,4);//&Iuml;&Acirc;&Icirc;&raquo;&raquo;ú&micro;&Auml;&raquo;&Oslash;·&cent;&Ecirc;&yacute;&frac34;&Yacute;
      }
      if(j==2)
      {
       time=0;
       printf(cStr,"&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;15cm/s&pound;&not;&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;%d&Atilde;×\n",s);
       a_a=3;
       dt_send(a_a,4);
      }
      if(j==1)
      {
       time=0;
       printf(cStr,"&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;20cm/s&pound;&not;&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;%d&Atilde;×\n",s);
       a_a=4;
       dt_send(a_a,4);
      }
      if(j<=0)
      {
       j=0;
       time=0;
       printf(cStr,"&micro;±&Ccedil;°×&icirc;&acute;ó&Euml;&Ugrave;&para;&Egrave;25cm/s&pound;&not;&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;%d&Atilde;×\n",s);
       a_a=5;
       dt_send(a_a,4);
      }
     }
     else if(*(pRecStr+2)==0x05&&flag1 ==0&&flag==1)//&frac14;&otilde;&Euml;&Ugrave;&Ouml;&cedil;&Aacute;&icirc;
     {
      j++;
      if(j==3)
      {
       time=0;
       printf(cStr,"&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;10cm/s&pound;&not;&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;%d&Atilde;×\n",s);
       a_a=2;
       dt_send(a_a,5);
      }
      if(j==2)
      {
       time=0;
       printf(cStr,"&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;15cm/s&pound;&not;&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;%d&Atilde;×\n",s);
       a_a=3;
       dt_send(a_a,5);
      }
      if(j==1)
      {
       time=0;
       printf(cStr,"&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;20cm/s&pound;&not;&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;%d&Atilde;×\n",s);
       a_a=4;
       dt_send(a_a,5);
      }
      if(j>=4)
      {
       j=4;
       time=0;
       printf(cStr,"&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;5cm/s&pound;&not;&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;%d&Atilde;×\n",s);
       a_a=1;
       dt_send(a_a,5);
      }
     }
     else if(*(pRecStr+2)==0x06&&flag1 ==0&&flag==1)//&Otilde;&yacute;&Iuml;ò&Ouml;&cedil;&Aacute;&icirc;
     {
      cw=1;
       Delay(6666);
       LED2_OFF;
       a_a=1;
       dt_send(a_a,6);
     }
     else if(*(pRecStr+2)==0x07&&flag1 ==0&&flag==1)//·&acute;&Iuml;ò&Ouml;&cedil;&Aacute;&icirc;
     {
      cw=0;
       Delay(6666);
       LED2_ON;
       a_a=2;
       dt_send(a_a,7);
     }
     else if(*(pRecStr+2)==0x08&&flag1 ==0&&flag==1)
     {
      flag=0;
      TIM_Cmd(BASIC_TIM, DISABLE);
      printf(cStr,"&micro;±&Ccedil;°&micro;&ccedil;&raquo;ú&Ograve;&Ntilde;&Iacute;&pound;&Ouml;&sup1;&Ocirc;&Euml;&ETH;&ETH;&pound;&not;&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;%d&Atilde;×\n",s);
      a_a=1;
      dt_send(a_a,8);
      
     }
     else
     {
      sprintf(cStr,"&Ouml;&cedil;&Aacute;&icirc;&Ecirc;&auml;&sup3;&ouml;&Oacute;&ETH;&Icirc;ó \n   ");
      ESP8266_SendString ( ENABLE, cStr,0 , Single_ID_0 );
     }
   }
   
   
   //×&acute;&Igrave;&not;&Ouml;&cedil;&Aacute;&icirc;&Iuml;&Acirc;·&cent;&sup1;&brvbar;&Auml;&Uuml;&Euml;&micro;&Atilde;÷
   
   else if(*(pRecStr+1)==0x0B)//×&acute;&Igrave;&not;&Ouml;&cedil;&Aacute;&icirc;
   {
    if(*(pRecStr+2)==0x01)//&Ouml;&Ccedil;&Auml;&Uuml;&Egrave;&Euml;&sup1;¤&Auml;&pound;&Ecirc;&frac12;
    {
     if(flag1==0)//&Egrave;&Euml;&sup1;¤
     {
       a_a=2;
      dt_send1(a_a,1);
     }
     if(flag1==1)     //&Ouml;&Ccedil;&Auml;&Uuml;
     {
       a_a=3;
      dt_send1(a_a,1);
     }
    }
    else if(*(pRecStr+2)==0x02)
    {
     switch(j)
     {
      case 0 :  //&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;
       a_a=25;
      dt_send1(a_a,2);
      break;
      case 1 :  //&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;
       a_a=20;
      dt_send1(a_a,2);
      break;
      case 2 :  //&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;
       a_a=15;
      dt_send1(a_a,2);
      break;
      case 3 :  //&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;
       a_a=10;
      dt_send1(a_a,2);
      break;
      
      default:
       a_a=5;
      dt_send1(a_a,2);
      break;
      
     }
     
    }

    else if(*(pRecStr+2)==0x03)//&Eacute;è±&cedil;&Ecirc;&Ccedil;·&ntilde;&Otilde;&yacute;&Ocirc;&Uacute;&Ocirc;&Euml;&ETH;&ETH;      
    {
     if(flag==1)           //&Ocirc;&Euml;&ETH;&ETH;×&acute;&Igrave;&not;
     {
      a_a=0;
      dt_send1(a_a,3);
     }
     else                   //&Iacute;&pound;&Ouml;&sup1;×&acute;&Igrave;&not;
     {
      a_a=1;
      dt_send1(a_a,3);
     }
    }
   
    else if(*(pRecStr+2)==0x04)//&micro;±&Ccedil;°&Icirc;&raquo;&Ouml;&Atilde;
    {
     if(flag==1)
     {
      a_a=weizi(circle)/100;
     dt_send1(a_a,4);
     }
     else
     {
      a_a=weizi(circle);
      dt_send1(a_a,4);
     }
    }
    else if(*(pRecStr+2)==0x05)//&Otilde;&yacute;·&acute;×&ordf;           &acute;&yacute;&ETH;&acute;&sup3;&Igrave;&ETH;ò            
    {
     if(cw==1)              //&Otilde;&yacute;&acute;&laquo;
     {
      a_a=1;
      dt_send1(a_a,5);
     }
      else    //·&acute;×&ordf;
     {
      a_a=2;
      dt_send1(a_a,5);
     }

    }
    else if(*(pRecStr+2)==0x06)//&micro;&ccedil;&sup3;&Oslash;&micro;&ccedil;&Aacute;&iquest;&sup2;é&Ntilde;&macr;
    {
     ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*3.3;
   
     
    ESP8266_SendString ( ENABLE, cStr,0 , Single_ID_0 );
    }
    else if(*(pRecStr+2)==0x07)//&acute;&laquo;&cedil;&ETH;&AElig;÷&Ecirc;&yacute;&frac34;&Yacute;
    {
      a_a=0;
      dt_send1(a_a,7);
    }
    else
    {
     sprintf(cStr,"&Ouml;&cedil;&Aacute;&icirc;&Oacute;&ETH;&Icirc;ó");
    //a_a=2;
    //dt_send(a_a,8);
    ESP8266_SendString ( ENABLE, cStr, 0, Single_ID_0 );
    }
   }
  
   else
   {
    sprintf(cStr,"&Ouml;&cedil;&Aacute;&icirc;&Oacute;&ETH;&Icirc;ó");
    a_a=2;
    dt_send(a_a,8);
    ESP8266_SendString ( ENABLE, cStr, 0, Single_ID_0 );
    //Delay_ms ( 10000 );
  
   
   }
   
   //Delay_ms ( 100 );
  

   ESP8266_SendString ( ENABLE, cStr, 0, Single_ID_0 );

   //sprintf(cStr,"&micro;±&Ccedil;°&Euml;&Ugrave;&para;&Egrave;");
    // ESP8266_SendString ( ENABLE, cStr, 0, Single_ID_0 );        //·&cent;&Euml;&Iacute;&Ecirc;&yacute;&frac34;&Yacute;
  
  Delay_ms ( 100 );
   
  
  if ( ucTcpClosedFlag )                                             //&frac14;ì&sup2;&acirc;&Ecirc;&Ccedil;·&ntilde;&Ecirc;§&Egrave;&yen;&Aacute;&not;&frac12;&Oacute;
  {
   ESP8266_ExitUnvarnishSend ();                                    //&Iacute;&Euml;&sup3;&ouml;&Iacute;&cedil;&acute;&laquo;&Auml;&pound;&Ecirc;&frac12;
   
   do ucStatus = ESP8266_Get_LinkStatus ();                         //&raquo;&ntilde;&Egrave;&iexcl;&Aacute;&not;&frac12;&Oacute;×&acute;&Igrave;&not;
   while ( ! ucStatus );
   
   if ( ucStatus == 4 )                                             //&Egrave;·&Egrave;&Iuml;&Ecirc;§&Egrave;&yen;&Aacute;&not;&frac12;&Oacute;&ordm;ó&Ouml;&Oslash;&Aacute;&not;
   {
    printf ( "\r\n&Otilde;&yacute;&Ocirc;&Uacute;&Ouml;&Oslash;&Aacute;&not;&Egrave;&Egrave;&micro;&atilde;&ordm;&Iacute;·&thorn;&Icirc;&ntilde;&AElig;÷ ......\r\n" );
   
    while ( ! ESP8266_JoinAP ( macUser_ESP8266_ApSsid, macUser_ESP8266_ApPwd ) );
   
    while ( ! ESP8266_Link_Server ( enumTCP, macUser_ESP8266_TcpServer_IP, macUser_ESP8266_TcpServer_Port, Single_ID_0 ) );
   
    printf ( "\r\n&Ouml;&Oslash;&Aacute;&not;&Egrave;&Egrave;&micro;&atilde;&ordm;&Iacute;·&thorn;&Icirc;&ntilde;&AElig;÷&sup3;&Eacute;&sup1;&brvbar;\r\n" );
      
   }



回复

使用道具 举报

 楼主| 发表于 2019-6-13 16:23:21 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2019-6-13 18:56:39 | 显示全部楼层

老哥,编辑时表情左边是代码输入栏,贴里面比较整齐哦
回复 支持 反对

使用道具 举报

发表于 2019-6-14 07:34:55 | 显示全部楼层
谢谢分享........
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-30 21:42 , Processed in 0.031408 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表