我去年写了一个代码,当时运行良好。但是,这次加载相同的代码时,我得到了反向输出。也就是说,当数字引脚设置为高时,它返回低电平,反之亦然。
digitalWrite(led, HIGH) //PROBLEM: Should turn ON the LED but insted it turns OFF
我已经尝试了闪烁示例,在这种情况下,输出似乎也相反。
这是代码:
// 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 秒,然后再次打开。但是,我得到的输出是完全相反的,即 LED 亮起 5 秒,熄灭 1 秒。 我需要帮助如何解决这个问题。
我的主要代码是基于将arduino与android接口的。我一直在努力通过蓝牙为 android-arduino 连接解决此问题,我去年确实完成了这项工作,但现在遇到了这个问题。 我已经在三个不同的arduino uno板上尝试过这个,尝试使用不同的传感器,但HIGH-LOW似乎相反。
在输出引脚上放置电压表或示波器。0 伏时低,5 伏时高吗?如果是这样,则软件和芯片工作正常,并且您的 LED 已接线,因此另一端将进入电压,这意味着芯片的 0 V 将打开它。这是驱动LED的常用方法,因为某些芯片可以吸收比它们所能提供的更多的电流。
首先,正如@dithermaster明智地建议的那样,您应该检查是否将LED放在正确的方向上。平边(最短引脚)应始终插入-
引脚,圆角边(最长引脚)应插入+
引脚。
切勿在两个 IO 引脚之间连接 LED,否则可能会损坏 Atmega!
所以基本上,您希望将+
引脚放在引脚led
上,-
引脚放在GND
上。
也就是说,如果你说你什么都没改变,并且你尝试过不同的板子,你的问题确实很奇怪......
所以,我现在想知道你的 Arduino 库是否以某种方式损坏......也许您是否在代码中破解了反转HIGH
和LOW
的东西,不久前忘记了它?为了帮助您调试它,您能否尝试一些方法:
1/您能否在digitalWrite()
函数中更改1
的HIGH
和0
的LOW
,看看行为是否确实发生了变化?
2/如果确实发生了变化,您可以尝试以下操作吗
请您运行此草图并告诉我们它是否按预期运行?看看 arduino 显示器
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.print("HIGH: ");
Serial.print(HIGH);
Serial.print(" ; LOW: ");
Serial.println(LOW);
}
3/你能尝试改变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);
}
4/我想,您可能还想卸载/重新安装完整的Arduino框架,以便重新启动。
注意:我在这里试图猜测的是,从1到3。 要么是某人颠倒了HIGH
和LOW
,要么是digitalWrite()
对HIGH
和LOW
的行为方式。4.是绝望的解决方案:-)
我唯一一次遇到这种情况是在我弄乱了 arduino 的板.txt文件之后,如果您更改了此文件中的任何内容,您可以卸载并删除 C:/Program Files/Arduino 中的所有 arduino 剩余数据,只需备份库和其他脚本。然后重新安装arduino,它应该没问题。Arduino也可以从win10上的Windows商店安装,以使其自动更新
您可能连接到了您认为是 GND 的错误引脚。 仔细检查哪个引脚是 GND,是打印文本"GND"左侧的引脚,还是右侧的引脚。