去年我写了一段代码,当时效果很好 . 但是,这次加载相同的代码我得到反转输出 . 也就是说,当数字引脚设置为高电平时,它会返回低电平,反之亦然 .
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伏特,高电压为5伏特?如果是这样,软件和芯片工作正常,你的LED接线,所以另一侧是电压,这意味着芯片的0 V将打开它 . 这是驱动LED的常用方法,因为一些芯片可以吸收比它们可以提供更多的电流 .
首先,正如@dithermaster明智地建议你应该检查一下你是否把LED放在正确的方向上 . 应始终将扁平侧(最短引脚)插入
-
引脚,将圆形侧(最长引脚)插入+
引脚 .切勿在两个IO引脚之间连接LED,因为它可能会损坏Atmega!
所以基本上,你想要
led
引脚上的+
引脚和GND
上的-
引脚 .也就是说,如果你说你没有改变任何东西,并且你尝试过不同的电路板,你的问题确实很奇怪......
所以,我现在想知道你的Arduino库是否在某种程度上没有被破坏...也许你曾经在代码中破解了
HIGH
和LOW
,并且忘了它?为了帮助您调试它,您可以尝试以下几点:
1 /你可以在
digitalWrite()
函数中为1
和0
更改HIGH
,并查看行为是否发生了变化?2 /如果它确实改变了,你可以试试以下吗?
请你运行这个草图并告诉我们它是否按预期运行?看看arduino显示器
3 /你可以尝试改变
digitalWrite()
以下内容:
4 /我想,您可能还想卸载/重新安装完整的Arduino框架,重新启动 .
N.B. :我想在这里猜测,从1到3.是有人倒
HIGH
和LOW
,或digitalWrite()
用HIGH
和LOW
表现的方式 . 4.绝望的解决方案:-)我遇到这个问题的唯一一次是在我使用了arduino的boards.txt文件之后,如果你在这个文件中有任何改变,你可以卸载并删除C:/ Program Files / Arduino中的所有arduino剩余数据,只需备份库和其他脚本 . 然后重新安装arduino,它应该没问题 . 也可以从win10上的windows store安装Arduino以自动更新