arduino - Arduino反转字节
问题描述
我正在使用 I2C i/o 扩展器来读取多达 8 个输入。
i/o 扩展器提供 8 位输出.... 1 字节。因为 e/o 扩展器有内部上拉,所以当所有端口不连接到 GND 时,所有 8 位都是 1。
所以输出是 255 ... B11111111
当所有端口都连接到 GND.. 所有 8 位变为 0。
所以输出是 0 ... B00000000
一切都很好,但我想反转信号,当所有端口都没有连接到 GND 时,输出应该是:0 ... B00000000。
当所有端口都连接到 GND 时,输出应为 255 ... B11111111
Bitwise NOT 的使用并不是我真正想要的。
从 255 到 -1
这很合逻辑,因为在他们的网站上提到了它:
我的代码并没有真正起作用......
byte OutputI2C;
byte OutputI2CInvert;
byte InputModbus;
void setup() {
Serial.begin(9600);
}
void loop() {
Wire.requestFrom(B0111000, 1); //connect to i/o expander
OutputI2C = Wire.read(); // Read data
OutputI2CInvert = OutputI2C; // make copie
delay(250);
Serial.print(~OutputI2CInvert); // invert
}
所以我希望有人知道如何在没有负输出的情况下反转字节。
解决方案
由于您的类型byte
是无符号的,通常按位不应该工作......您可以尝试在打印之前将输出转换为这种类型吗?
就像是Serial.print((byte) ~OutputI2CInvert);
这应该迫使 Arduino 不将第一位视为符号位。
推荐阅读
- android - android有直接支付方式吗?
- angular - ag-grid 列不会自动调整角度大小
- spring - 弹簧控制器无法解决
- javascript - NestJS:如何在自定义验证器中同时访问 Body 和 Param?
- react-native - React-Native 代码在不导入平台模块的情况下工作,为什么?
- python - 如何在tensorflow中将两个子网络合并成一个模型
- c# - 无法理解 AT 命令响应
- react-native - 从 react-navigation 导入,我有一个错误
- amazon-web-services - AWS API Gateway 总是返回 502 bad gateway
- azure - 在服务总线队列触发函数中对另一条消息进行排队时,QueueClient.Complete(Guid) 似乎不起作用