首页 > 代码库 > ASCIITable: 演示 Arduino 串口输出的进阶功能

ASCIITable: 演示 Arduino 串口输出的进阶功能

原文地址 - https://www.arduino.cc/en/Tutorial/ASCIITable

ASCII字符表

本例展示了高级的串口打印功能,通过本功能可以在Arduino软件(IDE)的串口监视器上生成一个字符和ASCII值的对应表,值分别用十进制、十六进制、八进制和二进制显示。想了解更多关于ASCII字符的信息,请参看asciitable.com。

硬件需求

Arduino 或 Genuino 开发板

电路

无,但是开发板必须通过串口或者USB口连接到电脑。

代码

程序在setup()等连接上串口以后,会一行一行的打印ASCII表直到最后一个可打印字符。打印完成后,设备进入while结构的死循环状态。关闭和打开Aruino软件(IDE)将会使开发板重启并重新启动程序。

/*  ASCII表用所有可能的格式输出字节值: * 简单的二进制值 * ASCII编码的十进制、十六进制、八进制和二进制形式 想了解更多关于ASCII的知识, 参见 http://www.asciitable.com and http://en.wikipedia.org/wiki/ASCII电路:  不需要外接电路。编写时间: 2006作者:Nicholas Zambetti更新:2012年4月9日更新者: Tom Igoe翻译:苏杭翻译日期:2016年12月14日 本示例代码公布在公用网络上.< http://www.zambetti.com > */void setup() {  //初始化串口并且等待端口开启:  Serial.begin(9600);  while (!Serial) {    ; // 等待串口连接。使用本地的USB端口才需要这样。  }  // 输出带有回车符号的标题  Serial.println("ASCII Table ~ Character Map");}// 第一个看得见的ASCII字符"!"是数字23:int thisByte = 33;// 你也可以用单引号来写ASCII字符。// 例如字符"!"的ASCII值是33,因此你也可以这样写://int thisByte = ‘!‘;void loop() {  // 原样输出数值,比如字符的简单二进制形式。串口监视器把所有的字节码显示为ASCII字符,  //因此第一个数字33将显示‘!‘。  Serial.write(thisByte);  Serial.print(", dec: ");  // 用ASCII编码十进制的字符形式输出数值(十进制)。  // 十进制数是Serial.print()和Serial.println()默认的格式,因此不需要做改变 :  Serial.print(thisByte);  // 当然你乐意的话,也可以可以声明以十进制格式输出.  //如果你把下面一句的注释去掉和上面的效果是一样的:  // Serial.print(thisByte, DEC);  Serial.print(", hex: ");  // 输出十六进制格式的字符串(十六进制):  Serial.print(thisByte, HEX);  Serial.print(", oct: ");  // 输出八进制格式的字符串(八进制);  Serial.print(thisByte, OCT);  Serial.print(", bin: ");  // 输出二进制形式的字符串(二进制)  // 同时输出回车换行:  Serial.println(thisByte, BIN);  // 如果输出了最后一个可视字符 ‘~‘ 或 126, 停止:  if (thisByte == 126) {    // 你也可以用 if (thisByte == ‘~‘) {    // 这个循环一直循环而且什么也不做    while (true) {      continue;    }  }  // 继续下一个字符  thisByte++;}

输出结果

ASCII Table ~ Character Map!, dec: 33, hex: 21, oct: 41, bin: 100001", dec: 34, hex: 22, oct: 42, bin: 100010#, dec: 35, hex: 23, oct: 43, bin: 100011$, dec: 36, hex: 24, oct: 44, bin: 100100%, dec: 37, hex: 25, oct: 45, bin: 100101&, dec: 38, hex: 26, oct: 46, bin: 100110‘, dec: 39, hex: 27, oct: 47, bin: 100111(, dec: 40, hex: 28, oct: 50, bin: 101000), dec: 41, hex: 29, oct: 51, bin: 101001*, dec: 42, hex: 2A, oct: 52, bin: 101010+, dec: 43, hex: 2B, oct: 53, bin: 101011,, dec: 44, hex: 2C, oct: 54, bin: 101100-, dec: 45, hex: 2D, oct: 55, bin: 101101., dec: 46, hex: 2E, oct: 56, bin: 101110/, dec: 47, hex: 2F, oct: 57, bin: 1011110, dec: 48, hex: 30, oct: 60, bin: 1100001, dec: 49, hex: 31, oct: 61, bin: 1100012, dec: 50, hex: 32, oct: 62, bin: 1100103, dec: 51, hex: 33, oct: 63, bin: 1100114, dec: 52, hex: 34, oct: 64, bin: 1101005, dec: 53, hex: 35, oct: 65, bin: 1101016, dec: 54, hex: 36, oct: 66, bin: 1101107, dec: 55, hex: 37, oct: 67, bin: 1101118, dec: 56, hex: 38, oct: 70, bin: 1110009, dec: 57, hex: 39, oct: 71, bin: 111001:, dec: 58, hex: 3A, oct: 72, bin: 111010;, dec: 59, hex: 3B, oct: 73, bin: 111011<, dec: 60, hex: 3C, oct: 74, bin: 111100=, dec: 61, hex: 3D, oct: 75, bin: 111101>, dec: 62, hex: 3E, oct: 76, bin: 111110?, dec: 63, hex: 3F, oct: 77, bin: 111111@, dec: 64, hex: 40, oct: 100, bin: 1000000A, dec: 65, hex: 41, oct: 101, bin: 1000001B, dec: 66, hex: 42, oct: 102, bin: 1000010C, dec: 67, hex: 43, oct: 103, bin: 1000011D, dec: 68, hex: 44, oct: 104, bin: 1000100E, dec: 69, hex: 45, oct: 105, bin: 1000101...

另见

  • increment, ++
  • while()
  • serial()
  • Dimmer -移动鼠标来改变LED灯的亮度.
  • Graph - 传输数据给电脑并且在进程中绘制图形.
  • Midi - 穿行传输音频信息.
  • MultiSerialMega - 使用Arduino和Genuino Mega的两个可用的串口 .
  • PhysicalPixel - 将数据发送到你的开发板,用程序或者Max/MSP来开关.
  • ReadASCIIString - 解析一个用逗号分隔的数字型字符串来控制LED的亮度.
  • SerialCallResponse - 用问答的方式发送多个数值.
  • SerialCallResponseASCII - 用问答的方式发送多个数值,并且在发送前用ASCII码编码.
  • SerialEvent - 演示如何使用 SerialEvent()函数.
  • VirtualColorMixer - 用程序或者Max/MSP发送多个数值从Arduino到你的电脑.


最终版本编辑2015/07/28 SM

QQ 群

欢迎加入我们的大家庭 技术分享 点击加入 硬创联盟 Arduino 群号 8580606

 

翻译:硬创联盟翻译组翻译员 – 苏杭
审核:硬创联盟翻译组技术语文审核 - 神奇海螺,Lepton-华,成都阿杰

ASCIITable: 演示 Arduino 串口输出的进阶功能