我有一个Arduino,我想知道到底是什么高和低意味着只要实际值去...难道他们签署整数? 无符号整型? 无符号字符??? 他们有什么价值? 我猜测,高与低可能是无符号整型与所有分别设置为1和0的位,但我不知道。 我希望能够利用HIGH做到位操作和LOW或通过比高其他或低值digitalWrite。 另外,我怎么会转换为高或低的整数,所以我能做到这一点?
Answer 1:
如果你想其他的值传递给digitalWrite(),你可以看看函数原型
void digitalWrite(uint8_t, uint8_t);
所以任何整数值(当然,0到255)会工作。 不知道是什么digitalWrite的行为()可能是,如果你通过它不是高和低以外的值。
因为高和低只是定义的常量,你可以不投一个整数他们(也没有将这项操作有意义)。 看样子,你可以在任何地方使用的是高和低预期的整数。
其实这样做是一个坏主意,虽然,有许多原因 - 高和低的定义可以改变(不可能的,但有可能),并没有从类型角度看是有意义的。 相反,你应该使用逻辑程序,以确定高或低是否应该传递给函数调用,然后实际上传递常数。
Answer 2:
看看hardware/arduino/cores/arduino/Arduino.h
(至少在Arduino的1.0.1软件),线18和19:
#define HIGH 0x1
#define LOW 0x0
这意味着,这些定义是十六进制整数,你可以做你想做与他们任何位运算 - 多少意义,这将使但是,是不是现在真的我清楚。 还要记住,这些值可能会受到在稍后的时间来改变 - 这将更加不明智就这些位运算。
Answer 3:
要我2C添加到codeling的答案 。 线18--25 Arduino.h
(1.0)为:
#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
...
Answer 4:
的第一个参数digitalWrite()是一个针数。
的第二个参数digitalWrite()将:
1)写一个HIGH(3.3V或5V电源)或低电平(0V),以二进制输出或
2)使能(HIGH)或停用(LOW)上的二进制输入内部上拉。
对于任一参数位运算是没有意义的。 也许你需要使用analogWite()?
请参阅文档: digitalWrite() 常量