Arduino数字引脚HIGH LOW输出似乎相反



我去年写了一个代码,当时运行良好。但是,这次加载相同的代码时,我得到了反向输出。也就是说,当数字引脚设置为高时,它返回低电平,反之亦然。

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 库是否以某种方式损坏......也许您是否在代码中破解了反转HIGHLOW

的东西,不久前忘记了它?为了帮助您调试它,您能否尝试一些方法:

1/您能否在digitalWrite()函数中更改1HIGH0LOW,看看行为是否确实发生了变化?

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。 要么是某人颠倒了HIGHLOW,要么是digitalWrite()HIGHLOW的行为方式4.是绝望的解决方案:-)

我唯一一次遇到这种情况是在我弄乱了 arduino 的板.txt文件之后,如果您更改了此文件中的任何内容,您可以卸载并删除 C:/Program Files/Arduino 中的所有 arduino 剩余数据,只需备份库和其他脚本。然后重新安装arduino,它应该没问题。Arduino也可以从win10上的Windows商店安装,以使其自动更新

您可能连接到了您认为是 GND 的错误引脚。 仔细检查哪个引脚是 GND,是打印文本"GND"左侧的引脚,还是右侧的引脚。

最新更新