1
Pomoc doraźna / Odp: MaSzyna 24.06 problemy.
« dnia: 06 Lipca 2024, 17:01:38 »
Galicja i Glinojeck zatrzymują się podczas ładowania. Inne scenerie ładują się normalnie.
Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.
doPC[12] = map(analogRead(A15), 0, 1023, 0, 255);
Maćku, które? Mógłbyś wypisać tarcze to w wolnych chwili poprawię. Na etapie pisania scenerii poprawiałem wszystkie rezonatory, i być może w wyniku literówki czy przeoczeń nie wszystko prawidłowo przypisałem.Jadąc EIE8310 zaczynając od Wolicy widzę takie problemy z SHP. Lampki zapalają się dopiero za tarczą, a nie porzy przejeżdżaniu nad rezonatorem.
Wygląda na to, że ustawienia yes/no już nie są aktualne i wraz z nowymi funkcjami, które finalnie trafiły do exe Milka (niestety nie ma go w aktualizacji 22.11) zmieniło się sterowanie z eu07.ini.
- UART- rozbudowa o nowe parametry (zachowana kompatybilność wsteczna- obsługiwane po wykryciu),
uartfeature main|scnd|train|local|radiovolume|radiochannel
Wyłączenie danej funkcji odbywa się poprzez usunięcie wpisu znajdującego się między pionowymi liniami. Nie będzie zatem wstecznej kompatybilności bo zmienił się zupełnie sposób konfigurowania zarówno dotychczasowych jak i dwóch nowych funkcji.Ja u siebie w Arduino mam na końcu asekuracyjne "delay(100)", bo wcześniej też się różne dziwne rzeczy działy.Ja mam klona MEGA z 16U2, w kodzie bez deley'ów, a w eu07.ini mam takie wartości, więc chyba dość szybka wymiana danych jest. Żadnych problemów z gubieniem synchronizacji.
uart COM3 115200 0.05 0.05
Osobiście miałem jedno MEGA z CH340 i w ogóle nie chciało działać, więc nawet nie próbowałem z pulpitem. Mam kilka klonów NANO z CH340 i jedne działają dobrze po USB, a inne nie bardzo. NANO mam wszczepione do manipulatora Radmora, ale tam nie korzystam w ogóle z USB. Programowanie wyciągnąłem sobie z ISP na DB9 do podpięcia USBasp gdy coś tam sobie chcę poprawić w kodzie, a samo NANO gada z MEGA po COMie, więc nie czuję problemu z USB.
odczytanaPozycjaNastawnika = analogRead(A5); //Odczytujemy wartość napięcia
if (odczytanaPozycjaNastawnika > 500) {
pozycjaNastawnika = map(odczytanaPozycjaNastawnika, 1023, 500, 0, 10);
} else {
pozycjaNastawnika = 10;
}
if (odczytanaPozycjaNastawnika <= 500) {
pozycjaHamulca = map(odczytanaPozycjaNastawnika, 500, 0, 0, 100);
} else {
pozycjaHamulca = 0;
}
Chociaż wydaje mi się, że nastawnik działa od pozycji środkowej i do przodu rosną pozycje jazdy, a do tyłu hamowanie. Jeśli tak to raczej przy 500 oba są na 0 i kręcąc w jedną stronę rosną pozycje nastawnika, później wracamy do zera i kręcąc w drugą stronę rosną pozycje hamowania ED. Jeśli tak to powyższy kod trzeba trochę zmodyfikować.
doPC[10] = pozycjaNastawnika
22 impulse hornhighactivate
23 impulse hornlowactivate
dla czuwaka jest oczywiście jeden wpis bo to jeden przycisk7 impulse alerteracknowledge
volatile uint8_t zPC[52] = {0}; // standardowe bajty przekazywane do kodu Arduino
volatile uint8_t doPC[20] = {0xEF, 0xEF, 0xEF, 0xEF}; // standardowe bajty przyjmowane z kodu Arduino
void setup() {
pinMode(2, OUTPUT); //ustawienie pinu 2 jako wyjście cyfrowe
pinMode(3, OUTPUT); //ustawienie pinu 3 jako wyjście cyfrowe
pinMode(4, INPUT_PULLUP); //ust pinu 4 jako wejscie
digitalWrite(2, LOW); //ustawienie stanu niskiego na pinie 2
digitalWrite(3, LOW); //ustawienie stanu niskiego na pinie 3
Serial.begin(115200); //nawiązanie komunikacji z prędkością 115200b/s
Serial.setTimeout(10);
while(!Serial){}; //czekanie do nawiązania komunikacji z komputerem
}
void loop() {
bitWrite(doPC[4], 7, !digitalRead(4)); //syrena ton wysoki
while (!Serial.available()) {};
Serial.readBytes((char*)zPC, 52);
Serial.write((char*)doPC, 20);
digitalWrite(2, (bitRead(zPC[8], 6))); //czuwak
digitalWrite(3, (bitRead(zPC[8], 7))); //shp
}
Dziękuję za rzeczową odpowiedź. Natomiast jeśli ustawię wartość maksymalnego wychylenia w stosunku do maksymalnego wskazania na manometrze to wtedy wskazówka pokazuje bzdury.Patrząc na to co mam w kodzie testowym, gdy sobie ćwiczyłem zastosowanie tych silniczków to mam tak jak pisałem wcześniej:
Dlatego moje pytanie brzmi, czy maksymalna wartość w bitach, tudzież 255 dla zbiornika głównego to 1,6 Mpa czy raczej 0,8 Mpa według symulatora?
motor3.setPosition(map(TankPress, 0, 1023, 0, 3318));
gdzie TankPress to wartość z exe, a konkretnie ciśnienie w zbiorniku głównym z obu bajtów 15 i 16, żeby mieć zakres 10 bitowy (do 1023).zPC_TankPress = zPC[15];
zPC_TankPress1 = zPC[16];
TankPress = (zPC_TankPress << 0) | (zPC_TankPress1 << 8);
Jeśli chcesz na jednym bajcie to po prostu bierzesz sobie tylko bajt 15 i robisz mapowanie nie do 1023 tylko do 255.Słuchajcie, kod eventów spadku zasilania to parę linijek, mogę teraz zrobić prawdopodobieństwo 0%, a później jak poprawione zostanie zachowanie AI to można prawdopodobieństwo zwiększyć do 1-3%. To w mojej ocenie będzie najlepsze rozwiązanie.Generalnie spadki napięcia nie są problemem jeśli nie uniemożliwiają kontynuowania jazdy. Raz miałem sytuację zaraz na starcie wrzosy_ic8310, które mocno eksploatuję, że spadek napięcia był jeszcze przed ruszeniem z Wolicy, a jak już napięcie wróciło to semafor wygasł i nie można było wyjechać na szlak.