В чем проблема? Мотор работает нормально только когда мы нажимаем левую клавишу, а не другие.
int mf11=13;//motor1 1-й терминал
int mf12=12;//motor1 2-й терминал
int mf21=9;//motor2 1-й терминал
int mf22=8;//motor2 2-й терминал
int fr=2;//передний ключ
int bk=3;//клавиша возврата
int rt=4;//правая клавиша
int lt=5;//левая клавиша
void setup() {
pinMode(mf11,OUTPUT);
pinMode(mf12,OUTPUT);
pinMode(mf21,OUTPUT);
pinMode(mf22,OUTPUT);
pinMode(fr,INPUT);
pinMode(bk,INPUT);
pinMode(rt,INPUT);
pinMode(lt,INPUT);
}
void loop() {
int s = digitalRead (fr);
int h = digitalRead (bk);
int i = digitalRead (rt);
int v = digitalRead (lt);
if(s==HIGH) {
digitalWrite(mf11,HIGH);
digitalWrite(mf12,LOW);
digitalWrite(mf21,HIGH);
digitalWrite(mf22,LOW);
}
if (h==HIGH) {
digitalWrite(mf11,LOW);
digitalWrite(mf12,HIGH);
digitalWrite(mf21,LOW);
digitalWrite(mf22,HIGH);
}
if (i==HIGH) {
digitalWrite(mf11,LOW);
digitalWrite(mf12,HIGH);
digitalWrite(mf21,HIGH);
digitalWrite(mf22,LOW);
}
if (v==HIGH) {
digitalWrite(mf11,HIGH);
digitalWrite(mf12,LOW);
digitalWrite(mf21,LOW);
digitalWrite(mf22,HIGH);
} else {
digitalWrite(mf11,LOW);
digitalWrite(mf12,LOW);
digitalWrite(mf21,LOW);
digitalWrite(mf22,LOW);
}
}
1 ответ
▲ 3
Причина, по которой ваш код работает только для left, заключается в том, что когда v имеет низкий уровень, ваш блок else выполняется и устанавливает все контакты в низкий уровень! Вам нужно использовать else if.
if(condition1)
{
...
}
else if (condition2)
{
...
}
else
{
...
}
,
@esoterik
Смотрите также:
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Нужны схемы, чтобы можно было понять, что происходит... Также я предполагаю, что вы действительно хотите использовать операторы else if, а не отдельные операторы if, поскольку else применяется только к оператору if(v==HIGH) (это может быть частью/всей вашей проблемой, поскольку именно это условие, как вы говорите, работает), @Chad G