【发布时间】:2021-07-11 12:03:08
【问题描述】:
所以,我正在制作一个项目,其中我将使用 Arduino Uno。我想要做的是,只要开关打开,Arduino 就会让 LED 闪烁。但是有一个转折点。 LED 将在开关状态变为高 10 秒后开始闪烁。但发生的情况是 LED 关闭 10 秒,然后打开 0.5 秒,然后再次关闭 10 秒。我想要它做的是,在保持关闭状态10秒后,它会一直闪烁。
这是代码
const int upperSwitch=2;
int buttonState;
const int ledPin=13;
unsigned long startMillis;
unsigned long currentMillis;
const unsigned long period = 10000;
void setup()
{
pinMode(upperSwitch,INPUT);
pinMode(ledPin,OUTPUT);
startMillis=millis();
}
void loop()
{
buttonState=digitalRead(upperSwitch);
if(buttonState==HIGH)
{
delay(10000);
currentMillis = millis();
if (currentMillis - startMillis >= period)
{
digitalWrite(ledPin,HIGH);
delay(500);
digitalWrite(ledPin,LOW);
delay(500);
}
}
}
我哪里错了?
【问题讨论】:
-
请不要在真正的自行车上摆弄爱好者板,这在大多数国家都是非常危险和非法的。自行车上的电子设备将通过广泛的型式认证和 EMC 测试,而您的爱好者委员会则没有。
-
“我哪里出错了?”您似乎将电线连接到了触觉开关的错误引脚......而且您将拉电阻连接到了开关的错误一侧。
-
仅当您希望按钮工作时。在插入任何东西之前,使用万用表上的“哔”声来验证您的电路。无论如何,从您的电线图片中无法判断哪些极属于同一根。
-
我看到你使用的是 13 号引脚,它也是 Arduino 内部使用的,所以你必须小心使用。请参阅 [Arduino 数字引脚](“数字引脚 | Arduino”arduino.cc/en/Tutorial/Foundations/DigitalPins)。
-
我不知道“两轮车”可能指的是什么,也不知道为什么它甚至与此代码或电路相关。由于它显然与您的问题无关,因此我将省略所有提及它的内容。最终你的最终应用程序是什么并不重要,它只是分散注意力。您还可以更清晰、更简单地描述 a) 它应该做什么,b) 它实际做什么 - 在问题中,而不是在 cmets 中。也就是说,去掉华夫饼,切入正题,准确无误。不要将问题与 5 分钟与 10 秒的废话混淆 - 只需描述此测试代码必须做什么。
标签: arduino embedded microcontroller arduino-uno atmega32