Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
arduino mega上的内置led发光代码_Arduino_Atmega_Atmelstudio - Fatal编程技术网

arduino mega上的内置led发光代码

arduino mega上的内置led发光代码,arduino,atmega,atmelstudio,Arduino,Atmega,Atmelstudio,我在atmel studio上编写了一个代码,用于闪烁针脚13上的led。上传代码后,xloader mega的内置led闪烁。 我在我的mega上上传了淡入淡出的代码,内置的led灯闪烁而不是led灯。我该怎么办? 我使用的是arduino mega 2560 int main(无效) { DDRB=0b00000000; 而(1) { PORTB=0b10000000; _延迟μms(1000); PORTB=0b00000000; } } 你应该怎么做?阅读手册 请参阅 第13.2章 DD

我在atmel studio上编写了一个代码,用于闪烁针脚13上的led。上传代码后,xloader mega的内置led闪烁。 我在我的mega上上传了淡入淡出的代码,内置的led灯闪烁而不是led灯。我该怎么办? 我使用的是arduino mega 2560

int main(无效)
{
DDRB=0b00000000;
而(1)
{
PORTB=0b10000000;
_延迟μms(1000);
PORTB=0b00000000;
}
}

你应该怎么做?阅读手册

请参阅

第13.2章

DDRx寄存器中的DDxn位选择该引脚的方向。 如果DDxn为写入逻辑1,则Pxn配置为输出引脚。如果 DDxn为写入逻辑零,Pxn配置为输入引脚

如果你不知道寄存器是做什么的,那么使用寄存器是没有意义的

DDRB=0b00000000;     

只提供输入。

为什么要使用Arduino并尝试在没有常规宏和函数的情况下对其进行编程

如果您试图使led闪烁或使其呼吸,则使用Arduino IDE及其内置函数analogWrite()为您的led或任何支持analogWrite()的合适管脚上的led生成pwm脉冲。如果您没有合适的知识,您不应该尝试对寄存器进行任何直接修改,因为您可能会破坏您的开发工具包,并可能烧掉其他东西。请使用工具包的示意图找出支持analogwrite()的管脚,然后在示例中使用代码


这样,您可以更快地实现目标,而且不会出现任何问题。

TL/DR:您必须将
DDRB
中的第7位设置为1

在AVR中,端口由两个寄存器中的位配置:
DDRx
PORTx

DDRx
寄存器中的相应位设置为1时,端口配置为输出。并且
PORTx
寄存器中的相应位选择引脚上输出的电平。如果为0,则内部MOSFET将引脚短路至“接地”通道,并吸收来自外部电源的电流。当端口X的位为1时,则引脚连接到“VCC”,产生足够点亮LED的大电流

但是,如果引脚连接到某个东西上,什么东西消耗了太多的电流,或者引脚对GND或VCC短路(假设您连接并按下了一个按钮),那么输出MOSFET可能过载并损坏

如果
DDRx
中的位设置为零,则引脚配置为输入。如果端口X中的相应位为零,则该引脚与电源线没有内部连接,称为“高阻抗”状态或三态。它不产生或吸收任何电流。所以,如果没有连接外部电流源,则引脚电平浮动,受电气干扰的影响。逻辑级别是不可检测的,可能会偶尔更改。例如,如果您想连接一个按钮(在pin和GND之间),则只有在按下按钮时才定义逻辑级别。当它被释放时,逻辑级别将是未定义的

但是!如果端口X中的位设置为1,则内部MOSFET通过电阻器(约35千欧)将引脚连接到VCC线。这使得引脚产生少量电流,将其逻辑电平设置为高电平。因此,如果一个按钮被连接,当它被释放时,引脚将定义为高电平。这被称为“上拉电阻器”。当按下按钮时,它不会短路并损坏MCU,因为流过按钮的电流受到电阻器的限制,但逻辑电平将被定义为低电平

如果有一个LED连接到pin而不是按钮,该怎么办?极少量的电流将流过LED,使其几乎不发光


请阅读(第13章I/O端口)

中的更多内容,这段神秘的代码中没有任何内容会导致褪色。提示:使用为零件定义的宏和名称。二进制常量很难读取和调试。请举例说明如何通过设置I/O寄存器销毁Arduino或“烧掉其他东西”?你不应该劝阻那些想看看阿德鲁诺裙子下面的人。首先,我不是在泄气,而是让他们知道事情的真相。其次,您可以缩短端口和引脚,并销毁它们,以及更多。Arduino不应该这样使用。因此,对于长达500页的Atmel数据表一无所知的人将花费数月的时间试图获得一个闪烁的代码,我认为这是没有成效的!是吗?除此之外,我并没有参考操作手册,而是参考了Arduino IDE,并给了他一些建议,让他的led呼吸等等。。我看你不明白我的帖子和你的帖子在这里是毫无意义的。呃,谁说Arduino不应该这样使用?在你30美元的Arduino板上炸掉一些别针也比在你的职业生涯中在百万美元的客户设备上犯同样的基本错误要好!每个人都要学习。如果他想学习使用Atmel studio和手头的PDF,为什么不呢?他可能比其他人学到更多,只是把别人的代码块粘在一起。