如果使用Arduino,如果我使用这样的代码会怎么做:
int status;
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, status);
}
这个代码会做什么? LED会亮吗?会损坏芯片吗?在Arduino IDE中进行编译时,它表示没问题。还有其他问题,编译器无法捕获,但它们会做什么?另一个例子是做“digitalRead();”而它被设置为输出。
注意:使用Arduino Uno SMD版R2。
答案 0 :(得分:2)
您不会损坏Arduino,但您无法确定输出,因为该值未初始化。它保存内存在其位置所具有的任何值(将其视为未知的随机值)。但最有可能的是,它会被打开,因为如果你向它传递除LOW(= 0)以外的任何东西,digitalWrite会将引脚设置为高。在wires_digital.c中查看Arduino的源代码:
if (val == LOW) {
*out &= ~bit;
} else {
*out |= bit;
}
关于您的其他问题:
读取引脚值会返回PINx寄存器值,即引脚的物理状态(高或低),无论其模式如何(输入或输出)。
一般情况下,损坏Arduino非常困难,在大多数情况下,您需要在某些引脚上施加一些高/负电压来对其造成损坏。