去年我写了一段代码,当时效果很好。但是,这次加载相同的代码我得到反转输出。也就是说,当数字引脚设置为高电平时,它会返回低电平,反之亦然。
digitalWrite(led, HIGH) //PROBLEM: Should turn ON the LED but insted it turns OFF
我尝试了BLINK EXAMPLE,在这种情况下,输出似乎也是相反的。
以下是代码:
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(5000); // wait for a second
}
根据密码,我的LED应该打开1秒钟然后应该关闭5秒钟才能再次打开。但是,我得到的OUTPUT完全反转,即LED亮5秒,OFF 1秒。 我需要帮助解决这个问题。
我的主要代码是基于arduino与android的接口。我一直在努力通过蓝牙解决这个android-arduino连接,我去年做过但现在遇到了这个问题。 我在三个不同的arduino uno板上试过这个,用不同的传感器试过但是HIGH-LOW似乎是颠倒了。
答案 0 :(得分:2)
在输出引脚上放置电压表或示波器。低电压为0伏特,高电压为5伏特吗?如果是这样,软件和芯片工作正常,你的LED接线,所以另一侧是电压,这意味着芯片的0 V将打开它。这是驱动LED的常用方法,因为一些芯片可以吸收比它们可以提供更多的电流。
答案 1 :(得分:0)
首先,正如@dithermaster明智地建议你应该检查一下你是否把LED放在正确的方向上。扁平侧(最短引脚)应始终插入-
引脚和圆形侧(最长引脚)插入+
引脚。
切勿在两个IO引脚之间连接LED,因为它可能会损坏Atmega!
所以基本上,你想要+
针led
和-
GND
针脚。
那就是说,如果你说你没有改变任何东西,并且你尝试过不同的电路板,你的问题确实很奇怪......
所以,我现在想知道你的Arduino库是否在某种程度上没有被破坏......也许你刚才在代码中破解了HIGH
和LOW
并忘记了它?
为了帮助您调试它,您可以尝试一些事情:
1 /您可以在HIGH
函数中更改1
的{{1}}和LOW
的{{1}},并查看行为是否确实发生了变化?
2 /如果确实发生了变化,可以尝试以下
请你运行这个草图并告诉我们它是否按预期运行?看看arduino显示器
0
3 /您可以尝试更改digitalWrite()
以下内容:
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.print("HIGH: ");
Serial.print(HIGH);
Serial.print(" ; LOW: ");
Serial.println(LOW);
}
4 /我想,您可能还想卸载/重新安装完整的Arduino框架,重新启动。
NB :我想在这里猜测,从 1。到 3。是有人倒置{{1} }和digitalWrite()
,或void loop() {
out = portOutputRegister(digitalPinToPort(pin));
*out |= digitalPinToBitMask(pin); // set pin to HIGH
delay(1000);
*out &= ~digitalPinToBitMask(pin); // set pin to LOW
delay(5000);
}
与HIGH
和LOW
的行为方式。 4。是绝望的解决方案: - )
答案 2 :(得分:0)
我唯一遇到的是在弄乱了arduino的boards.txt文件之后,如果您更改了该文件中的任何内容,则可以卸载并删除C:/ Program Files / Arduino中的所有arduino剩余数据备份库和其他脚本。然后重新安装arduino,应该没问题。也可以从win10上的Windows存储安装Arduino,以使其自动更新