Arduino学习总结(未完待续)

2023-05-16

文章目录

  • Arduino 学习
    • 硬件认识
      • Arduino UNO 主要元器件
      • Arduino 端口
    • 软件认识
      • Arduino IDE
      • Arduino 程序架构
      • 程序基础内容简述
        • 数据类型
        • 时间控制⏲
          • 计时函数
          • 延时函数
        • 串口通信📞
          • 端口间通信的类型
          • Arduino 串口通信
    • 扩展电子部件控制
      • LED发光二极管
        • LED工作原理与连接电路
        • 应用实例
          • BLINK
            • 电路连接
            • 程序设置
          • 呼吸灯
            • 电路连接
            • 程序设置
          • 走马灯
          • 交通灯
      • 按键及蜂鸣器控制
        • 按键
        • 应用实例
          • 开关电路
          • 手电筒电路
          • 按键消抖
        • 蜂鸣器
        • 应用实例
          • 简单蜂鸣效果
          • 手动报警器
          • 输出基本音阶
          • 演奏乐曲
      • 数码管控制
      • 电位器与PWM控制
      • 光敏电阻与火焰传感器
        • 光敏电阻
      • 抢答器与温度报警器
      • 超声波发射器
        • 工作原理及操作时序
        • 超声波测距实验
            • 测距函数
            • SR04与Arduino接线示意图
            • 编程
      • LCD

Arduino 学习

硬件认识

Arduino UNO 主要元器件

  • 接口类,包括外部电源插座、USB接口、TCSP下载接口与各种端口,负责信号与电源的输入输出
  • 芯片类,包括USB接口芯片与AVR单片机(主处理器),负责驱动与计算功能的实现
  • 指示灯类,包括数字门13的LED、TX和RX指示灯和电源指示灯,指示连接和通信状态
  • 其它元器件,包括复位开关、晶体振荡器、CV稳压表和电容等

Arduino 端口

  1. 数字 I/O端口

    输入和输出数字信号,有高电平和低电平两种形式

  2. 模拟 I/O端口

    输入模拟信号和数字信号,不能输出模拟信号,可以测量端口连接的电压以供程序使用

  3. 电源接口

    • IOREF:使盾板适配主板提供不同电压
    • RESET:复位端口,功能与复位按钮相同
    • 3.3V5V:两种规格的电压输出
    • GND:接地
    • Vin:当外部直流电源接入电源插座时,可以通过Vin向外部供电;也可以通过此引脚向UNO直接供电

软件认识

Arduino IDE

Arduino 程序架构

  1. 声明变量及接口名称、定义宏

    int val; int ledPin = 13; #define Do 262

  2. setup()——函数在程序开始时使用,可以初始化变量、接口模式、启用库等

    pinMode(ledPin,OUTPUT);

  3. loop()——位于初始化之后,主函数部分,让你的程序在Arduino循环运行

  4. 此外还可定义其它函数

程序基础内容简述

数据类型

格式:数据类型名(储存空间占用字节数,取值范围)

  • 数据流

    • byte (1,0~255[28-1])
  • 单字符

    • char (1,-128[-28]~127[27-1])
    • unsigned char (1,0~255)
    • word (2,0~65535[216-1])
  • 整数

    • int (2,-32768[-215]~32767[215-1])
    • long (4,-2 147 483 648~2 147 483 647)
    • short (2,-32768~32767)
    • unsigned int (2,0~65535)
    • unsigned long (4,0~4 294 967 296)
  • 浮点数

    • float (4,-3.4028235E+36~3.4028235E+36)
    • double (4,-3.4028235E+36~3.4028235E+36)
  • 布尔值

    • boolean(1,false|true)
  • 数据结构

    • string
    • String
    • array
  • 标识符

    • void(0)

sign是首位的数据标志位,代表数据的正负

时间控制⏲

计时函数
  • millis()

  • micros()

延时函数
  • delay(ms)

  • delayMicroseconds(us)

串口通信📞

端口间通信的类型
  • 并行通信
  • 串行通信
    • 单工通信(仅单向通信)
    • 半双工通信(异时双向通信)
    • 双工通信(同时双向通信)
