首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阿杜伊诺高低

阿杜伊诺高低
EN

Stack Overflow用户
提问于 2012-09-15 06:49:28
回答 4查看 50.8K关注 0票数 24

我有一个Arduino,我想知道就实际值而言,高和低到底是什么意思……它们是带符号的整数吗?无符号整数?无符号字符?他们的价值观是什么?我猜HIGH和LOW可能是无符号整数,所有的位分别设置为1和0,但我不确定。我希望能够使用高和低进行逐位操作,或者将高或低以外的值传递给digitalWrite。另外,我如何将一个整数转换为高或低才能做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-15 07:04:05

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

代码语言:javascript
复制
void digitalWrite(uint8_t, uint8_t);

所以任何整数值(从0到255)都可以使用。如果传递给digitalWrite()的值不是高和低,我不知道它的行为会是什么。

由于HIGH和LOW是简单定义的常量,您不能将整数转换为它们(该操作也没有意义)。看起来你可以在任何需要高和低的地方使用一个整数。

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

票数 19
EN

Stack Overflow用户

发布于 2012-09-15 06:52:02

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

代码语言:javascript
复制
 #define HIGH 0x1
 #define LOW  0x0

这意味着,这些定义是十六进制的整数值,你可以对它们做任何你想做的按位操作-然而,这将有多大意义,目前我还不是很清楚。还要记住,这些值可能会在以后发生变化-这将使对它们的逐位操作变得更加不明智。

票数 43
EN

Stack Overflow用户

发布于 2013-12-04 20:15:35

将我的两点意见添加到codeling's answer

Arduino.h (1.0)的第18--25行是:

代码语言:javascript
复制
#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..。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12432955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档