Подскажите, пожалуйста, по коду
- Войдите на сайт для отправки комментариев
Вс, 27/03/2016 - 18:42
Добрый день! Прошу подсказать по коду. Что-то я совсем запутался в ветвях условий.
Есть задача управлять тельфером церез два реле (по которым будет идти ток уже на пускатели тельфера)
Управление кнопочными постами (с кнопкой вызова на этаж).
В общем виде код вот... Но что-то явно я тут напутал..))
int level1 = 3;// первый этаж int level2= 4; // второй этаж int level3 =5; // третий этаж int level4 =6; // четвертый этаж int r1 = 7; //реле 1- вверх int r2 = 8; // реле 2- вниз int knopka1 = 9; //Кнопка первого этажа int knopka2 =10; // Кнопка второго этажа int knopka3 =11; // Кнопка третьего этажа int knopka4 =12; // Кнопка четвертого этажа int knopka_stop =13; // Стоп int knopka_X; // Переменная записи цели движения (на какой этаж) int d;// Переменная этажа void setup() { pinMode(level1, INPUT); pinMode(level2, INPUT); pinMode(level3, INPUT); pinMode(level4, INPUT); pinMode(knopka1, INPUT); pinMode(knopka2, INPUT); pinMode(knopka3, INPUT); pinMode(knopka4, INPUT); pinMode(knopka_stop, INPUT); pinMode(r1, OUTPUT); pinMode(r2, OUTPUT); } void loop() { //Определяем нажатую кнопку if(digitalRead(knopka1)==HIGH) { knopka_X=1; } if(digitalRead(knopka2)==HIGH) { knopka_X=2; } if(digitalRead(knopka2)==HIGH) { knopka_X=3; } if(digitalRead(knopka2)==HIGH) { knopka_X=4; } if(digitalRead(knopka_stop)==HIGH) { knopka_X=0; } //Определяем уровень платформы if (digitalRead(level1)==HIGH) { d=1; } if(digitalRead(level2)==HIGH) { d=2; } if (digitalRead(level3)==HIGH) { d=3; } if (digitalRead(level4)==HIGH) { d=4; } //Если кнопка стоп не нажата if (digitalRead(knopka_stop)!=HIGH) { //Если нажата кнопка первого этажа if (knopka_X==1) { if(d!=1)// Платформа не на первом этаже { move_start(2); // Двигаемся вниз } } if (knopka_X==2) // Если нажата кнопка второго этажа { if(d!=2) // Мы не на втором этаже { if(d<2) // Если мы ниже второго этажа { move_start(1); // Двигаемся вверх } if(d>2) // Если мы ниже второго этажа { move_start(2); // Двигаемся вниз } } } if (knopka_X==3) //Если нажата кнопка третьего этажа { if(d!=3) // Если мы не на третьем этаже { if(d<3) //Если мы ниже третьего этажа { move_start(1); // Двигаемся вверх } if(d>3) //Если мы выше третьего этажа { move_start(2) ; //Двигаемся вниз } } } if (knopka_X==4)//Если нажата кнопка четвертого этажа { if(d!=4) //Мы не на четвертом { move_start(1) ; // Двигаемся вверх } } else { digitalWrite(r1, LOW); digitalWrite(r2, LOW); } } delay(50); } void move_start(int x) //Включаем пускатель вниз или вверх { if (x==1) { digitalWrite(r2, LOW); digitalWrite(r1, HIGH); //Двигаемся вверх } if (x==2) { digitalWrite(r1, LOW); digitalWrite(r2, HIGH); // Двигаемся вниз } }
Заранее спасибо за любую подсказку
Ух как круто! Спасибо большущее!!!