• 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秒
      }
      
      
    }
    
  • 相关阅读:
    ReentrantLock类详解
    Linux中 docker安装
    canvas画图练习教程
    Axure 9 使用笔记
    设计模式9—工厂模式【创建型】
    Docker 快速部署 MySQL
    Laravel Sanctum SPA cookie&session 验证实践
    地图地区生成随机点
    Laravel Class 'DoctrineDBALDriverPDOMySqlDriver' not found
    LightHouse 自定义参数指令 (Argument Directives)
  • 原文地址:https://www.cnblogs.com/xgcl/p/14208676.html
Copyright © 2020-2023  润新知