Arduino 串口通信

Arduino通过HardwareSerial类来实现串口通信,在头文件HardwareSerial.h中定义了一个该类的对象Serial,直接使用类的成员函数就可简单地实现串口通信

  • Serial.begin(Baudrate);

    设置串行波特率(每秒钟传送的二进制位数),位于setup()

  • Serial.available();

    判断串口是否收到数据,返回值为int型,无参数

  • Serial.read(pin);

    读串口并返回收到的数据,若串口缓冲区有数据则读取1Byte数据,否则返回-1

  • Serial.print(data,encoding);

    从串行端口输出数据data,encoding为编码格式,可以取值DEC(十进制,默认)、HEX(十六进制)、OCT(八进制)和BIN(二进制)

  • Serial.println(data,encoding);

    同上一函数,不同在于输出数据会自动换行

  • Serial.write();

    输出字符或字符串时与print无区别,但是输出数值时,write输出数据本身,而print则会将其转化为可显示的ASCII字符

扩展电子部件控制

LED发光二极管

LED工作原理与连接电路

应用实例

BLINK
电路连接

单一LED灯按前述方式连接

程序设置
int ledPin = 11; // 设置LED控制引脚为11数字端口

void setup() {
  pinMode(ledPin, OUTPUT); // 设置数字IO端口模式为输出OUTPUT
}

void loop() {
  digitalWrite(ledPin,HIGH); // digitalWrite函数设置LED引脚电平为HIGH=5V
  delay(100);
  digitalWrite(ledPin,LOW);
  delay(100);
}
呼吸灯
电路连接

单一LED灯按前述方式连接

程序设置
int ledPin = 10;

void setup() {
  pinMode(ledPin,OUTPUT);
}

