-1

在 Arduino 中,我试图将来自两个 PISO(并行输入 - 串行输出)移位寄存器的 8 位二进制数字/字符串组合成一个 16 位二进制字符串。使用 Arduino switchVar1 上的 shiftIn() 命令存储在变量 (switchVar1) 上的二进制数switchVar1 = shiftIn(dataPin, clockPin); 首先由byte switchVar1 = 72;. 我这样做是为了然后我可以使用 switch() 函数读取二进制字符串并进行不同的组合,因为我有 16 个触点/按钮,其中将定义所有 16 个按钮的不同组合,所以我需要一个 16 位的字符串二进制数。基本上,我问的是如何将两个 8 位二进制数数组转换为一个数组。请记住,我对 c++ 完全陌生,所以可能有一些我可能没有想到的基本解决方案。

4

2 回答 2

1

感谢大家的评论,它得到了解决。所以我只是这样做: switchVar1 = shiftIn(dataPin, clockPin); switchVar2 = shiftIn(dataPin2, clockPin2); uint16_t switchVariable = switchVar1 | (switchVar2<<8); 就像我首先创建了两个字节文件并将一个(switchVar2)上的数字向左“移动”了8步(字面意思)(使用<<按位运算符)并将两者与按位相加一种uint16_t变量类型中的 OR 运算符(管道符号 |) 。然后我只用命令读取所有组合switch() case。(另外,我对编程语言很陌生,说“数组”是我的错。)

于 2021-07-06T17:49:56.873 回答
0

您应该检查按位运算和位掩码的工作原理。你会在这里找到一种方法来做到这一点。

将两个 uint8_t 组合为 uint16_t

于 2021-06-17T20:31:02.343 回答