Arduino 串口学习零碎
然后再使用按位与运算符 & 将 00000000 01111101 与 255 进行按位与运算,同样是将 a右移后的高 8 位全部置为 0,保留了低 8 位(相当于保留了原始值的高 8 位),并存储到数组 b 的第二个元素 b[1] 中。可以看出通过位运算和移位操作顺利将int值存储到了byte数组中,后续通过Serial.write()方法将数组传递给电脑端(注意Serial.print或pri
一、Arduino串口通信基本内容
1.1串口监视器输出整数(默认是十进制):

1.2 串口监视器输出浮点数(四舍五入,默认是小数点后2位):

1.3 串口监视器输出字符(ASCII码):

采用Serial.write()在Arduino的串口监视器中显示均为字符

1.4 串口监视器输出字符串常量和换行(转义字符\n):

1.5 Serial.parseInt();
该函数用于从串口接收数据并将他们转换为整数,这个数据可以读取串口的输入缓冲区并分析整数值,直到它找到非数字字符或超时。
二、个人需求:int转byte数组,通过串口传输
本人使用Arduino采集转速传感器转速及电位器信号,通过串口将数据发送至电脑,电脑端Uinty更新虚拟体转速和杆量实现数字孪生。
转速(大约一两万转/分)和电位器值(1024)均大于255,假设转速类型为Uint16,需采用byte类型的数组才能存储此数据,具体方位为通过位运算和移位操作。代码如图所示,示例中以a=32188举例,通过程序员计算器可得BIN值为高八位0111-1101,低八位为1011-1100。
void setup() {
Serial.begin(115200);
int a=32188;
byte b[2];
b[0]=a&0xff;
int b0=b[0];
b[1]=a>>8&0xff;
int b1=b[1];
int b2=a&255;
int b3=a>>8&255;
Serial.println(a,BIN);
Serial.println(b0,BIN);
Serial.println(b1,BIN);
Serial.println(b2,BIN);
Serial.println(b3,BIN);
Serial.write(b0);
Serial.write(b1);
Serial.write(b2);
Serial.write(b3);
// put your setup code here, to run once:
}
按位与运算 (Bitewise AND) 是一种针对二进制数的逐位运算操作符。它对两个二进制数的对应位进行逻辑与操作,生成一个新的二进制数。按位与运算符 & 将 a 与 255 (0xff)进行按位与运算,相当于将 a 的高 8 位全部置为 0,保留了低 8 位,并存储到数组 b 的第一个元素 b[0] 中。
右移运算 >> 先将 a右移 8 位,即将原值的高 8 位移动到低 8 位的位置上。结果为 00000000 01111101。然后再使用按位与运算符 & 将 00000000 01111101 与 255 进行按位与运算,同样是将 a右移后的高 8 位全部置为 0,保留了低 8 位(相当于保留了原始值的高 8 位),并存储到数组 b 的第二个元素 b[1] 中。
通过Serial.println代码以二进制显示b[0]、b[1] ,上述代码结果如下:

可以看出通过位运算和移位操作顺利将int值存储到了byte数组中,后续通过Serial.write()方法将数组传递给电脑端(注意Serial.print或println函数以字符方式发送数据,此处将数值转化为了byte数组采用Serial.write合适)。
更多推荐



所有评论(0)