体感Flappy Bird知识点回顾

1. 面包板

1.1. 用途

  • 连接电路
  • 制作原型
  • 无需焊接

1.2. 内部结构:

2. 电阻:

2.1. 符号:

3. LED:

3.1. 符号:

3.2. 实际的LED与符号对应关系:

4. 串口通信:

是一种通信协议,可用在

  • Arduino与传感器之间
  • Arduino与无线模块之间
  • Arduino与Arduino之间
  • Arduino与电脑之间

为什么要使用串口通信:

  • 这是一种非常非常非常通用的通信协议
  • Arduino 在运行时不能暂停来观察,必须依赖串口观察实时的数据

串口例程1:

void setup(){

    Serial.begin(9600);

}

void loop(){

    Serial.print(“Hello “);

    Serial.println(“World!”);

    delay(1000);

}

写完代码后:

  • 工具->端口->COMx打勾
  • 点击
  • 右下角选择9600波特率

串口例程1解释:

  • begin(9600), 里面是波特率,数值越高传输速度越快
  • 交流的双方波特率必须相同
  • 波特率通常为
  • 2400, 4800, 9600, 19200, 57600, 115200
  • print 不带换行
  • println 带换行
  • Serial.print或Serial.println括号内可以打印
    • 字符串:”Hello world”
    • 数字:123

5. 超声波测距:

5.1. 原理解释:

  • (1)采用IO触发测距,给至少10us的高电平信号;
  • (2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
  • (3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.
  • 测试距离=(高电平时间*声速(340M/S))/2;

BUT!

  • 不要辛苦造轮子
  • 善用前人写好的程序函数库
  • http://playground.arduino.cc/
  • 以超声波传感器为例介绍如何查找现成的函数库
  • 打开Arduino的官方网站:www.arduino.cc

点击Playground

左边的Interfacing With Hardware点击Input

点击Distance Sensing

第一个NewPing里包含了我们使用的超声波传感器HC-SR04

点击后可能会遇到问题,Google上不去怎么办:

  • 打开:www.github.com
  • 搜索:New Ping
  • 打开项目页面,点击:Download ZIP

5.2. 安装NewPing函数库:

  • 将下载下来的文件改名为NewPing
  • 在Arduino软件里点击:
  • 项目->加载库->添加一个 .ZIP Library

5.3. Arduino新的函数库添加方式

  • 打开Arduino
  • 项目->加载库->管理库
  • 右上角搜索器件名称、关键词
    • MP3
    • Robot
    • nrf24

5.4. 连接超声波传感器:

  • VCC: 连接5V
  • Trig: 连接D12口,激发超声波
  • Echo: 连接D11口,接收返回的超声波
  • GND: 连接GND

5.5. 上传程序:

  • 打开文件->示例->NewPing->第三方库示例:NewPingExample
  • 连接好超声波传感器
  • 上传程序
  • 打开串口监视器(注意波特率选择115200)
  • 把手放到超声波传感器前方变化距离看效果

6. Processing读取串口数据

  • 打开Processing
  • 文件->范例程序->Libraries->Serial->SimpleRead

6.1. Simple Read:

  • 注意setup()里面这两句:
  • String portName = Serial.list()[0];
  • myPort = new Serial(this, portName, 9600);
  • Serial.list()[0]里的0表示的是第几个串口是Arduino,如果电脑里第一个串口是Arduino则方括号里就写0,如果是第二个就写1,以此类推
  • 第二句的9600代表波特率,我们改为115200
  • 把void draw(){}里面的程序改为如下:

void draw()

{

    if ( myPort.available() > 0){

    val = myPort.read();

}

    println(val);

}

6.2. 改Arduino程序:

  • 打开超声波测距的示例程序NewPingExample
  • 把loop()里的其中两句删掉变为:

void loop() {

    delay(50);

    unsigned int uS = sonar.ping();

    Serial.print(uS / US_ROUNDTRIP_CM);

}

  • 再把Serial.print(uS / US_ROUNDTRIP_CM);
  • 改为Serial.write(uS / US_ROUNDTRIP_CM);
  • 即print改为write
  • 上传Arduino程序
  • 打开改好的Processing程序
  • 点击开始播放,看processing下方的黑框输出的数字