Я работаю над простым рулевым управлением автомобиля, поэтому я сделал 2 кнопки для перемотки вперед/назад и 2 кнопки для управления влево/вправо. У меня есть 2 светодиода, чтобы просто увидеть, как он работает, но он не работает, как мне нравится. Я могу использовать только одну кнопку i один раз, поэтому, двигаясь вперед, я не смогу двигаться влево/вправо и т.д. Как это сделать? Вот мой код в IDE:Arduino: Использование нескольких входов в одно и то же время
int LED = 12;
int LED2 = 2;
int ButtonUP = 9;
int ButtonDOWN = 7;
int ButtonLEFT = 4;
int ButtonRIGHT = 8;
int sygnalUP = 0;
int sygnalDOWN = 0;
int sygnalLEFT = 0;
int sygnalRIGHT = 0;
void setup() {
pinMode (LED, OUTPUT);
pinMode (ButtonUP, INPUT_PULLUP);
pinMode (ButtonDOWN, INPUT_PULLUP);
pinMode (ButtonLEFT, INPUT_PULLUP);
pinMode (ButtonRIGHT, INPUT_PULLUP);
Serial.begin(9600);
Serial.println(" |GORA|DOL|LEW|PRA");
}
void loop() {
int buttonUPst = digitalRead(ButtonUP);
int buttonDOWNst = digitalRead(ButtonDOWN);
int buttonLEFTst = digitalRead(ButtonLEFT);
int buttonRIGHTst = digitalRead(ButtonRIGHT);
if (buttonUPst == LOW) {
digitalWrite(12, HIGH);
sygnalUP = 1;
Serial.print("Sygnal: ");
Serial.print(sygnalUP);
Serial.print(" | ");
Serial.print(sygnalDOWN);
Serial.print(" | ");
Serial.print(sygnalLEFT);
Serial.print(" | ");
Serial.println(sygnalRIGHT);
delay(300);
digitalWrite(12, LOW);
sygnalUP = 0;
}
if (buttonDOWNst == LOW) {
digitalWrite(12, HIGH);
sygnalDOWN = 1;
Serial.print("Sygnal: ");
Serial.print(sygnalUP);
Serial.print(" | ");
Serial.print(sygnalDOWN);
Serial.print(" | ");
Serial.print(sygnalLEFT);
Serial.print(" | ");
Serial.println(sygnalRIGHT);
delay(300);
digitalWrite(12, LOW);
sygnalDOWN = 0;
}
if (buttonLEFTst == LOW) {
digitalWrite(LED2, HIGH);
sygnalLEFT = 1;
Serial.print("Sygnal: ");
Serial.print(sygnalUP);
Serial.print(" | ");
Serial.print(sygnalDOWN);
Serial.print(" | ");
Serial.print(sygnalLEFT);
Serial.print(" | ");
Serial.println(sygnalRIGHT);
delay(300);
digitalWrite(LED2, LOW);
sygnalLEFT = 0;
}
if (buttonRIGHTst == LOW) {
digitalWrite(LED2, HIGH);
sygnalRIGHT = 1;
Serial.print("Sygnal: ");
Serial.print(sygnalUP);
Serial.print(" | ");
Serial.print(sygnalDOWN);
Serial.print(" | ");
Serial.print(sygnalLEFT);
Serial.print(" | ");
Serial.println(sygnalRIGHT);
delay(300);
digitalWrite(LED2, LOW);
sygnalRIGHT = 0;
}
}
Как вы можете видеть, я сделал код, чтобы увидеть, как входы работают в сериале, это выглядит следующим образом:
|GORA|DOL|LEW|PRA Sygnal: 1 | 0 | 0 | 0 Sygnal: 1 | 0 | 0 | 0 Sygnal: 1 | 0 | 0 | 0 Sygnal: 1 | 0 | 0 | 0 Sygnal: 0 | 1 | 0 | 0 Sygnal: 0 | 1 | 0 | 0 Sygnal: 0 | 1 | 0 | 0 Sygnal: 0 | 1 | 0 | 0 Sygnal: 0 | 0 | 1 | 0
И здесь вы можете см. также, что я не могу сделать два «1» в ряд. Я знаю, что делаю здесь основную ошибку, но мои знания довольно бедны. Спасибо за любую помощь.
Это не C. И формат/отступ вашего кода должным образом. – Olaf