void loop() {
  for(int i=0;i<=255;i++) // 设置i由0至255递增,配合loop可以实现呼吸效果
  {
    analogWrite(ledPin,i); // analogWrite函数可修改引脚的输出电压
    delay(20);
  }
走马灯
交通灯

按键及蜂鸣器控制

按键

应用实例

开关电路
手电筒电路
按键消抖

蜂鸣器

应用实例

简单蜂鸣效果
手动报警器
输出基本音阶
演奏乐曲

数码管控制

电位器与PWM控制

光敏电阻与火焰传感器

光敏电阻

抢答器与温度报警器

超声波发射器

工作原理及操作时序

超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时,具体来说过程可以分解为:

  1. 使用Arduino采用数字引脚给SR04的Trig引脚至少10μs的高电平信号,触发SR04模块测距功能

  2. 触发后,模块会自动发送8个40KHz的超声波脉冲,并自动检测是否有信号返回

  3. 如有信号返回,Echo引脚会输出高电平,高电平持续的时间就是超声波从发射到返回的时间。此时使用pulseIn()函数获取到测距的结果,并计算出距被测物的实际距离。

时序图如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

超声波测距实验

测距函数

pulseIn(pin, value, timeout)

用于检测引脚输出的高低电平的脉冲宽度

  • Pin:需要读取脉冲的引脚

  • Value:需要读取的脉冲类型,HIGH或LOW

  • Timeout:超时时间,单位微秒,数据类型为无符号长整型

SR04与Arduino接线示意图

在这里插入图片描述

编程
const int trigPin = 9;
const int echoPin = 7;
float distance;

void setup()
{
  Serial.begin(9600);
  pinMode(trigPin,OUTPUT);
  pinMode(echoPin,INPUT);
}

void loop()
{
// 产生一个10us的高脉冲去触发TrigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
// 检测脉冲宽度,并计算出距离
  distance = pulseIn(echoPin,HIGH)/58.00;
  Serial.print("Distance is ");
  Serial.print(distance);
  Serial.println("cm.");
  delay(300);
}

LCD

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino学习总结(未完待续) 的相关文章

  • 2020年12月30日 当SONiC遇到P4

    当SONiC遇到P4 SONiC P4 是SONiC中运行的P4虚拟交换机 xff0c 当前的SONiC P4是一个docker image xff0c 可以运行在任意的docker环境中 看看SONiC和P4能碰撞出什么火花 SONiC的
  • 2021-01-07 SONiC系统管理1 SONiC Management framework

    SONiC系统管理1 SONiC Management framework SONiC系统提供多种管理接口 xff0c 包括CLI人机接口 xff0c REST RESTCONF接口 xff0c gNMI接口和SNMP接口 xff0c SN
  • svn diff 使用 vimdiff代替,提高阅读性

    可能是被Win下的比较软件给养出的恶习 xff0c 所以一直很难习惯 nux下文本diff的比较效果 xff0c 尤其是频繁的使用svn diff 简直会让我对程序的理解能力直线下降 终于发现 xff0c 其实svn已经提供了这种切换dif
  • 2021-01-16 SONiC系统管理9 TPID配置

    SONiC系统管理9 TPID配置 SONiC TPID配置 从SONiC VLAN YANG里面没有看到有TPID的配置能力 xff0c VLAN Range在SONiC VLAN YANG里面也没有 xff0c 二层转发功能的增强让SO
  • 2021-01-17 SONiC系统管理12 零接触部署ZTP

    2021 01 16 SONiC系统管理12 零接触部署ZTP SONiC系统管理12 零接触部署ZTP SONiC系统支持基于DHCP协议Option 67的ZTP零接触部署 SONiC系统启动以后 xff0c 系统自动在所有UP起来的端
  • 2021-02-02 SONiC系统管理 18配置文件格式

    SONiC系统管理 18 配置文件格式 前面说到了SONiC系统启动时通过读取初始配置文件的内容来配置系统 xff0c SONiC系统默认初始配置文件的位置在 etc sonic startup config 文件内容再进一步指示各种不同类
  • 2021-02-06 SONiC SAI结构 Adapter&Adapter Host

    SONiC SAI SAI 结构 SAI是SONiC系统最精华的部分 xff0c SAI spec对SAI如何定义的以及SAI如何被SONiC系统初始化和调用有一些具体的介绍 首先还是一个High Level Design的图 xff1a
  • 2021-02-07 SONiC SAI结构2 1D Bridge

    SONiC SAI结构2 1D Bridge 以太网交换流水线结构 SONiC SAI对交换机 路由器的报文处理流程建立了标准化的行为模型 即使不同的交换芯片内部实现报文处理的方式各不相同 xff0c 由于行为模型是报文处理过程的抽象描述
  • 2021-02-21 SONiC SAI结构5 VXLAN

    SONiC SAI结构5 VXLAN VXLAN报文处理模型流水线结构 SONiC SAI支持VXLAN协议 xff0c 具备支持VTEP的能力 根据报文处理功能模型的特点 xff0c 不同的功能块可以好像搭积木一样组合在一起形成新的功能
  • 2021-02-27 SONiC系统管理 21系统运行平台管理

    2021 02 27 SONiC系统管理 21 系统运行平台管理 SONiC系统通过SAI统一了交换芯片的管理 xff0c 为不同厂家的芯片提供了统一的编程接口 虽然交换芯片提供了系统的最关键的报文处理功能 xff0c 但是作为一个需要在实
  • 2021-03-03 SONiC系统管理 23 SONiC与ONIE

    SONiC系统管理 23 SONiC与ONIE 在开发解耦的白盒交换机设备中 xff0c 在硬件开源的基础上 xff0c 控制软件除SONiC以外也有其它NOS的选择 xff0c 如Cumulus Linux Open Network Li
  • 2021-03-20 SONiC 系统管理 28 静态路由配置

    2021 03 20 SONiC 系统管理 28 静态路由配置 SONiC系统支持通过多种方式配置静态路由 xff0c 包括CLI接口 xff0c 基于RESTCONF YANG方式或者gNMI接口的方式 SONiC静态路由支持IPv4和I
  • 2021-04-26 SONiC: 转发和管理平面接口SAI模型

    2021 04 26 SONiC 转发和管理平面接口SAI模型 SAI模型中转发平面和管理平面接口 转发平面和管理平面之间的接口是控制报文从转发平面传递到控制平面CPU处理的接口 对于各种类型的交换机而言 xff0c 大量不同种类的控制报文
  • 阅读qt贪吃蛇代码、学习

    学qt只有两天而已 xff0c 感觉qt真的很好入门 比mfc容易的很多 学习qt短短时间 xff0c 感觉自己可以仿照别人的代码来写些自己的桌面东西了 不过 xff0c 没有驱动 xff0c 只是兴趣的学习下 可能到此为止了 主要收获 x
  • 2021-05-18 SONiC 系统Loopback地址和管理地址配置

    SONiC 系统管理 37 系统Loopback地址和管理地址配置 SONiC系统可以通过CLI和Config DB来配置Loopback地址 CLI的配置命令和Linux系统配置网口的命令相同 admin 64 switch span c
  • 2021-05-22 SONiC 系统配置命令

    2021 05 20 SONiC 系统管理 39 SONiC系统配置命令 config help This command lists all the possible configuration commands at the top l
  • 2021-05-27 SONiC 系统配置显示命令

    2021 05 27 SONiC 系统管理 40 SONiC系统配置显示命令 show help This command displays the full list of show commands available in the s
  • 2021-06-07 SONiC 系统基于优先级的流控PFC配置命令

    2021 06 07 SONiC 系统管理 42 SONiC 系统基于优先级的流控PFC配置命令 IEEE 802 1Qbb定义的基于优先级的流控Asymmetric Priority Flow Control功能可以在端口上为每个不同的优
  • 2021-06-25 SONiC 系统BGP配置命令

    2021 06 25 SONiC 系统BGP配置命令 SONiC系统BGP配置 SONiC系统所默认包含的BGP模块在201811版的SONiC之前是开源的Quagga软件 xff0c 之后改成了更流行的FRR FRR中的Show命令是以
  • 2021年8月14日 七夕节的相遇 SONiC+P4实现

    2021年8月14日 七夕节的相遇 SONiC 43 P4实现 ONF启动了PINS项目 xff0c P4 integrated network stack

随机推荐

  • 2021-08-20 SONiC中的FRR和Zebra

    2021 08 20 SONiC中的FRR和Zebra SONiC中采用FRR和Zebra处理路由协议 以前写过SONiC系统所默认包含的BGP模块在201811版的SONiC之前是开源的Quagga软件 xff0c 之后改成了更流行的FR
  • 2021-08-29 SONiC中基于策略的哈希配置

    SONiC中基于策略的哈希配置 SONiC可以支持对不同类型的报文采取不同的Hash算法 对于多通道 多链路连接的情况 xff0c 如LAG和ECMP的接口上 xff0c 交换机和路由器采用Hash算法对报文中指定的字段进行Hash计算 x
  • 2021-09-19 当SONiC遇到P4之二

    当SONiC遇到P4之二 P4描述SAI 在当SONiC遇到P4中介绍了用P4来实现SAI Model的方式 xff0c 这种方式利用了P4数据平面编程的功能实现了SAI模型 xff0c 将P4和SONiC这两个分别位于网络数据平面和控制平
  • Cmake 模板和语法

    开始一直犹豫是不是要学cmake对于一个没有项目驱动的人来数 xff0c 感觉用不用都可以 我大可用一个简单的Makefile模板来做一些简单的工程阿 或者我还可以用autotools等 不过既然已经看了一个晚上了 xff0c 还是把它弄懂
  • 2021-09-25 SONiC系统管理32 IFA

    SONiC系统管理32 IFA Inband flow analyzer SONiC系统支持Telemetry的功能 xff0c 在INT中介绍了带内遥测In band Network Telemetry INT 对于遥测的结果 xff0c
  • 自动驾驶网络

    自动驾驶网络 网络为啥要自动驾驶 网络为啥要自动驾驶 自动驾驶网络首先要解决网络测量的问题 有测量才能完成闭环的控制
  • 怎样为SONiC社区做贡献

    64 TOC 2023继续前行 怎样为SONiC社区做贡献 SONiC在社区参与者的贡献下不断成长 xff0c 已经取得了网络操作系统事实上一统江湖的地位 同时SONiC也在不断扩大应用范围 xff0c 国内知名大厂最近在SONiC社区申请
  • cnblog上写了几个PR的内容解读

    cnblog上写了几个PR的内容解读 xff0c 欢迎参观 SONiC系统利用YANG来描述配置文件的格式 基于Radius的认证方式把登录用户的安全认证放在一个集中的Radius服务器上 xff0c 被登录设备在需要进行登录用户认证的时候
  • 无人机基础知识

    刚玩无人机或者想玩无人机的朋友 xff0c 想和圈内人交流交流get新技能 xff0c 却总有点张不开口 xff0c 怕问题一说出来就被鄙视得体无完肤 xff0c 没法继续交流了 不过 xff0c 不了解一些基本常识 xff0c 不记住几个
  • tensorflow解决keras报错 “AlreadyExistsError: Another metric with the same name already exists.“

    tensorflow解决keras报错 34 AlreadyExistsError Another metric with the same name already exists 34 最近要用到keras的一些API xff0c 用co
  • 一、Docker安装及初始化配置(Linux版)

    Docker安装及初始化配置 xff08 Linux版 xff09 1 安装前准备2 docker安装3 docker配置 1 安装前准备 1 切换root用户 xff1a sudo su 2 配置网络源 xff1a vi etc apt
  • 三、Docker常用命令和部署实例(Linux和Windows通用)

    Docker常用命令和部署实例 xff08 Linux和Windows通用 xff09 一 Docker组件和常用命令二 Docker服务命令三 Docker镜像命令四 Docker容器命令五 Docker实例练习1 MySQL容器部署2
  • 四、Dockerfile应用案例教程(将一个或多个jar包部署到docker容器中运行)

    Dockerfile应用案例教程 1 现有环境2 部署方式方式一 xff1a 直接部署jar包为容器 xff08 单个jar包 xff09 方式二 xff1a 以启动jar包打包镜像 xff0c 部署容器 xff08 单个和多个jar包均可
  • Ubuntu虚拟机设置网络桥接模式

    Ubuntu虚拟机设置网络桥接模式 1 虚拟机网络模式介绍1 1 bridged 桥接模式 1 2 host only 主机模式 1 3 NAT 网络地址转换模式 2 设置网络桥接模式2 1 Windows网络适配器设置2 2 Window
  • 完美洗牌算法

    输入 xff0c 如何在O n 的时间 xff0c 用O 1 的空间 xff0c 将这个序列顺序改为 输入 xff1a 1234567dbcdefg 则输出1a2b3c4d5e6f7g 公式 xff1a y 61 2x mod xff08
  • Windows系统安装及初始化设置

    Windows系统安装激活及初始化设置 1 系统安装1 1 iso镜像下载1 2 系统启动盘制作1 3 BIOS设置1 4 常见问题及解决方式问题1 xff1a 引导方式错误 xff08 ERROR BIOS LEGACY BOOT OF
  • E: Problem executing scripts APT和E: Sub-process returned an error code问题修复

    E Problem executing scripts APT Update Post Invoke Success和E Sub process returned an error code问题修复 问题描述原因分析和解决方案 问题描述 在
  • 解决Docker拉取镜像报Error response from daemon: error parsing HTTP 408 response body的问题

    解决Docker拉取镜像报Error response from daemon error parsing HTTP 408 response body的问题 问题描述原因分析和解决方案 xff1a xff1a 问题解决验证 问题描述 Do
  • ROS下运行ORB-SLAM2双目Stereo(官方数据集)

    写在前面 xff1a Ubuntu版本 ROS版本 opencv版本一定要对应 xff01 xff01 xff01 否则后边编译和运行过程中会有许多问题 xff0c 配环境配到怀疑人生 xff01 我的实验环境为 xff1a ubuntu1
  • Arduino学习总结(未完待续)

    文章目录 Arduino 学习硬件认识Arduino UNO 主要元器件Arduino 端口 软件认识Arduino IDEArduino 程序架构程序基础内容简述数据类型时间控制 计时函数延时函数 串口通信 x1f4de 端口间通信的类型