我们常常会发现,用arduino向串口监视器发送的数值总是乱码。比如我们读取的模拟口的数值就会在数值小的时候为方块,数值大的时候则是乱七八糟的符号。这是什么原因呢?貌似怎么调整串口的设置都不能解决。

其实,这个问题关键在Serial.write()和Serial.print()的机制不同。
1、Serial.write()的机制
Serial.write():发送是实际数值,比如write(1),则系统发送1,但串口监视器在显示的时候会查找这个数值的对应ASCII码表,找到这个数值对应的ASCII符号后再将其显示,0-32代表的是控制字符或通讯专用字符,不对应数字或字母,因此才会显示一个方块,同理超过126的则会显示为乱七八糟的符号。
例如:
Serial.write(33);
监视器端会显示:
!

ASCII码表

2、Serial.print()的机制
与上面的write不同:
Serial.print():发送1时,实际发送的是1对应的ASCII码值(也就是49),即存在一个编码(encode)过程。串口监视器接收后显示的时候也会根据ASCII码表反编码(decode)回来,因此显示的仍然是1。同理,Serial.pirntln也一样。
例如:
Serial.print(33)
监视器端显示:
33

有关Serial.print可以带两个参数,一个数值参数,一个格式参数,如:
Serial.print(33,HEX)
Serial.print(33,OCT)
Serial.print(33,BIN)
则会在监视器端显示:
hex: 21, oct: 41, bin: 100001

3、有关数值的解析Serial.parseInt()
需要注意的点:
这里显示的1代表的是字符,如果我们的目的是输入数字1,最终读取为也是数字1,则须使用Serial.parseInt(),从字符串中解析出整数。

arduino串口监视器中的乱码来源相关推荐

  1. ESP8266 Arduino 串口监视器输出乱码原因

    最近在学习ESP8266 Arduino的时候,发现串口输出乱码,原因是串口波特率不匹配,一般Arduino默认9600波特率,图示如下: 而ESP8266 波特率是115200,也有可能是其他波特率 ...

  2. arduino串口监视器显示nan_Arduino小白的学习记录:双色LED灯实验

    一.介绍 双色发光二极管(LED)能够发出两种不同颜色的光,通常是红的和绿色的,而不是仅有一种颜色.它采用3mm或5mm环氧树脂封装.它有3个引脚,共阴极或者共阳极可用.双色LED具有两个LED端子或 ...

  3. arduino串口监视器显示nan_进阶教程1:Arduino串口通信与电脑控制LED

    本专栏内容经修订后,已在豆瓣阅读集结成书出版: https://read.douban.com/ebook/106875966/​read.douban.com 我是潘,曾经是个工程师.这是为 htt ...

  4. arduino串口监视器显示nan_使用Arduino开发板制作摩尔斯电码生成器

    摩尔斯电码是一种通信系统,用于在两个不同持续时间的信号中编码任何字符,称为点和虚线.摩尔斯电码由Samuel F.B开发.并进一步用于电报传输秘密信息.它在第二次世界大战时最常用.摩尔斯电码可以通过点 ...

  5. arduino 串口监视器数据传到本地txt文件

    python 一.准备 arduino 的串口监视器能够传输数据 python 运行程序出现报错 在arduino 烧入程序后不要打开串口,运行程序.(串口和程序只能开一个)关闭串口打开程序:打开程序 ...

  6. arduino 串口监视器乱码问题

    我写了一个程序,之前一直是好好的,然后我做了微调,再次烧近板子里面就是这样子,先显示了时间戳timetamp,然后等个大概10s钟,就显示后面的乱码: 我其实没有调整太多,就是: 把一个函数里面的de ...

  7. [Arduino]串口监视器的乱码问题

    1.尝试在初始化串口通信时,将波特率设置为9600 2.尝试在print前加delay()

  8. arduino串口监视器显示nan_【Arduino】初识Arduino

    点击上方蓝字关注我们 Arduino是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).它适用于艺术家.设计师.爱好者和对于" ...

  9. MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据

    MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据 [目录] - 1.无线通信模块设置 - 1.1 设置参数 - 1.2 调试步骤 - 2.按键与通信格式 - 2.1 P ...

最新文章

  1. Linux下使用system()函数一定要谨慎
  2. linux iptables导致httpd网页打不开
  3. Elasticsearch-Jest 配置ES集群源码解读
  4. 子模板继承父模板示例_模板设计模式示例
  5. 前端学习(642):字面量
  6. mysql 导入 sqlite_Mysql 数据导入SQlite
  7. javascript Blob
  8. 吴恩达神经网络和深度学习-学习笔记-29-卷积的基础知识
  9. linux命令kill_什么是Linux中的kill命令?
  10. background: radial-gradient径向渐变
  11. 未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。
  12. 发送需要smtp认证的邮件
  13. 失态的三星正在把华为手机送上全球第一宝座
  14. 指纹识别综述(9): 指纹系统安全
  15. 如何通过织云Lite愉快地玩转TSW
  16. 金属管材光纤激光切管机提高电瓶车制造水平
  17. 追踪货拉拉:“亡羊补牢”进度缓慢,安全“地雷”何时能拆完?
  18. 讯飞sdk语音合成测试用例(linux版)
  19. Rancher 2.2 GA:企业进入应用跨多K8S集群、混合云部署新时代
  20. Python 详解计算 Median Absolute Deviation(绝对中位偏差)| 还可用于异常值检测

热门文章

  1. Oracle—deallocate unused释放高水位空间(二)
  2. 不刷卡,不扫码,微信推出刷掌支付;AI“黑箱”被打开?谷歌找到大模型能力涌现机制|极客头条
  3. 搜狗王小川说输入法的未来是自动问答,那么这个技术究竟发展得怎么样了?...
  4. 码农幸福指数:哪种编程语言最让人感到幸福?
  5. 开放式耳机漏音有多大?开放式耳机和封闭式耳机哪个音质好?
  6. java graphicsenvironment_如何确定GraphicsEnvironment是否存在
  7. CX2016SA16000D0HSSCC晶振满足汽车MCU多元化需求
  8. Win系统 - 为什么处理器选择英特尔,超线程又是什么?
  9. 系统管理Lesson 09: Managing Undo Data
  10. 【矩阵论】Hermite二次型(3)