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 迁移数据 上一章节中我们配置了 ...
随机推荐
- 洛谷 P3239 [HNOI2015]亚瑟王(期望+dp)
题面传送门 感觉是道挺好的题,可惜当时没写题解来着的? 根据期望的线性公式,我们求出每个卡牌被发动的概率 \(q_i\),然后 \[ans=\sum\limits_{i=1}^np_id_i \] 于 ...
- 生成&添加 SSH公钥
生成&添加 SSH公钥 生成 打开 Terminal(终端) 生成命令 ssh-keygen -t ed25519 -C "your_email@example.com" ...
- 【基因组组装】HiC挂载软件以及如何用Juice_box手工纠错?
目录 1.常用HiC挂载软件 2. Juice_box手工纠错 1.常用HiC挂载软件 ALLHiC 张兴坦老师专为多倍体和高杂合度物种基因组挂载开发.如果是复杂基因组,肯定是首选.对于简单基因组,我 ...
- linux安全性增加
账户安全问题 Linux 默认会安装很多不必要的用户和用户组,如果不需要某些用户或者组,就要立即删除它,因为账户越多,系统就越不安全,很可能被黑客利用,进而威胁到服务器的安全. Linux系统中可以 ...
- 42-Remove Nth Node From End of List
Remove Nth Node From End of List My Submissions QuestionEditorial Solution Total Accepted: 106592 To ...
- 在Linux下搭建nRF51822的开发烧写环境(makefile版)
http://www.qingpingshan.com/m/view.php?aid=394836
- LeetCode:旋转图像
题目描述 给定一个 n × n 的二维矩阵 matrix 表示一个图像.请你将图像顺时针旋转 90 度. 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要 使用另一个矩阵来旋转图 ...
- Shell 打印文件的最后5行
目录 Shell 打印文件的最后5行 题解-awk 题解-tail Shell 打印文件的最后5行 经常查看日志的时候,会从文件的末尾往前查看,于是请你写一个 bash脚本以输出一个文本文件 nowc ...
- 学习java 7.24
学习内容: Swing编程 由于Swing的所有组件完全采用Java 实现,不再调用本地平台的GUl,所以导致Swing图形界面的显示速度要比AWT图形界面的显示速度慢一些,但相对于快速发展的硬件设施 ...
- UBI 文件系统之分区挂载
Linux 系统中有关mtd和ubi的接口:(1) cat /proc/mtd:可以看到当前系统的各个mtd情况,(2) cat /proc/partitions: 分区信息,有上面的类似(3) ca ...