我的论文需要一些帮助 . 我完成了开关1,2和3的操作 .
如流程图所示,我需要禁用开关2和3,这样它就不会中断开关1的操作,也不会中断其他开关 . 然后我需要先打开开关1,然后在开关1操作结束后立即禁用开关1并启用开关2 .
启用开关2后,开关1和3应保持禁用状态,以便它不会中断开关2的操作,然后当开关2关闭时,应禁用它,然后启用开关3 .
启用开关3后,开关1和开关被禁用,因此我无法中断开关3的操作 . 关闭开关3后,它应该回到开始状态 .
我正在编写Arduino Mega 2560 .
这是我的代码
void loop() {
// put your main code here, to run repeatedly:
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
buttonState3 = digitalRead(buttonPin3);
if (buttonState1 == HIGH && buttonState2 == LOW && buttonState3 == LOW && counter == 1) {
plantMode();
} else if (buttonState1 == LOW && buttonState2 == HIGH && buttonState3 == LOW && counter == 2) {
maintenance();
} else if (buttonState1 == LOW && buttonState2 == LOW && buttonState3 == HIGH && counter == 3) {
harvestMode();
} else {
if (counter == 1) {
lcd.setCursor(0, 0);
lcd.print(" SWITCH ON ");
lcd.setCursor(0, 1);
lcd.print(" PLANTING MODE ");
digitalWrite(valve, HIGH);
delay(500);
} else if (counter == 2) {
lcd.setCursor(0, 0);
lcd.print(" SWITCH ON ");
lcd.setCursor(0, 1);
lcd.print("MAINTENANCE MODE");
digitalWrite(valve, HIGH);
delay(500);
} else {
lcd.setCursor(0, 0);
lcd.print(" SWITCH ON ");
lcd.setCursor(0, 1);
lcd.print(" HARVEST MODE ");
digitalWrite(valve, HIGH);
delay(500);
}
}
}
1 回答
制作一台状态机,每个按钮都有一个状态检查 .
我没有编译代码,但我相信它会起作用 .