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 迁移数据 上一章节中我们配置了 ...
随机推荐
- 一文带你吃透CLR垃圾回收机制
前言 今天我们来共同学习一下CLR的垃圾回收机制,这对我们写出健壮性的代码很有帮助,也许有人会认为多此一举,认为垃圾回收交给CLR就行,我不用关心这个,诚然,大多数情况下是这样的,但是,我们今天讨论的 ...
- 爬虫进阶篇(一)scrapy
1.本教程默认认为您已经像我一样是个半吊子爬虫程序员 2.学习爬虫首先要懂得request,json,bs4,re,xpath,pymysql,random,time,文件相关,理解网络编程基本原理, ...
- Codeforces 434E - Furukawa Nagisa's Tree(三元环+点分治)
Codeforces 题面传送门 & 洛谷题面传送门 场号 hopping,刚好是我的学号(指 round 的编号) 注:下文中分别用 \(X,Y,K\) 代替题目中的 \(x,y,k\) 注 ...
- MongoDB 安装/启动/基本操作命令
1.MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系型数据库和非关系数据库之间的 ...
- 【模板】滑动窗口最值(单调队列)/洛谷P1886
题目链接 https://www.luogu.com.cn/problem/P1886 题目大意 有一个长为 \(n\) 的序列 \(a\) ,以及一个大小为 \(k\) 的窗口.现在这个从左边开始向 ...
- ab命令执行压力测试
ab是Apache超文本传输协议(HTTP)的性能测试工具:设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求:ab不仅仅能进行基于apache服务 ...
- 学习java的第二十八天
一.今日收获 1.java完全学习手册第三章算法的3.2排序,比较了跟c语言排序上的不同 2.观看哔哩哔哩上的教学视频 二.今日问题 1.快速排序法的运行调试多次 2.哔哩哔哩教学视频的一些术语不太理 ...
- 日常Java 2021/9/29
StringBuffer方法 public StringBuffer append(String s) 将指定的字符串追加到此字符序列. public StringBuffer reverse() 将 ...
- Linux学习 - 分区与文件系统
一.分区类型 1 主分区:总共最多只能分四个 2 扩展分区:只能有一个(主分区中的一个分区),不能存储数据和格式化,必须再划分成逻辑分区 才 ...
- spring注解-属性
一.@Value 基本数值 可以写SpEL: #{} 可以写${}取出配置文件[properties]中的值(在运行环境变量里面的值) @Value("张三") private S ...