Arduino HIGH LOW

时间:2012-09-14 22:49:28

标签: boolean arduino

我有一个Arduino,我想知道实际值到底是什么HIGH和LOW意味着......他们是签名的吗?无符号整数?无符号字符???他们的价值观是什么?我猜测HIGH和LOW可能是无符号整数,所有的位分别设置为1和0,但我不确定。我希望能够使用HIGH和LOW进行按位操作,或者将HIGH或LOW以外的值传递给digitalWrite。另外,我如何将整数转换为HIGH或LOW以便我可以这样做?

4 个答案:

答案 0 :(得分:37)

查看hardware/arduino/cores/arduino/Arduino.h(至少在Arduino 1.0.1软件中),第18行和第19行:

 #define HIGH 0x1
 #define LOW  0x0

意思是,这些定义为十六进制整数值,你可以用它们做你想要的任何按位操作 - 但是,对于我来说,目前还不是很清楚。还要记住,这些值可能会在以后发生变化 - 这会使对它们的按位操作更加不明智。

答案 1 :(得分:16)

将我的2c添加到codeling's answerArduino.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<==>0x1LOW<==>INPUT<==>false<==>0x0。 然后,HIGH<==>!LOWLOW<==>!HIGH ...

答案 2 :(得分:13)

如果要将其他值传递给digitalWrite(),可以查看函数原型

void digitalWrite(uint8_t, uint8_t);

因此任何整数值(0到255)都可以。不知道如果你传递一个非HIGH和LOW之外的值,digitalWrite()的行为是什么。

由于HIGH和LOW只是简单定义的常量,因此不能向它们强制转换整数(也不会对该操作有意义)。看起来你可以在任何可能的HIGH和LOW的地方使用整数。

实际上这样做是个坏主意,但由于很多原因 - HIGH和LOW的定义可能会改变(不太可能但可能),从类型的角度来看也没有意义。相反,您应该在程序中使用逻辑来确定是应该将HIGH还是LOW传递给函数调用,然后实际传递常量。

答案 3 :(得分:1)

digitalWrite()的第一个参数是一个引脚号。

digitalWrite()的第二个参数将是:

1)将HIGH(3.3或5v)或LOW(0v)写入BINARY OUTPUT或
2)启用(HIGH)或禁用(LOW)BINARY INPUT上的内部上拉。

任一参数的按位运算都没有意义。也许你需要使用analogWite()?

请参阅文档:digitalWrite() Constants