我有一个Arduino,我想知道就实际值而言,高和低到底是什么意思……它们是带符号的整数吗?无符号整数?无符号字符?他们的价值观是什么?我猜HIGH和LOW可能是无符号整数,所有的位分别设置为1和0,但我不确定。我希望能够使用高和低进行逐位操作,或者将高或低以外的值传递给digitalWrite。另外,我如何将一个整数转换为高或低才能做到这一点?
发布于 2012-09-15 07:04:05
如果想要将其他值传递给digitalWrite(),可以查看函数原型
void digitalWrite(uint8_t, uint8_t);所以任何整数值(从0到255)都可以使用。如果传递给digitalWrite()的值不是高和低,我不知道它的行为会是什么。
由于HIGH和LOW是简单定义的常量,您不能将整数转换为它们(该操作也没有意义)。看起来你可以在任何需要高和低的地方使用一个整数。
实际上,这样做是一个坏主意,原因有很多--高和低的定义可能会改变(不太可能,但有可能),而且从类型的角度来看也没有意义。相反,您应该在程序中使用逻辑来确定是否应该将高或低传递给函数调用,然后实际传递常量。
发布于 2012-09-15 06:52:02
看看hardware/arduino/cores/arduino/Arduino.h (至少在Arduino 1.0.1软件中),第18和19行:
#define HIGH 0x1
#define LOW 0x0这意味着,这些定义是十六进制的整数值,你可以对它们做任何你想做的按位操作-然而,这将有多大意义,目前我还不是很清楚。还要记住,这些值可能会在以后发生变化-这将使对它们的逐位操作变得更加不明智。
发布于 2013-12-04 20:15:35
将我的两点意见添加到codeling's answer
Arduino.h (1.0)的第18--25行是:
#define HIGH 0x1
#define LOW 0x0
#define INPUT 0x0
#define OUTPUT 0x1
#define true 0x1
#define false 0x0因此,HIGH <==> OUTPUT <==> true <==> 0x1和LOW <==> INPUT <==> false <==> 0x0。然后HIGH <==> !LOW和LOW <==> !HIGH..。
https://stackoverflow.com/questions/12432955
复制相似问题