2

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

digitalWrite(led, HIGH) //PROBLEM: Should turn ON the LED but insted it turns OFF

我已经尝试了 BLINK 示例,在这种情况下,输出似乎也反转了。

这是代码:

// 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 似乎颠倒了。

4

3 回答 3

2

将电压表或示波器放在输出引脚上。0伏时为低电平,5伏时为高电平?如果是这样,则软件和芯片工作正常,并且您的 LED 已接线,因此另一侧将有电压,这意味着来自芯片的 0 V 将打开它。这是驱动 LED 的常用方法,因为某些芯片吸收的电流比它们可以提供的电流多。

于 2014-02-01T01:29:00.810 回答
0

首先,正如@dithermaster 明智地建议的那样,您应该检查是否将 LED 置于正确的方向。扁平侧(最短引脚)应始终插入-引脚,圆边(最长引脚)应始终插入+引脚。

切勿在两个 IO 引脚之间连接 LED,因为它可能会损坏 Atmega!

所以基本上,你想要+pin on pinled-pin on GND

也就是说,如果你说你什么都没改变,而且你用不同的板子尝试过,你的问题确实很奇怪……</p>

所以,我现在想知道您的 Arduino 库是否没有以某种方式损坏……也许您是否在不久前倒转的代码中破解了某些东西HIGHLOW忘记了它?

为了帮助您调试它,您可以尝试一些方法:

1/你可以在函数中改变HIGHfor1LOWfor ,看看行为是否改变了?0digitalWrite()

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.猜测是有人倒转了HIGHand LOW,或者方式digitalWrite()HIGHand一起表现LOW4.是绝望的解决方案:-)

于 2014-01-31T22:35:46.860 回答
0

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

于 2018-07-04T17:57:37.477 回答