Debugging Arduino项目(交通灯)*需要创意*
这是我到目前为止的代码,我需要帮助使Arduino的pin2上的按钮发生中断,如果灯可以自行循环,如果按下按钮,则必须点亮黄色LED 3秒,并点亮红色LED 10秒,以便行人通过。我已经设置了循环,但我需要按钮来工作,我很难做到这一点,有什么建议吗 代码Debugging Arduino项目(交通灯)*需要创意*,debugging,arduino,Debugging,Arduino,这是我到目前为止的代码,我需要帮助使Arduino的pin2上的按钮发生中断,如果灯可以自行循环,如果按下按钮,则必须点亮黄色LED 3秒,并点亮红色LED 10秒,以便行人通过。我已经设置了循环,但我需要按钮来工作,我很难做到这一点,有什么建议吗 代码 int red = 10; int yellow = 9; int green = 8; int button = 2; // switch is on pin 2 void setup(){ pinMode(red, OUTPUT); p
int red = 10;
int yellow = 9;
int green = 8;
int button = 2; // switch is on pin 2
void setup(){
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
pinMode(button, INPUT);
digitalWrite(green, HIGH);
}
void loop() {
if (digitalRead(button) == HIGH){
delay(15); // software debounce
if (digitalRead(button) == HIGH) {
// if the switch is LOW change the lights
changeLights();
delay(1000); // wait for 1 second
}
}
}
void changeLights(){
// RED ON for 5 sec
digitalWrite(red, HIGH);
digitalWrite(yellow, LOW);
digitalWrite(green, LOW);
delay(5000);
// GREEN ON for 5 sec
digitalWrite(red, LOW);
digitalWrite(yellow, LOW);
digitalWrite(green, HIGH);
delay(5000);
// YELOOW ON for 3 sec
digitalWrite(red, LOW);
digitalWrite(yellow, HIGH);
digitalWrite(green, LOW);
delay(3000);
}
这是用于外部中断的Arduinos示例代码:
const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
}
void loop() {
digitalWrite(ledPin, state);
}
void blink() {
state = !state;
}
如果pinput pininterruptPin
的状态发生变化,微控制器将为该中断调用闪烁
提供服务。然后它跳回被中断的应用程序
因此,在你的按钮引脚上附加一个中断服务程序,并将你应该在下一次机会开始黄-红阶段的信息存储在一个变量中
由于黄红色阶段通常无法中断,如果您的程序在此期间没有控制任何其他内容,您可以使用延迟等阻塞代码来计时。我们通常希望人们在提出请求之前自己尝试一下。你的帖子表明你甚至没有在网上搜索“arduino中断”,因为我在你的代码中没有找到任何与中断相关的东西。因此,走出去,搜索网页,找到第一个点击,阅读它,尝试例子,修改例子,然后你知道如何使用中断,并可以将这些知识应用到你的项目中