动手玩转Arduino (三) 串口输入输出
串口通信 串口通信(Serial Communication)是Arduino和计算机间按位进行数据传输的一种最基本的方式。 使用3根线完成 地线,GND 发送,Tx 接收 ,Rx 主要参数 波特率:通信速度,表示每秒钟传送的位(bit)的个数 数据位 停止位 奇偶校验位
Arduino 串口 USB转串口 串口引脚 串口数目 串口初始化函数 PC端:串口 Arduino端:USB RX:Pin 0 TX:Pin 1 串口数目 Arduino MEGA和Arduino 2560:4个 其余:1个 串口初始化函数 Serial.begin(speed) speed: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200 通常在 setup() 函数里调用
Arduino 串口输出 将数据从Arduino传输到PC 串口输出函数 TX 串口转USB PC端软件串口监视软件 Arduino IDE自带串口监视软件 也可以用其它软件进行接收:Flash, Processing, Director, vvvv等 串口输出函数 Serial.print(val), Serial.println(val) 输出ASCII码(后者多一个回车换行) Serial.print(val, format) , Serial.println(val, format) 按指定格式输出(后者多一个回车换行)
Serial.print(val) 实例 Serial.print(78) Serial.print(1.23456) 输出"78" Serial.print(1.23456) 输出"1.23" Serial.print(byte(78)) 输出“N” (N的ASCII码值为78)) Serial.print('N') 输出"N" Serial.print("Hello world.") 输出"Hello world."
Serial.print(val, format) 实例 Serial.print(78, BYTE) 输出"N" Serial.print(78, BIN) 输出"1001110" Serial.print(78, OCT) 输出"116" Serial.print(78, DEC) 输出"78" Serial.print(78, HEX) 输出"4E" Serial.print(1.23456, 0) 输出"1" Serial.print(1.23456, 2) 输出"1.23" Serial.print(1.23456, 4) 输出"1.2346"
动手
动手 尝试输出更多格式的数据到计算机 Serial.print(78) Serial.print(1.23456) Serial.print(byte(78)) Serial.print('N') Serial.print("Hello world.") Serial.print(78, BYTE) Serial.print(78, BIN) Serial.print(78, DEC) Serial.print(78, HEX) Serial.print(1.23456, 2)
串口液晶模块 波特率9600 命令格式 操作命令 一个完整命令的例子 所有对该液晶屏进行控制的串口命令都以字符”$”开始,以回车换行”\r\n”结束,两者之间是相应的命令和参数,不同的命令具有不同的参数。 操作命令 光标移动 :GO<空格>行<空格>列 行和列均从1开始 GO 1 1 在当前光标位置上显示字符串 PRINT<空格>字符串 PRINT Hello Arduino 清屏:CLEAR 将光标移回到屏幕左上角的初始位置:HOME 设置光标效果:CURSOR<空格>显示<空格>闪烁 第一个参数为是否显示光标(1和0) 第二个参数为是否闪烁(1和0) CURSOR 1 1 一个完整命令的例子 Serial.print("$PRINT Flamingo EDA\r\n"); Serial.println("$PRINT Flamingo EDA");
动手 要求:清屏后在屏幕上的第二行第二列开始显示字符串Arduino Club 提示 在loop的最后加delay防止闪烁 在下载代码的时候不能接显示屏
Arduino 串口输入 串口队列(Buffer) 串口输入函数 PC和Arduino间的缓冲区 Serial.available() 返回值:当前可读的数据数目 Serial.read() 如果串口没有数据可读,返回 -1 如果串口有数据可读,返回第一个字符,并从串口队列中取出 Serial.peek() 如果串口没有数据可读,返回-1 如果串口有数据可读,返回第一个字符,但不从串口队列取出,因此下次还能读到 Serial.flush() 清空串口队列
动手
作业 从串口输入以$开始,以回车换行(\r\n)的命令,对其进行解析, 控制指定数字I/O引脚上的LED, 控制指定PWM端口上的LED亮度 第一个参数为引脚号,第二个参数为亮灭 $D 2 1\r\n $D 3 0\r\n 控制指定PWM端口上的LED亮度 第一个参数为引脚号,第二个参数为亮度值 $P 6 128\r\n
基于串口的电子积木(一) 蓝牙串口模块 串行液晶显示屏 无线数据传输模块 字符型 1602 LCD APC220 USB转串口适配器 RS485串口模块 MAX232 串口模块
基于串口的电子积木(二) 串口RFID模块 10cm 串口RFID模块 6cm XBee USB 适配器
谢谢!