Отговори на тема  [ 7 мнения ] 
Логика за асансьор 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Вто Юни 27, 2017 7:03 am
Мнения: 24
Местоположение: Варна
Мнение Логика за асансьор
Здравейте
мъча се да направя една логика за асансьор,но не са ми достатъчни знанията и не се получава.И се обръщам към вас за помощ.Измислих това,но не е добре така
Код:
void loop(){
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
buttonState3 = digitalRead(buttonPin3);

if (buttonState1 != lastButtonState1 || buttonState2 != lastButtonState2 || buttonState3 != lastButtonState3) {
if(level1 == true){
if (buttonState1 == HIGH) {
level1 = true;
level2 = false;
level3 = false;
}
if (buttonState2 == HIGH) {
level1 = false;
level2 = true;
level3 = false;
}
if (buttonState3 == HIGH) {
level1 = false;
level2 = false;
level3 = true;
}
}
else if(level2 == true){
if (buttonState1 == HIGH) {
level1 = true;
level2 = false;
level3 = false;
}
if (buttonState2 == HIGH) {
level1 = false;
level2 = true;
level3 = false;
}
if (buttonState3 == HIGH) {
level1 = false;
level2 = false;
level3 = true;
}
}

else if(level3 == true){
if (buttonState1 == HIGH) {
level1 = true;
level2 = false;
level3 = false;
}
if (buttonState2 == HIGH) {
level1 = false;
level2 = true;
level3 = false;
}
if (buttonState3 == HIGH) {
level1 = false;
level2 = false;
level3 = true;
}
}

}

lastButtonState1 = buttonState1;
lastButtonState2 = buttonState2;
lastButtonState3 = buttonState3;
}


Дойде ми идеята да направя цикъл с for и да проверявам датчиците за дадените етажи,и така да се разбере къде се намира в момента асансьора и от там да се определя в каква посока да започне въртенето на електромотора.Но не ми стигат знанията как стане.Ще се проверява датчика на всеки от 3 етажа и ще има case за всеки етаж със следене датчик за дадения етаж.Поне така си мисля че е правилно,но не знам дали е правилно така и затова се обръщам към вас за помощ.


Вто Ное 08, 2022 8:09 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 8:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Логика за асансьор
Това домашно ли е?

_________________
Warriors of the Night, ASSEMBLER!!!


Вто Ное 08, 2022 2:21 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: Логика за асансьор
Всякак е правилно ако работи, стейт машина е класически подход, но ако целта е само да се определи посоката и положението то за това са достатъчно няколко променливи, натиснат бутон, текущ етаж, стар етаж ако натиснат бутон >текущ етаж въртиш нагоре, ако е <текущ етаж въртиш надолу. Реално и стар етаж не е нужен ако не реализираш допълнителна логика.


Вто Ное 08, 2022 2:45 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 1:45 am
Мнения: 260
Мнение Re: Логика за асансьор
Този асансьор няма да вози нищо живо, надявам се.


Сря Ное 09, 2022 11:46 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Вто Юни 27, 2017 7:03 am
Мнения: 24
Местоположение: Варна
Мнение Re: Логика за асансьор
tolstolob написа:
Този асансьор няма да вози нищо живо, надявам се.

Не няма
ToHu написа:
Всякак е правилно ако работи, стейт машина е класически подход, но ако целта е само да се определи посоката и положението то за това са достатъчно няколко променливи, натиснат бутон, текущ етаж, стар етаж ако натиснат бутон >текущ етаж въртиш нагоре, ако е <текущ етаж въртиш надолу. Реално и стар етаж не е нужен ако не реализираш допълнителна логика.

И аз така си мислех,но предположих дали няма някое друго решение.
Мерси за отговорите,ще видя какво ще стане.


Сря Ное 09, 2022 1:41 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Съб Май 21, 2016 8:47 pm
Мнения: 472
Местоположение: Бургас
Мнение Re: Логика за асансьор
Не помагам много, ама за управление на асансьор с три етажа са достатъчни (освен бутоните по етажите и блокирането на вратите) 5 контактора и едно реле за време.


Сря Ное 09, 2022 3:53 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: Логика за асансьор
стейт машина е класика, но на първо място трябва да определиш кои са ти стейтовете. Не може етажа на който се намираш или бутона който си натиснал да е стейта, това са входни данни. Стейтовете при теб са Асансьира е в покой , Асансьора е в движение, т.е. това са установени състояния които описват цикъла на работа. Искам да кажа , че ако имплементираш стейт машина няма нужда да и,аш стейт за всеки етаж, то не само няма нижда а и е неправилно, стейтовете трябва да са по-фундаментални. В един реален асансьор имаш 10-на стейта, като в покой, движение, авариен стоп и т.н. Някои стейтове могат да се разбият на подстейтове примерно движение може да се раздели на тръгване, движение и спиране, защото много асансьори вече тръгват и спират с по-ниска скорост, това е пример, не казвам че има нужда да са отделни състояния.


Сря Ное 09, 2022 4:05 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 7 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни