Cześć,
Chciałbym utworzyć aplikację w Powered Up żeby zautomatyzować przejazd kolejowy dla pojedynczego toru
Posiadam
Technic HUB 88012
2x Technic Large Motor 88013 (właściwie to mam jeden ale niedługo kupię drugi) (porty C i D w hub-ie)
2x Color and distance sensor 88007 (porty A i B w hubie)
Więc jak to powinno działać? Mój pomysł jest następujący
scenariusz 1: nie widać pociągu, szlabany są podniesione (brak sygnałów na obu czujnikach)
scenariusz 2: pociąg zbliża się do czujnika w porcie A ->pociąg zasłania czujnik odległości A->zapory opuszczają się->zapory opuszczone->oczekiwanie na sygnał z czujnika w porcie B->pociąg zasłania czujnik odległości B->oczekiwanie na brak sygnału z czujnika B->zapory podnoszą się.
scenariusz 3: taki sam jak 2, ale pociąg zbliża się do czujnika w porcie B
Jeśli pociąg jest krótszy niż odległość między dwoma czujnikami, sygnały generujące przez poruszający się skład będą następujące
sygnał na 1->brak sygnału na 1->sygnał na 2->brak sygnału na 2
ale jeśli pociąg jest dłuższy, mamy:
sygnał na 1->sygnał na 2->brak sygnału na 1->brak sygnału na 2
Czekam na sygnał z drugiego czujnika, ponieważ pociąg może zatrzymać się na przejeździe, więc w takim przypadku szlabany powinny pozostać opuszczone. I tu pojawia się pierwszy problem, jak odróżnić scenariusz 1 od sytuacji, w której krótki pociąg mija jeden czujnik i zatrzymuje się - w obu przypadkach mamy brak sygnału na obu czujnikach, ale w scenariuszu 1 szlabany powinny być podniesione, a w tym - opuszczone.
Czy widzicie jakieś inne wady tego algorytmu?
Nie mam pojęcia, jak zaimplementować go w aplikacji LEGO. Myślę, że muszę przechowywać stany czujników w zmiennych, aby uniknąć ciągłego sprawdzania stanu w pętli?
Ktoś może pomóc chociaż z pseudokodem. Napisałem wątek na rebrickable ale nikt nie odpowiedział.
#programowanie #lego