- Arduino - 教程
- Arduino - 概述
- Arduino - Board Description
- Arduino - 安装
- Arduino - 程序结构
- Arduino - 数据类型
- Arduino - Variables & 常量
- Arduino - 运算符
- Arduino - 控制声明( Control Statements)
- Arduino - 循环
- Arduino - 功能( Functions)
- Arduino - 字符串( Strings)
- Arduino - String对象( String Object)
- Arduino - Time
- Arduino - 阵列( Arrays)
- Arduino - I/O Functions
- Arduino - Advanced I/O Function
- Arduino - 字符函数( Character Functions)
- Arduino - 数学图书馆( Math Library)
- Arduino - 三角函数( Trigonometric Functions)
- Arduino - Due & Zero
- Arduino - 脉冲宽度调制( Pulse Width Modulation)
- Arduino - 随机数( Random Numbers)
- Arduino - 中断( Interrupts)
- Arduino - 沟通( Communication)
- Arduino - 内部集成电路( Inter Integrated Circuit)
- Arduino - 串行外设接口( Serial Peripheral Interface)
- Arduino - 闪烁LED( Blinking LED)
- Arduino - 褪色LED( Fading LED)
- Arduino - 读取模拟电压( Reading Analog Voltage)
- Arduino - LED条形图( LED Bar Graph)
- Arduino - 键盘注销( Keyboard Logout)
- Arduino - 键盘消息( Keyboard Message)
- Arduino - 鼠标按钮控制( Mouse Button Control)
- Arduino - 键盘串口( Keyboard Serial)
- Arduino - 湿度传感器( Humidity Sensor)
- Arduino - 温度传感器( Temperature Sensor)
- Arduino - Water Detector / Sensor
- Arduino - PIR传感器( PIR Sensor)
- Arduino - 超声波传感器( Ultrasonic Sensor)
- Arduino - 连接开关( Connecting Switch)
- Arduino - 直流电机( DC Motor)
- Arduino - 伺服电机( Servo Motor)
- Arduino - 步进电机( Stepper Motor)
- Arduino - 音调库( Tone Library)
- Arduino - 无线通信( Wireless Communication)
- Arduino - 网络通信( Network Communication)
- Arduino - 有用的资源
- Arduino - 讨论
- Show Example 1
- Show Example 2
- Show Example 3
- Show Example 4
- Show Example 5
- If statement
- If …else statement
- If…else if …else statement
- switch case statement
- Conditional Operator ? :
- while循环
- do…while循环
- for循环
- Nested循环
- Infinite循环
- delay () function
- delayMicroseconds () function
- millis () function
- micros () function
- 将数组传递给函数(Passing Arrays to Functions)
- 多维数组(Multi-Dimensional Arrays)
Arduino - 沟通( Communication)
已经定义了数百种通信协议来实现这种数据交换。 每个协议可以分为两类:并行或串行。
并行通信
通过输入/输出端口将Arduino与外设之间的并联连接是短距离达数米的理想解决方案。 但是,在其他情况下,当需要在两个设备之间建立更长距离的通信时,不可能使用并行连接。 并行接口同时传输多个位。 它们通常需要数据总线 - 通过八,十六或更多线路传输。 数据以1和0的巨大波浪传输。
并行通信的优点和缺点
并行通信当然有其优点。 它比串行,简单,相对容易实现更快。 但是,它需要许多输入/输出(I/O)端口和线路。 如果您曾经不得不将项目从基本的Arduino Uno移动到Mega,您就会知道微处理器上的I/O线可能很少而且很少。 因此,我们更喜欢串行通信,牺牲引脚空间的潜在速度。
串行通信模块
今天,大多数Arduino板都是用几种不同的串行通信系统构建的标准设备。
使用以下哪些系统取决于以下因素 -
- 微控制器有多少设备与之交换数据?
- 数据交换的速度有多快?
- 这些设备之间的距离是多少?
- 是否有必要同时发送和接收数据?
有关串行通信的最重要的事情之一是Protocol ,应严格遵守。 它是一组规则,必须应用这些规则,以便设备可以正确地解释它们相互交换的数据。 幸运的是,Arduino会自动处理这个问题,因此程序员/用户的工作简化为简单的写入(要发送的数据)和读取(接收的数据)。
串行通信的类型
串行通信可进一步分类为 -
Synchronous - Synchronous设备使用相同的时钟,它们的时序彼此同步。
Asynchronous - Asynchronous设备有自己的时钟,由前一个状态的输出触发。
很容易找出设备是否同步。 如果为所有连接的设备提供相同的时钟,则它们是同步的。 如果没有时钟线,则它是异步的。
例如,UART(通用异步接收器发送器)模块是异步的。
异步串行协议有许多内置规则。 这些规则只不过是有助于确保稳健且无差错的数据传输的机制。 我们为避开外部时钟信号而采用的这些机制是 -
- 同步位
- 数据位
- 奇偶校验位
- 波特率
同步位
同步位是与每个数据包一起传送的两个或三个特殊位。 它们是起始位和停止位。 与它们的名称相反,这些位分别标记数据包的开头和结尾。
始终只有一个起始位,但停止位的数量可配置为一个或两个(尽管通常保留为一个)。
起始位始终由从1到0的空闲数据线指示,而停止位将通过将该行保持为1而转换回空闲状态。
数据位
每个数据包中的数据量可以设置为5到9位的任何大小。 当然,标准数据大小是您的基本8位字节,但其他大小有其用途。 7位数据包可以比8更有效,特别是如果您只是传输7位ASCII字符。
平价位
用户可以选择是否应该存在奇偶校验位,如果是,则奇偶校验应该是奇数还是偶数。 如果数据位中的1的数量是偶数,则奇偶校验位为0。 奇怪的平价恰恰相反。
波特率
术语波特率用于表示每秒传输的位数[bps]。 请注意,它指的是位,而不是字节。 协议通常要求每个字节与几个控制位一起传输。 这意味着串行数据流中的一个字节可能包含11位。 例如,如果波特率为300 bps,那么每秒最多可传输37个字节和最少27个字节。
Arduino UART
以下代码将使Arduino在启动时发送hello world。
void setup() {
Serial.begin(9600); //set up serial library baud rate to 9600
Serial.println("hello world"); //print hello world
}
void loop() {
}
将Arduino草图上传到Arduino后,打开串行监视器 在Arduino IDE的右上角。
在串行监视器的顶部框中键入任何内容,然后按键盘上的send或enter键。 这将向Arduino发送一系列字节。
以下代码返回它作为输入接收的内容。
以下代码将使Arduino根据提供的输入提供输出。
void setup() {
Serial.begin(9600); //set up serial library baud rate to 9600
}
void loop() {
if(Serial.available()) //if number of bytes (characters) available for reading from {
serial port
Serial.print("I received:"); //print I received
Serial.write(Serial.read()); //send what you read
}
}
请注意, Serial.print和Serial.println将发回实际的ASCII代码,而Serial.write将发回实际的文本。 有关更多信息,请参阅ASCII代码。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论