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秒
} }

Arduino对智能机器人进行简单编程的更多相关文章

  1. 开源IDE CodeBlocks的下载安装、配置、简单编程

    如果没有集成开发环境(IDE),在linux下开发程序将非常繁琐,IDE是指将编辑.编译.调试等功能集成在一个桌面环境上,这样就大大方便了用户.IDE一般包括代码编辑器.编译器.调试器和图形界面用户工 ...

  2. CodeBlocks的下载安装、配置、简单编程

    CodeBlocks的下载安装.配置.简单编程 IDE简介 http://www.baidu.com/s?wd=codeblocks ,这里只是介绍Windows平台下的IDE环境配置. CodeBl ...

  3. FrameBuffer系列 之 简单编程

    一.Linux的帧缓冲设备 帧缓冲(framebuffer)是 Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作.这种操作是抽象的 ...

  4. Linux简单编程学习心得

    在Linux环境下简单编程学习心得 linux编程过程 在上周的<信息安全设计基础>的课程学习中学习到了在虚拟的linux环境下简单的编程.学习过程中接触到了vim.gcc和gcd在实验楼 ...

  5. ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 基础教程总结 ASP.NET Core 基础教程总算是有了个简单 ...

  6. ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 登录登出 上一章节我们总算完善了注册的功能,而且也添加了一个用户,现 ...

  7. ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 新增用户 上一章节我们实现了一个注册表单,但也留了一些东西还没完成, ...

  8. ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 用户注册 上一章节我们终于迁移完了 Identity 的数据,也创建 ...

  9. ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 迁移数据 上一章节中我们配置了 ...

随机推荐

  1. 简单的MISC,writerup

    (Tips:此题是我自己出给新生写的题目) 解压压缩包,发现两个文件,一个压缩包一个图片 尝试解压,发现有密码,正常思路及密码被藏在了图片里 把图片拉进010editor,无发现,再拉进stegsol ...

  2. ICCV2021 | Swin Transformer: 使用移位窗口的分层视觉Transformer

    ​  前言  本文解读的论文是ICCV2021中的最佳论文,在短短几个月内,google scholar上有388引用次数,github上有6.1k star. 本文来自公众号CV技术指南的论文分享系 ...

  3. Java 中的监控与管理原理概述

    点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 程序猿阿朗博客 已经收录,有很多知识点和系列文章. 当前 ...

  4. JSOI(联合省选)2021 划水记

    流水账. Day 0 18:10 去本部拿准考证,结果发现已经没有人了./ruo 敲了几份板子,很早就去睡觉了. Day 1 7:30 到 NFLS 拿到准考证,几乎没有人来.于是做起了政治作业. 然 ...

  5. mysql-彻底删除方法

    一.如果是使用yum安装的mysql,使用如下命令进行卸载(不能确定使用何种方式安装的mysql情况下,按后续步骤一一进行处理即可): yum remove mysql mysql-server my ...

  6. rsync实现windows和windows之间的数据同步

    一:环境 1.同步对象:测试数据 2.服务端:Windows Server 2008 R2 3.客户端:Windows7 旗舰版64位 4.服务端rsync版本:cwRsyncServer_4.1.0 ...

  7. find命令常见用法

    1. find linux中,find命令一般用来按特定条件查找文件,生产环境中也常用其来过滤文件 名称 find - 搜索目录层次结构中的文件 格式 find [目录] {[选项] [参数]}... ...

  8. char*,string,char a[], const char *,之间的转换

    1. const char* 和string 转换 (1) const char*转换为 string,直接赋值即可.      EX: const char* tmp = "tsinghu ...

  9. 微信小程序调试bug-日程计划类

    首先嘤嘤嘤一下,破bug,改了我一天,摔(′д` )-彡-彡 写的个微信小程序 逻辑如下,正常的功能是,我可以新建,修改,查询(按筛选条件),删除某个日程信息,后面贴个页面,我的bug出现就很搞笑了, ...

  10. 【模板】无源汇有上下界可行流(网络流)/ZOJ2314

    先导知识 网络最大流 题目链接 https://vjudge.net/problem/ZOJ-2314 题目大意 多组数据,第一行为数据组数 \(T\). 对于每一组数据,第一行为 \(n,m\) 表 ...