**【整理与体验】 一克拉**
* * * * *
**案例1:超声波测距程序及调试**
步骤:
1接板(如何中接?要练习)
2找代码(如何找?百度或arduino中国在线等)
3定uno板定端口(如何做?打开软件arduino在工具菜单下)
4复制代码到arduino中烧写上传
5测距:(arduino软件右上角有串口监视器,打开就可看到数据)
* * * * *
* * * * *
//超声波测距程序及调试
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
//发一个10ms的高脉冲去触发TrigPin
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //算成厘米
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(1000);
}
### 【说 明】
1、看测试。烧载完成后-打开串口窗口-查看电路正确的接线,模块与着被测物体对着,结果可以看到上图所示的测距距离。
2、重要代码。 pulseIn(EchoPin, HIGH),
此函数是计算EchoPin的高电平时间,先将引脚拉高,开始计时,直到该引脚变为低电平为止,单位为ms,如果超出还没读取到的话,将返回0.
cm = pulseIn(EchoPin, HIGH) / 58.0;可能很多人会问为什么要除以58.0呢,声速是340m/s换算一下就是函数返回的值是ms,1s=1000ms,cm=t/1000*34/2=0.017*t=t/58.8,
所以会有除以58.0.
3、声音要是在真空是什么情况?原来真空下声音是不能传播的,在不同温度和压强下的声速是不一样的。
-----------------------------------------------------------------
* * * * *
#### **案例2:Arduino实验之超声测距+【LCD1602屏显示】**
* * * * *
步骤:
1接板(如何中接?认识UNO板及传感器,要练习)
2找代码(如何找?百度或arduino中国在线等)
3定uno板定端口(如何做?打开软件arduino在工具菜单下)
4复制代码到arduino中
5屏显:
接-板上接LED显示屏(正、负、scl、sda角)
找-找型号找库,调库代码放在setup前,本程序加了3句,调库
setup中加上2句话,Loop中加上5句
6烧写上传
7测距:(arduino软件右上角有串口监视器,打开就可看到数据)
* * * * *
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C mylcd(0x27,16,2); //头三句调库 连屏
const int TrigPin = 2; //发出信号脚
const int EchoPin = 3; //接收信号脚
float cm; //单位
void setup()
{
mylcd.init();
mylcd.backlight(); //共2句 定屏属性
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
//发一个10ms的高脉冲去触发TrigPin
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //算成厘米
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
Serial.print(cm);
Serial.print("cm");
Serial.println();
mylcd.setCursor(0, 0); //光标从这里开始
mylcd.print(cm);
mylcd.setCursor(0, 1); //换行后显示距离
mylcd.print("cm");
mylcd.clear(); //清屏 共5句 开屏-显示-清屏
delay(1000);
}
* * * * *
* * * * *
**案例3:超声波测距程序及调试,+【用LCD1602屏显示+报警】**
* * * * *
步骤:
1接板(如何中接?认识UNO板及传感器,要练习)
2找代码(如何找?百度或arduino中国在线等)
3定uno板定端口(如何做?打开软件arduino在工具菜单下)
4复制代码到arduino中
5屏显:
接-板上接LED显示屏(正、负、scl、sda角)
找-找型号找库,调库代码放在setup前,本程序加了3句,调库
setup中加上2句话,Loop中加上5句
6米斯奇:加逻辑,复制到arduino中修改
7烧写上传
8测距:(arduino软件右上角有串口监视器,打开就可看到数据)
* * * * *
//超声波测距程序及调试,【用LCD1602屏显示+报警】
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C mylcd(0x27,16,2);
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
pinMode(11, OUTPUT); //D11口设为报警口
mylcd.init();
mylcd.backlight();
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
//发一个10ms的高脉冲去触发TrigPin
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //算成厘米
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
Serial.print(cm);
Serial.print("cm");
Serial.println();
if (cm >= 30.00) { //大于30厘米就报警
digitalWrite(11,HIGH);
} else {
digitalWrite(11,LOW);
}
mylcd.setCursor(0, 0);
mylcd.print(cm);
mylcd.setCursor(0, 1);
mylcd.print("cm");
delay(1000);
mylcd.clear();
}
* * * * *
* * * * *
**案例4:超声波测距程序及调试,【用LCD1602屏显示+区块报警+Mixly助手】**
* * * * *
步骤:
1接板(如何中接?接泡沫板、接超声波、接LED屏、接蓝牙注意收发要反着接)
2定uno板.定端口(如何做?打开软件arduino在工具菜单下)
3找-找型号找库,调库代码放在setup前,本程序加了3句,调库 setup中加上2句话,Loop中加上5句
4复制下面代码(复制到arduinoIDE中)
5加逻辑,米斯奇中做并把代码复制到arduino中修改
6烧写上传,先用右上角端口监视器看一下
7测距:(打开就可看到数据)
8**控制手机**。手机appinventor:先查看蓝牙是否接到板,接好后,在App中编程,把组件全联起来。如何修改蓝牙名称?
* * * * *
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C mylcd(0x27,16,2);
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
pinMode(11, OUTPUT); //D11口设为报警口
mylcd.init();
mylcd.backlight();
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
//发一个10ms的高脉冲去触发TrigPin
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
//下面两句是关键函数
cm = pulseIn(EchoPin, HIGH) / 58.0; //算成厘米
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
if (cm> 50) {
Serial.print(cm);
Serial.print("安全"); //串口输出 中英文都可以
Serial.println();
mylcd.setCursor(0, 0);
mylcd.print(cm);
mylcd.setCursor(0, 1);
mylcd.print("Security"); //LED屏显只认英文
delay(2000);
mylcd.clear();
}
if (cm < 50 && cm > 30) {
Serial.print(cm);
Serial.print("正常");
Serial.println();
mylcd.setCursor(0, 0);
mylcd.print(cm);
mylcd.setCursor(0, 1);
mylcd.print("Normal");
delay(2000);
mylcd.clear();
}
if (cm < 30) {
Serial.print(cm);
Serial.print("危险");
Serial.println();
mylcd.setCursor(0, 0);
mylcd.print(cm);
mylcd.setCursor(0, 1);
mylcd.print("Danger");
delay(2000);
mylcd.clear();
}
}
* * * * *
* * * * *
**案例5:超声波测距程序及调试
【用LCD1602屏显示+区块报警(Mixly助手)+控制手机】**
步骤:
1接板(如何中接?接泡沫板、接超声波、接LED屏、接蓝牙注意收发要反着接)
2定uno板.定端口(如何做?打开软件arduino在工具菜单下)
3找-找型号找库,调库代码放在setup前,本程序加了3句,调库 setup中加上2句话,Loop中加上5句
4复制下面代码(复制到arduinoIDE中)
5加逻辑,米斯奇中做并把代码复制到arduino中修改
6烧写上传,先用右上角端口监视器看一下
7测距:(打开就可看到数据)
8**控制手机**。手机appinventor:先查看蓝牙是否接到板,接好后,在App中编程,把组件全联起来。
**如何修改蓝牙名称?**
* * * * *
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C mylcd(0x27,16,2);
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
pinMode(11, OUTPUT); //D11口设为报警口
mylcd.init();
mylcd.backlight();
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
//发一个10ms的高脉冲去触发TrigPin
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
//下面两句是关键函数
cm = pulseIn(EchoPin, HIGH) / 58.0; //算成厘米
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
if (cm> 50) {
Serial.print(cm);
Serial.print("安全"); //串口输出 中英文都可以
Serial.println();
mylcd.setCursor(0, 0);
mylcd.print(cm);
mylcd.setCursor(0, 1);
mylcd.print("Security"); //LED屏显只认英文
delay(2000);
mylcd.clear();
}
if (cm < 50 && cm > 30) {
Serial.print(cm);
Serial.print("正常");
Serial.println();
mylcd.setCursor(0, 0);
mylcd.print(cm);
mylcd.setCursor(0, 1);
mylcd.print("Normal");
delay(2000);
mylcd.clear();
}
if (cm < 30) {
Serial.print(cm);
Serial.print("危险");
Serial.println();
mylcd.setCursor(0, 0);
mylcd.print(cm);
mylcd.setCursor(0, 1);
mylcd.print("Danger");
delay(2000);
mylcd.clear();
}
}
* * * * *
### 控制手机
1、加蓝牙。 把蓝牙接到Uno板上,注意收发反接TX/RX脚
2、手机上装千月串口(事先就装好)
先打开手机蓝牙功能,再打开千月串口软件,选择蓝牙并建立通迅。
下载地址:
(1)千月蓝牙管理http://dl.pconline.com.cn/download/1026564.html
(2)千月无线手机版http://a.xiazaiba.com/app/26599.html
(3)千月官网-畅享无线http://www.bluesoleil.com.cn/
(4)手机应用管理:输入千月串口或蓝牙串口助手下载
作用:进行蓝牙串口通迅测试,连接单片机与电脑和手机的通迅模板。一是帮助搜索蓝牙设备,二是接收并显示数据,三是设置ASCII与HEX的输入输出模式。
3、手机上安装AI伴侣(事先就装好)
手机版AI下载:我的云盘https://pan.baidu.com/s/1nwXvrlR
作用:测试环节。当App做好后,就要对它进行测试。
### 特别提醒:
桌面版AI伴侣,利于不带手机的教学测试(安装这类软件时都要先关闭退出卫士杀毒软件类)使用这款AI伴侣的前提条件是:电脑必须具备硬件加速功能(支持WebGL)
下载地址:http://blog.sina.com.cn/s/blog_62218b990102wu1m.html
我的云盘:
win10 x64 https://pan.baidu.com/s/1pNoShWv
win7 x64 https://pan.baidu.com/s/1kWx755P
win7 x32 https://pan.baidu.com/s/1c31jAQs
winxp https://pan.baidu.com/s/1c2TZ8QW
**4、手机App。**(AppInventor 此软件必须在根目录中,且为英文名)
**第一步:组件及布局**
![](https://box.kancloud.cn/1dcb72cc8bfda1b2e08b54891e97bc62_1708x1337.png)
**第二步:编程部分 组件逻辑联系**
![](https://box.kancloud.cn/937e8be6bf754ebf31c04562b556b36e_2690x1335.png)
**第三步:**先在开发环境中点击菜单“连接->AI伴侣”,出现二维码。
**第四步:**打开手机蓝牙-打开手机千月串口对接测试蓝牙-打开AI伴侣扫描二维码,之后:用编码进行连接,如下图,
![](https://box.kancloud.cn/68c98294436a650ec27a5e8c7004f582_363x676.png)
![](https://box.kancloud.cn/c79c4e4ad3392465c6cbb956d0ef18d1_690x495.jpg)
源文件下载(我的云盘):https://pan.baidu.com/s/1ggShRBd
* * * * *
* * * * *
## 学习小结:
①做手机app,版面可以设科学点美观点,虽然并不第一重要。
②apk程序文件如何去掉风险提示?因为程序没有通过认证去不掉。
③手机程序(屏幕程序)与手机控物程序(手机与物联)不同。
**手机程序:**
方法一:软件AppInventor,AI伴侣,蓝牙串口助手(千月串口)等
方法二:在线app
**手机控物程序:**
软件
手机程序app inventor,手机安装(AI伴侣,千月串品,讯飞语音+),arduino+米斯奇,S4A,各种传感器等
①先把实物传感器按s4a软件要求接好。如 把蓝牙和arduino板接好。(装配成功)
②调试一下,把uno板接上电脑,并在电脑上打开软件arduino,写入(烧录)相关代码调试。
代码从哪来?如何找到?
一是会编,二是会调用借用。一般不必自己编,已经有的代码和库文件要会调用。
如何证明烧写成功?用arduinoIDE自带的串口助手(在arduino右上角),选好接的串口号com,波特率?输入几个字符,发送一下,看显示。(电脑与板卡通信成功)
③千月串口app,arduino的蓝牙管理软件,在手机上安装,打开手机蓝牙功能,并打开千月串口,找蓝牙设备。
发送字符,看返回值,测试一下。(手机与板卡通信成功)
④逻辑代码,代码在米斯奇里做好,复制粘贴到arduino,反复修改调试,验证、上传,直到成功。
⑤编手机遥控程序
软件app inventor,注意先建项目,查看连接端口,编好后,下载到本地,并传送到手机安装测试
、
* * * * *
* * * * *
### 总结:
电脑控物--- 电脑与单片机 。 如各种传感器
手机控物---手机通过蓝牙或WIFI,联系控物。如 钓鱼船
单片机控手机(电脑)---单片机通过蓝牙等通迅组件,通过在手机app建立联系,控制手机。如 超声波传感器的停车安全距离提示
- 第 1 节 【基础】认识Arduino
- 电子知识
- Arduino与图形编程软件结合使用
- 第 2 节 【基础】串口类串口并口
- 第 3 节 【基础】认识传感器
- 认识舵机
- 超声波传感器
- 认识蓝牙
- LCD1602屏显
- 光敏电阻传感器
- 第 4 节 【教程】Arduino示例教程模块版
- 第 5 节 【概述】电脑控制UNO板组件
- 第 6 节 【实例】光敏传感器与LED灯结合用(自控节能灯)
- 第 7 节 【实例】超声波测距及调试
- 第 8 节 【实例】点亮LED灯
- 第 9 节 【实例】可控舵机-电位器控制舵机
- 第 10 节 【实例】安卓手机控制Arduino单片机-蓝牙串口通讯
- 第 11 节 【实例】WIFI物联-贝壳物联网控制LED灯