Arduino - traťový souhlas
Napsal: 04 říj 2023, 21:23
Zdravím, učím se programovat Arduino a chtěl jsem vyzkoušet udělat něco jako traťový souhlas pro modelovou železnici. Měl by fungovat následovně:
Pokud zmáčknu zelené tlačítko 1, rozbliká se led dioda, pokud následně zmáčknu červené tlačítko, led dioda bude svítit. Pokud následně podruhé zmáčknu červené tlačítko, led dioda zhasne. Pokud bych ale po zmáčknutí zeleného tlačítka 1 zmáčkl zelené tlačítko 2 místo toho červeného, led dioda okamžitě zhasne.
Zkoušel jsem to různě naprogramovat, ale vždy docílím jen toho, že po zmáčknutí zeleného tlačítka 1 se dioda rozbliká, ale po zmáčknutí červeného se již nic neděje. Nedokázal by mi někdo poradit? Zatím kód vypadá takto a zkouším to v tinkercadu:
// digitální piny
const int zeleneTlac1 = 2;
const int cerveneTlac = 3;
const int zeleneTlac2 = 4;
const int led = 13;
// Proměnná
bool stavLed = false;
// INPUT/OUTPUT
void setup() {
pinMode(zeleneTlac1, INPUT);
pinMode(cerveneTlac, INPUT);
pinMode(zeleneTlac2, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
// stav zeleného tlačítka 1
if (digitalRead(zeleneTlac1) == HIGH) {
// blikání
stavLed = true;
while (stavLed) {
digitalWrite(led, HIGH);
delay(250);
digitalWrite(led, LOW);
delay(250);
}
}
// stav červeného tlačítka
if (digitalRead(cerveneTlac) == HIGH) {
// LED svítí
digitalWrite(led, HIGH);
stavLed = true;
}
// stav zeleného tlačítka 2
if (digitalRead(zeleneTlac2) == HIGH) {
// LED zhasne
digitalWrite(led, LOW);
stavLed = false;
}
}
Pokud zmáčknu zelené tlačítko 1, rozbliká se led dioda, pokud následně zmáčknu červené tlačítko, led dioda bude svítit. Pokud následně podruhé zmáčknu červené tlačítko, led dioda zhasne. Pokud bych ale po zmáčknutí zeleného tlačítka 1 zmáčkl zelené tlačítko 2 místo toho červeného, led dioda okamžitě zhasne.
Zkoušel jsem to různě naprogramovat, ale vždy docílím jen toho, že po zmáčknutí zeleného tlačítka 1 se dioda rozbliká, ale po zmáčknutí červeného se již nic neděje. Nedokázal by mi někdo poradit? Zatím kód vypadá takto a zkouším to v tinkercadu:
// digitální piny
const int zeleneTlac1 = 2;
const int cerveneTlac = 3;
const int zeleneTlac2 = 4;
const int led = 13;
// Proměnná
bool stavLed = false;
// INPUT/OUTPUT
void setup() {
pinMode(zeleneTlac1, INPUT);
pinMode(cerveneTlac, INPUT);
pinMode(zeleneTlac2, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
// stav zeleného tlačítka 1
if (digitalRead(zeleneTlac1) == HIGH) {
// blikání
stavLed = true;
while (stavLed) {
digitalWrite(led, HIGH);
delay(250);
digitalWrite(led, LOW);
delay(250);
}
}
// stav červeného tlačítka
if (digitalRead(cerveneTlac) == HIGH) {
// LED svítí
digitalWrite(led, HIGH);
stavLed = true;
}
// stav zeleného tlačítka 2
if (digitalRead(zeleneTlac2) == HIGH) {
// LED zhasne
digitalWrite(led, LOW);
stavLed = false;
}
}