Arduino数字引脚HIGH LOW输出似乎被逆转

时间:2014-01-31 21:55:52

标签: android bluetooth arduino arduino-ide digital-logic

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

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

3 个答案:

答案 0 :(得分:2)

在输出引脚上放置电压表或示波器。低电压为0伏特,高电压为5伏特吗?如果是这样,软件和芯片工作正常,你的LED接线,所以另一侧是电压,这意味着芯片的0 V将打开它。这是驱动LED的常用方法,因为一些芯片可以吸收比它们可以提供更多的电流。

答案 1 :(得分:0)

首先,正如@dithermaster明智地建议你应该检查一下你是否把LED放在正确的方向上。扁平侧(最短引脚)应始终插入-引脚和圆形侧(最长引脚)插入+引脚。

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

所以基本上,你想要+led- GND针脚。

那就是说,如果你说你没有改变任何东西,并且你尝试过不同的电路板,你的问题确实很奇怪......

所以,我现在想知道你的Arduino库是否在某种程度上没有被破坏......也许你刚才在代码中破解了HIGHLOW并忘记了它?

为了帮助您调试它,您可以尝试一些事情:

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); } HIGHLOW的行为方式。 4。是绝望的解决方案: - )

答案 2 :(得分:0)

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