我有一个简单的任务,即使用Arduino IDE 1.5.2在Arduino Due上切换输出引脚状态。 我尝试过这样的代码:
int pinnum = 13;
void setup() {
pinMode(pinnum, OUTPUT); // use on-board LED
}
void loop() {
digitalWrite(pinnum, !digitalRead(pinnum));
delay(1000); // wait around for 1 sec (1000 ms)
}
这没有任何作用。引脚13始终保持高电平。我做错了什么?
答案 0 :(得分:4)
读取设置为OUTPUT的引脚状态时有一个错误。作为临时解决方法,如果您的电路允许,请在将某个引脚设置为输出之前将其设置为输入,如下所示:
int pinnum = 13;
void setup() {
pinMode(pinnum, INPUT); // Work around bug
pinMode(pinnum, OUTPUT); // use on-board LED
}
void loop() {
digitalWrite(pinnum, !digitalRead(pinnum));
delay(1000); // wait around for 1 sec (1000 ms)
}
有关详细信息,请参阅http://forum.arduino.cc/index.php?topic=185291.0上的帖子。
编辑:对不起我以前的可怕答案。答案 1 :(得分:0)
我认为您的问题是您无法读取之前的数字值 发送到引脚13.由于LED接地,因此总是读低电平。
解决方案:拥有发送到存储在变量中的引脚13的逻辑电平的副本。
这个变量我在下面的代码中命名为mem
。您无需读取引脚13
因为现在你有mem
的副本。在将此副本发送到引脚13之前,您将其反转
正如您在代码示例中所做的那样。
在端口引脚上执行读 - 修改 - 写操作时,通常会将您的问题描述为警告 - 请参阅从微控制器制造商处获取的数据表。
int pinnum = 13;
int mem = 0;
void setup() {
pinMode(pinnum, OUTPUT); // use on-board LED
}
void loop() {
digitalWrite(pinnum, mem);
mem=!mem;
delay(1000); // wait around for 1 sec (1000 ms)
}