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秒
}
}
Arduino对智能机器人进行简单编程的更多相关文章
- 开源IDE CodeBlocks的下载安装、配置、简单编程
如果没有集成开发环境(IDE),在linux下开发程序将非常繁琐,IDE是指将编辑.编译.调试等功能集成在一个桌面环境上,这样就大大方便了用户.IDE一般包括代码编辑器.编译器.调试器和图形界面用户工 ...
- CodeBlocks的下载安装、配置、简单编程
CodeBlocks的下载安装.配置.简单编程 IDE简介 http://www.baidu.com/s?wd=codeblocks ,这里只是介绍Windows平台下的IDE环境配置. CodeBl ...
- FrameBuffer系列 之 简单编程
一.Linux的帧缓冲设备 帧缓冲(framebuffer)是 Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作.这种操作是抽象的 ...
- Linux简单编程学习心得
在Linux环境下简单编程学习心得 linux编程过程 在上周的<信息安全设计基础>的课程学习中学习到了在虚拟的linux环境下简单的编程.学习过程中接触到了vim.gcc和gcd在实验楼 ...
- ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 基础教程总结 ASP.NET Core 基础教程总算是有了个简单 ...
- ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 登录登出 上一章节我们总算完善了注册的功能,而且也添加了一个用户,现 ...
- ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 新增用户 上一章节我们实现了一个注册表单,但也留了一些东西还没完成, ...
- ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 用户注册 上一章节我们终于迁移完了 Identity 的数据,也创建 ...
- ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 迁移数据 上一章节中我们配置了 ...
随机推荐
- 简单的MISC,writerup
(Tips:此题是我自己出给新生写的题目) 解压压缩包,发现两个文件,一个压缩包一个图片 尝试解压,发现有密码,正常思路及密码被藏在了图片里 把图片拉进010editor,无发现,再拉进stegsol ...
- ICCV2021 | Swin Transformer: 使用移位窗口的分层视觉Transformer
前言 本文解读的论文是ICCV2021中的最佳论文,在短短几个月内,google scholar上有388引用次数,github上有6.1k star. 本文来自公众号CV技术指南的论文分享系 ...
- Java 中的监控与管理原理概述
点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 程序猿阿朗博客 已经收录,有很多知识点和系列文章. 当前 ...
- JSOI(联合省选)2021 划水记
流水账. Day 0 18:10 去本部拿准考证,结果发现已经没有人了./ruo 敲了几份板子,很早就去睡觉了. Day 1 7:30 到 NFLS 拿到准考证,几乎没有人来.于是做起了政治作业. 然 ...
- mysql-彻底删除方法
一.如果是使用yum安装的mysql,使用如下命令进行卸载(不能确定使用何种方式安装的mysql情况下,按后续步骤一一进行处理即可): yum remove mysql mysql-server my ...
- rsync实现windows和windows之间的数据同步
一:环境 1.同步对象:测试数据 2.服务端:Windows Server 2008 R2 3.客户端:Windows7 旗舰版64位 4.服务端rsync版本:cwRsyncServer_4.1.0 ...
- find命令常见用法
1. find linux中,find命令一般用来按特定条件查找文件,生产环境中也常用其来过滤文件 名称 find - 搜索目录层次结构中的文件 格式 find [目录] {[选项] [参数]}... ...
- char*,string,char a[], const char *,之间的转换
1. const char* 和string 转换 (1) const char*转换为 string,直接赋值即可. EX: const char* tmp = "tsinghu ...
- 微信小程序调试bug-日程计划类
首先嘤嘤嘤一下,破bug,改了我一天,摔(′д` )-彡-彡 写的个微信小程序 逻辑如下,正常的功能是,我可以新建,修改,查询(按筛选条件),删除某个日程信息,后面贴个页面,我的bug出现就很搞笑了, ...
- 【模板】无源汇有上下界可行流(网络流)/ZOJ2314
先导知识 网络最大流 题目链接 https://vjudge.net/problem/ZOJ-2314 题目大意 多组数据,第一行为数据组数 \(T\). 对于每一组数据,第一行为 \(n,m\) 表 ...