Arduino对智能机器人进行简单编程

Arduino对智能机器人进行简单编程

#include "ESP8266.h"
#define TRIG_PIN 5
#define ECHO_PIN A5
#define BEEP_PIN 12
#define BEEP_ON LOW
#define BEEP_OFF HIGH
#define CH_PD 8
#define OK_BEEP_TIME 200
#define ERROR_BEEP_TIME 1000
ESP8266 wifi = ESP8266(Serial);//串口

void check_esp8266_cmd(){
  char buff[10];
  if(wifi.available()>0&&wifi.read(buff,10)>0){
    switch(buff[0]){
      case 'w' :
      Serial.print("$DGT:2-7,0!");
      break;
      case 's' :
      Serial.print("$DGT:8-13,0!");
      break;
      case 'a':
      Serial.print("$DGT:14-17,0!");
      break;
      case 'd' :
      Serial.print("$DGT:17-20,0!");
      break;
      
      
    }
  }
}//wifi控制

void chk_status()
{
  int x,y;
  x=analogRead(A7);
  y=analogRead(A6);
  Serial.print("x=");
  Serial.print(x);
  Serial.print(",y=");
  Serial.println(y);
  if(x>310&&x<320&&y>320&&y<332)
  {
    Serial.print("$DGT:33-35,0!");
  }//前倒爬起
  if(x>330&&x<342&&y>320&&y<335)
  {
    Serial.print("$DGT:36-38,0!");
  }//后倒爬起
  if(x>325&&x<335&&y>315&&y<320)
  {
    Serial.print("$DGT:45-50,0!");
  }//左侧倒爬起
  if(x>325&&x<335&&y>340&&y<350)
  {
    Serial.print("$DGT:51-55,0!");
  }//右侧倒爬起
 delay(2000);
}//姿态判断

void chk_distance()
{
  unsigned long d=0;
  int i;
  for(i=0;i<=5;i++)
  {
  digitalWrite(TRIG_PIN,LOW);
  digitalWrite(TRIG_PIN,HIGH);
  delayMicroseconds(12);
  digitalWrite(TRIG_PIN,LOW);//脉冲信号
  d+=pulseIn(ECHO_PIN,HIGH)/58;
  delay(80);
  }
  d/=5;
  Serial.print("d=");
  Serial.println(d);
  if(d<50){
    beep(100);
    Serial.println("$DGS:2!");
  }
}
void beep(int t){
  digitalWrite(BEEP_PIN,BEEP_ON);
  delay(t);
  digitalWrite(BEEP_PIN,BEEP_OFF);
}
//蜂鸣器
void chk_result(int s)
{
  if(s==ESP8266_COMMAND_OK)
  {
    beep(OK_BEEP_TIME);
  }
  else
  {
    beep(ERROR_BEEP_TIME);
  }
}
void init_esp8266()
{
  pinMode(CH_PD,OUTPUT);
  digitalWrite(CH_PD,HIGH);
  delay(500);
   auto s = wifi.test();
  chk_result(s);
  s = wifi.setMode(ESP8266_WIFI_ACCESSPOINT);
  s = wifi.setAPConfiguration("esp8266", "12345678", 10,ESP8266_ENCRYPTION_WPA_WPA2_PSK);//wifi 名称 密码
  s = wifi.setMultipleConnections(true);
  s = wifi.createServer(5000);
}
void setup() {
  // put your setup code here, to run once:
  pinMode(BEEP_PIN,OUTPUT);
  pinMode(TRIG_PIN,OUTPUT);
  pinMode(ECHO_PIN,INPUT);
  digitalWrite(BEEP_PIN,BEEP_OFF);
  Serial.begin(115200);//启动窗口
  while(!Serial);//检测是否连接成功
  Serial.println("Hello robot!");
  init_esp8266();  
}
int loopcnt;
void loop(){
  check_esp8266_cmd();
  loopcnt++;
  if(loopcnt==10)
  {
    loopcnt=0;
  chk_status();//延迟2秒
  }
  
  
}
原文地址:https://www.cnblogs.com/xgcl/p/14208676.html