Autor Wątek:  Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.  (Przeczytany 633183 razy)

0 użytkowników i 4 Gości przegląda ten wątek.

Offline erap2

  • Wiadomości: 96
  • JA
    • Zobacz profil
  • Otrzymane polubienia: 25
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1140 dnia: 28 Września 2022, 14:18:26 »
W eu07-input-uart wrzuciłem to co ma @mac310 i działa to właśnie tak jak pisałem wcześniej
Podłączyłem diody SHP/Czuwaka i dodałem przycisk który początkowo miał robić za syrenę, a następnie zmieniłem jego działanie na zbicie czuwaka. Diody działają, ale miewają momenty gdy przestają świecić prawidłowo. Ale za to większy problem mam z przyciskiem. W przypadku syreny działa tak, że po wciśnięciu z niewielkim opóźnieniem zaczyna trąbić, ale by przestał muszę nacisnąć drugi raz. A po podłączeniu czuwaka zbić mogę, ale gdy chcę przytrzymać, aby sprawdzić jego działanie okazuje się, że od razu naciska i puszcza. Myślałem, że chodzi o zmianę wpisu w pliku .ini z impulse na toggle, ale chyba błądzę

Offline mac310

  • Zasłużony dla Symulatora
  • Wiadomości: 518
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 73
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1141 dnia: 28 Września 2022, 15:10:15 »
W eu07_input-uart.ini dla syreny są dwa wpisy bo to działa jak dwa przyciski (niski i wysoki ton oddzielnie)
22 impulse hornhighactivate
23 impulse hornlowactivate
dla czuwaka jest oczywiście jeden wpis bo to jeden przycisk
7 impulse alerteracknowledge
Patrząc na Twój kod wygląda to w zasadzie OK, więc sprawdź wpis do uart.ini
Ja bym nie używał pinów 0 i 1 bo one są do obsługi uart'a (RX/TX) dla komunikacji po USB z PC. Możliwe, że zakłócasz tym przyciskiem na pinie 0 całą komunikację z exe.

Spróbuj przepiąć przycisk na pin 4 i sprawdź ten kod:
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

  }
« Ostatnia zmiana: 28 Września 2022, 15:12:34 wysłana przez mac310 »
Historia budowy pulpitu lokomotywy serii EU07.

Offline erap2

  • Wiadomości: 96
  • JA
    • Zobacz profil
  • Otrzymane polubienia: 25
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1142 dnia: 28 Września 2022, 22:25:25 »
Faktycznie, przepięcie przycisku na pin 4 naprawiło wszelkie problemy.

Teraz zostało mi tylko pytanie jak działać z nastawnikiem czy hamulcem? Mam potencjometr liniowy, i obrotowy. Z samym potencjometrem sobie radzę, ale nie mam pojęcia jak ustawić komunikację z exe? Uzywać: "mastercontrollerdecrease" i "mastercontrollerincrease"? Czy jest jakaś lepsza metoda?

EDIT. Sprawdziłem jeszcze i po pewnym czasie Arduino przestaje mi wysyłać dane do PCta. Nie wiem co z tym robić.
« Ostatnia zmiana: 28 Września 2022, 22:40:21 wysłana przez erap2 »

Offline youBy

  • Deweloper
  • Wiadomości: 6163
  • Co tam?
    • Zobacz profil
    • Automat Weryfikujący Regulację i Lambdę
  • Otrzymane polubienia: 865
Odp:  Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1143 dnia: 28 Września 2022, 22:32:42 »
W protokole jest miejsce, żeby w odpowiednim bajcie wepchnąć "procentową" wartość wychylenia w zakresie 0..255, gdzie 0 to 0 a 255 oznacza ostatnią pozycję. Szczegółów nie znam, korzystam z biblioteki, którą przygotował marcinn. Mój kod w arduino:
  comm->getState()->setControllerValue(ControllerType::master_controller, outputValueJ);
  comm->getState()->setControllerValue(ControllerType::independent_brake, outputValueH);
 
  comm->getState()->setControllerValue(ControllerType::train_brake, map(analogRead(analogInPinHZ), 170, 520, 0, 255));
Xoov
Powyższy post wyraża jedynie opinię autora w chwili publikacji. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyny, jak również informowania o tym.

Offline mac310

  • Zasłużony dla Symulatora
  • Wiadomości: 518
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 73
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1144 dnia: 29 Września 2022, 00:48:27 »
Nie podłączałem nastawnika przez potencjometr. Nastawnik robiłem początkowo na enkoderze szczelinowym, który wysyłał impulsy zwiększające lub zmniejszające pozycje nastawnika. Odkąd mam oryginalny nastawnik to zbieram sygnały że styków i analizuję je wszystkie jaką jedną liczbę i poprzez case rozpoznaję na jakiej jest pozycji. Pozycja jest wysyłana do exe bezpośrednio jako cały bajt.
W tzw. międzyczasie miałem koło że stykami dla każdej pozycji i też rozpoznawałem bezpośrednio pozycję. Można pozycje poprzez styki puścić na drabinkę rezystorów i odczytywać wartość napięcia. To jeśli chce się zaoszczędzić na pinach wejściowych. Wtedy wystarczy jeden analogowy jako woltomierz. Tego Nie próbowałem w praktyce. W sumie to i pewnie dałoby radę to zrobić przez potencjometr ale nie wiem jak byłoby z precyzją rozpoznania pozycji.
Potencjometr za to jak najbardziej dobry do kranu hamulca. Tu się przydaje funkcja map() i odczyt z pojedynczego pinu analogowego.
Historia budowy pulpitu lokomotywy serii EU07.

Online lcddisplay

  • Deweloper
  • Wiadomości: 207
    • Zobacz profil
  • Otrzymane polubienia: 429
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1145 dnia: 01 Października 2022, 17:02:41 »
Ma ktoś może wymiary pulpitu ET22?
Uśmiechnij się :)

Offline Hirek

  • Wiadomości: 296
  • ugułem to siemens fajne wozy robi
    • Zobacz profil
    • Kanał YT
  • Otrzymane polubienia: 212
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1146 dnia: 04 Października 2022, 12:08:44 »
Znajomy ma wyciągnięte te wszystkie żywicowe elementy. Jak je odrestauruje i złoży w całość to ma mi to pomierzyć. Będę miał na względzie to że ktoś tego poszukuje i podeślę jak sam dostanę. Oczywiście rysunkiem technicznym pulpitu ET22 również sam nie pogardzę bo tym szybciej tym lepiej :p
Z maszyną od PC 08.13
Tak, to ten furas co wydał MaSzynę xD

Offline erap2

  • Wiadomości: 96
  • JA
    • Zobacz profil
  • Otrzymane polubienia: 25
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1147 dnia: 12 Października 2022, 22:43:25 »
Próbuję w jakikolwiek sposób ugryźć tak hamulec jak i nastawnik, ale od kilku dni kompletnie stoję w miejscu. W żaden sposób nie potrafię przesłać do MaSzyny żądania zwiększenia pozycji nastawnika czy hamulca. Na początek próbuję zrobić chociaż zwiększanie pozycji przyciskiem - emulację klawiszy num+ i num- na Arduino. Do pliku eu07_input-uart.ini dodałem takie linijki:
0
1 impulse linebreakeropen
2 impulse linebreakerclose
3 impulse motoroverloadrelayreset
4 impulse compressoroverloadrelayreset
5 impulse converteroverloadrelayreset
6 impulse motorconnectorsopen
7 impulse alerteracknowledge
8 toggle batteryenable batterydisable
9 toggle converterenable converterdisable
10 toggle compressorenable compressordisable
11 impulse sandboxactivate
12 toggle heatingenable heatingdisable
13 impulse pantographcompressoractivate
14 toggle pantographcompressorvalveenable pantographcompressorvalvedisable
15 toggle motoroverloadrelaythresholdsetlow motoroverloadrelaythresholdsethigh
16 toggle pantographraisefront pantographlowerfront
17 toggle pantographraiserear pantographlowerrear
18 impulse wheelspinbrakeactivate
19 toggle headlightsdimenable headlightsdimdisable
20 toggle interiorlightdimenable interiorlightdimdisable
21 impulse independentbrakebailoff
22 impulse hornhighactivate
23 impulse hornlowactivate
24
25 toggle headlightenableleft headlightdisableleft
26 toggle headlightenableupper headlightdisableupper
27 toggle headlightenableright headlightdisableright
28 toggle redmarkerenableleft redmarkerdisableleft
29 toggle redmarkerenableright redmarkerdisableright
30 toggle interiorlightenable interiorlightdisable
31 toggle alarmchaintoggle
32 toggle reverserforward
33 toggle reverserneutral
34 toggle reverserbackward
35
36 impulse mastercontrollerincrease
37 impulse mastercontrollerdecrease
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

W pliku eu07.ini mam dodane takie linijki - włączyłem obsługę nastawnika:
uart COM3 115200 0.01 0.1
uarttune 0 0 0 0 1 1023 0.7 1023 0.6 1023 1 255 4000 1023 800 1023 150 1023
uartfeature yes no no no
uarttachoscale 1
uartdebug no

Niestety oczywiście nie działa to. Kod arduino do testów dałem najprostszy jaki się da:
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(4, INPUT_PULLUP); //ust pinu 4 jako wejscie
    pinMode(6, INPUT_PULLUP); //ust pinu 6 jako wejscie

    digitalWrite(2, LOW);     //ustawienie stanu niskiego na pinie 2

    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[8], 4, !digitalRead(4));   //nastawnik +
    bitWrite(doPC[8], 5, !digitalRead(6));   //nastawnik -
    digitalWrite(2, (bitRead(zPC[7], 6)));     //dioda baterii

    while (!Serial.available()) {};
    Serial.readBytes((char*)zPC, 52);
    Serial.write((char*)doPC, 20);

  }

Mam wrażenie, że potężnie błądzę, i nie wiem kompletnie co teraz.

Oczywiście w momencie gdy używam zwyczajnych diód czy przycisków wszystko działa prawidłowo - ten kod działa poprawnie:
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(4, INPUT_PULLUP); //ust pinu 4 jako wejscie
    pinMode(6, INPUT_PULLUP); //ust pinu 6 jako wejscie

    digitalWrite(2, LOW);     //ustawienie stanu niskiego na pinie 2

    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[6], 6, !digitalRead(4));   //ton wysoki
    bitWrite(doPC[6], 7, !digitalRead(6));   //ton niski
    digitalWrite(2, (bitRead(zPC[8], 6)));     //lampka CA

    while (!Serial.available()) {};
    Serial.readBytes((char*)zPC, 52);
    Serial.write((char*)doPC, 20);

  }

Czy użycie "mastercontrollerincrease" i odwrotnej w przypadku uart nie będzie działać? Czy popełniam błąd gdzie indziej?

Offline mac310

  • Zasłużony dla Symulatora
  • Wiadomości: 518
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 73
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1148 dnia: 13 Października 2022, 12:07:14 »
Do uart.ini dodajesz wpisy odpowiadające przyciskom i przełącznikom, jako analogia do wpisów w keyboard.ini. Te wpisy w eu07.ini w linii uartfeature dotyczą obsługi bezpośredniej nastawników i hamulców. Czyli gdy exe ma czytać odpowiedni bajt z ramki doPC, któy zawiera dane dla nastawników i hamulców. Jeśli chcesz działać jak z klawiatury (nastawnik do góry lub do dołu) to musisz wyłączyć go w uartfeature i zrobić wpis w uart.ini, żeby powiązać sygnały z przycisków z funkcjami jakby klawiatury. Widzę, że tak zrobiłeś dla 36 i 37 ale wydaje mi się, że reakcję blokuje yes w uartfeature, który powoduje chęć odebrania konkretnej pozycji nastawnika z bajtu 10. Dalej bocznik to bajt 11, hamulec zespolony - 12 i hamulec pomocniczy - 14.
Spróbuj z uartfeature ustawionym na no dla każdej funkcji.
Historia budowy pulpitu lokomotywy serii EU07.

Offline erap2

  • Wiadomości: 96
  • JA
    • Zobacz profil
  • Otrzymane polubienia: 25
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1149 dnia: 16 Października 2022, 15:40:31 »
Faktycznie miałeś rację, zaczęło to działać.

Teraz mam za to problem z samym działaniem Arduino - po pewnym czasie przestaje reagować na komunikację przez UART. Raz wystarcza ok. 1 minuta, innym razem po 3-4 przestaje komunikować się poprawnie. Specjalnie do testu dałem sobie taki kod:
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(4, INPUT_PULLUP); //ust pinu 4 jako wejscie
    pinMode(6, INPUT_PULLUP); //ust pinu 6 jako wejscie

    digitalWrite(2, LOW);     //ustawienie stanu niskiego na pinie 2

    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[8], 4, !digitalRead(4));   //nastawnik +
    bitWrite(doPC[8], 5, !digitalRead(6));   //nastawnik -
    if(digitalRead(4) == LOW)
    {
      digitalWrite(2, HIGH);
    }
    else if(digitalRead(4) == LOW)
    {
      digitalWrite(2, HIGH);
    }
    else
    {
      digitalWrite(2, LOW);
    }

   

    while (!Serial.available()) {};
    Serial.readBytes((char*)zPC, 52);
    Serial.write((char*)doPC, 20);

  }

Działanie programu zakończyło się po ok. 3 minutach, dioda została w stanie wysokim, a przyciski przestają zmieniać pozycję nastawnika. Możliwe jest jakieś przepełnienie bufora? Bo oczywiście po restarcie MaSzyny wszystko znowu zaczyna działać.

Offline marcinn

  • Wiadomości: 65
    • Zobacz profil
  • Otrzymane polubienia: 86
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1150 dnia: 16 Października 2022, 16:28:11 »
Działanie programu zakończyło się po ok. 3 minutach, dioda została w stanie wysokim, a przyciski przestają zmieniać pozycję nastawnika. Możliwe jest jakieś przepełnienie bufora? Bo oczywiście po restarcie MaSzyny wszystko znowu zaczyna działać.

Możliwe że tracisz synchronizację i blokuje ci się na Serial.available(). Wywal tego loopa na próbę. W Maszynie pod F12 (Debug) w sekcji UART powinieneś mieć status synchronizacji. Poobserwuj to. Ewentualnie w eu07.ini włacz uartdebug - w logu będziesz miał detale transmisji.

Offline erap2

  • Wiadomości: 96
  • JA
    • Zobacz profil
  • Otrzymane polubienia: 25
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1151 dnia: 17 Października 2022, 13:45:02 »
Wychodzi na to, że jest dokładnie tak jak piszesz. Odbiera i wysyła np. 3000 pakietów i nagle przestaje. Jak wywaliłem Serial.available() to leci cały czas, ale za to w ogóle nie reaguje na wciśnięcie przycisku. Tylko co może być przyczyną utraty synchronizacji?
Załączam dodatkowo log z wywalonym Serial.available(), a z racji wielkości pliku załącznika z pozostawionym Serial.available() nie mogę dodać, bo doszedłem tym razem do 25 tysięcy przesłanych pakietów

Offline marcinn

  • Wiadomości: 65
    • Zobacz profil
  • Otrzymane polubienia: 86
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1152 dnia: 17 Października 2022, 14:14:38 »
Tylko co może być przyczyną utraty synchronizacji?

Nigdy nie zdiagnozowałem tego na tyle, aby jednoznacznie stwierdzić przyczynę.  O ile pamiętam EXE wysyła odpowiedź, kiedy otrzyma pakiet. Jeśli transmisja nie jest zsynchronizowana, to EXE pomija przesłane dane aż złapie synca na bajtach kontrolnych. Jeśli z jakiegokolwiek powodu transmisja zostanie przerwana/zaburzona oraz nie wyślesz z Arduino ramki bo czekasz na dane z EXE (Serial.available() w pętli), to dochodzi do sytuacji że EXE czeka na Arduino a Aarduino na EXE (a powinien jeszcze raz nadać pakiet).


Cytuj
ale za to w ogóle nie reaguje na wciśnięcie przycisku

To raczej już inny problem. Posprawdzaj połączenia, sprawdź stan po stronie Arduino (digitalRead i okolice), a na koniec czy ustawiasz odpowiednie bity w odpowiednich bajtach.

Offline erap2

  • Wiadomości: 96
  • JA
    • Zobacz profil
  • Otrzymane polubienia: 25
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1153 dnia: 17 Października 2022, 14:37:56 »
Co do drugiej twojej odpowiedzi - właśnie problem leży w tym, że wystarczyło odkomentować Serial.available() i przyciski znowu reagują poprawnie. Teoretycznie bez tego kodu powinno nadawać pakiety, mimo iż nie zawsze otrzymuje odpowiedź z EXE?

Offline marcinn

  • Wiadomości: 65
    • Zobacz profil
  • Otrzymane polubienia: 86
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1154 dnia: 17 Października 2022, 14:46:50 »
wystarczyło odkomentować Serial.available() i przyciski znowu reagują poprawnie.

Zostawiając kod bez Serial.available():

1. ustaw w setup() większy timeout dla seriala (np. defaultowy 1000), albo wywal całkowicie. Może brakować czasu.
2. odwróć kolejność  - najpierw Serial.write(), a później Serial.read() - EDIT: choć to nie powinno mieć znaczenia bez zabaw z Serial.available()

Daj znać czy pomogło.
« Ostatnia zmiana: 17 Października 2022, 14:48:45 wysłana przez marcinn »

Offline erap2

  • Wiadomości: 96
  • JA
    • Zobacz profil
  • Otrzymane polubienia: 25
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1155 dnia: 17 Października 2022, 15:25:52 »
Jest lepiej, bo faktycznie komunikacja trwa cały czas - ale miewa ścinki. Jak obserwuję na F12 UART to w pewnym momencie staje na jednej przesłanej paczce, stoi 0,2 sekundy około i leci dalej. I tak z 5 razy pod rząd, potem działa wszystko okej przez 2/3 minuty i znowu. Powoduje to ścięcia się MaSzyny.

Pojawiły się w logu takie problemy jak "uart: bad sync" oraz "uart: synced, skipping one packet.." i "uart: tired of trying"

Log wygląda teraz często tak:
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0F 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C C7 0B 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0E 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C D5 0B 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0E 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C E8 0B 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0E 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C F9 0B 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0D 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 0B 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0D 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 22 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0D 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 2C 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0C 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 3A 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0C 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 47 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EF
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0C 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 51 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: bad sync
uart: read byte: 239
uart: read byte: 239
uart: read byte: 239
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 239
uart: read byte: 239
uart: read byte: 239
uart: read byte: 239
uart: synced, skipping one packet..
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0B 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 79 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0B 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 87 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0B 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 95 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0A 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C A4 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0A 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C B4 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0A 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C C3 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0A 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C D5 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EF
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 02 00 A3 01 00 00 00 00 00 00 00 00 C5 5E 76 5C D3 10 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: bad sync
uart: read byte: 239
uart: read byte: 239
uart: read byte: 239
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: read byte: 0
uart: tired of trying
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C D3 14 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C E4 14 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 03 15 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 18 15 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 28 15 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 43 15 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 63 15 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 80 15 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 91 15 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C AC 15 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C BD 15 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C D9 15 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: sync ok
uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 00 00 A1 01 00 00 00 00 00 00 00 00 C5 5E 76 5C F8 15 00 00 00 00 00 00 01 67 00 00 00 00 00 00 00 00 00 00 00 00 00
« Ostatnia zmiana: 17 Października 2022, 15:30:38 wysłana przez erap2 »

Offline marcinn

  • Wiadomości: 65
    • Zobacz profil
  • Otrzymane polubienia: 86
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1156 dnia: 17 Października 2022, 15:49:15 »
Pojawiły się w logu takie problemy jak "uart: bad sync" oraz "uart: synced, skipping one packet.." i "uart: tired of trying"

uart: rx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EF
uart: tx: EF EF EF EF 00 00 00 20 00 00 08 EE 02 0C 00 A5 01 00 00 00 00 00 00 00 00 C5 5E 76 5C 51 0C 00 00 00 00 00 00 01 68 00 00 00 00 00 00 00 00 00 00 00 00 00
uart: bad sync

Jeden bajt wcięło. Przestój będziesz obserwujesz przez zwiększony timeout, ale przynajmniej widzisz problem.
Przy obsłudze transmisji w mojej prototypowej bibliotece spędziłem nad ogarnięciem tego sporo czasu.
Np. nie wysyłam pakietów zbyt często, oraz mam obsługuję braku ewentualnej synchronizacji po stronie arduino.

Możesz spróbować rzadziej transmitować dane (a w eu07.ini też jest jakiś parametr spowalniający):


[...]
unsigned long lastSent = 0;
[...]
void loop() {
[...]
  if(millis()-lastSent > 50) {  // wartość dobierz eksperymentalnie, ja jadę na 10
     lastSent = millis();
     Serial.write()...
     Serial.read()...
  }
[...
}



Jak nie pomoże, to oprócz szukania przyczyny utraty synchronizacji, dodałbym obsługę tego case u siebie.
Odrzucam też ramkę, gdy jej długość jest krótsza - Serial.read() wcale nie musi zassać całej.
Wolę odrzucić całą i złapać synca, niż czekać na kolejne bajty i otrzymać potencjalnie niespójną ramkę.

https://github.com/marcinn/maszynaduino/blob/master/src/comm.cpp#L55

Offline marcinn

  • Wiadomości: 65
    • Zobacz profil
  • Otrzymane polubienia: 86
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1157 dnia: 17 Października 2022, 16:07:05 »
Sprawdź jeszcze trzeci parametr do "uart" w eu07.ini. To "update time".  U mnie jest ustawiony na 0.1.

Offline mac310

  • Zasłużony dla Symulatora
  • Wiadomości: 518
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 73
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1158 dnia: 17 Października 2022, 16:49:34 »
Ciekawe jakie masz Arduino. Czy nie jest to wersja z CH340? Miałem kilka przypadków, że ten chip jakoś tak niekoniecznie dobrze dogaduje się w komunikacji po USB, nie zawsze działa to stabilnie. Klony z ATmega16U2 nigdy nie stwarzały problemów.
Historia budowy pulpitu lokomotywy serii EU07.

Offline marcinn

  • Wiadomości: 65
    • Zobacz profil
  • Otrzymane polubienia: 86
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1159 dnia: 17 Października 2022, 16:54:28 »
Czy nie jest to wersja z CH340? Miałem kilka przypadków, że ten chip jakoś tak niekoniecznie dobrze dogaduje się w komunikacji po USB

Ciekawe czy "moje boje" wynikają właśnie z tego, że mam klony na CH340 :>

Offline mac310

  • Zasłużony dla Symulatora
  • Wiadomości: 518
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 73
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1160 dnia: 17 Października 2022, 17:10:08 »
Ja mam kilka NANO właśnie z CH340 i różnie z nimi bywa. Generalnie dałem sobie spokój z programowaniem po USB i używam USBasp przez złącze ICSP. Poza tym nie używam ich do stałej komunikacji z PC po USB więc nie czuję problemu. Zamówiłem sobie klona MEGA z Ali i on był też na CH340 i w zasadzie w ogóle nie chciał gadać po USB. To co mam w pulpicie jest na 16U2 i nigdy nie miałem problemów z komunikacją po USB. Oczywiście mój przypadek nie musi być miarodajny ale kilka razy miałem kontakt z ludźmi robiącymi pulpity gdzie wymiana MEGA na wersję z 16U2 rozwiązywała problemy komunikacyjne. Teraz to jest kłopot z płytkami i to w jakiejś przyzwoitej cenie ale ja jeszcze kupowałem je w Nettigo jak były w rozsądnych cenach i w ogóle były na stanie.
Historia budowy pulpitu lokomotywy serii EU07.

Offline erap2

  • Wiadomości: 96
  • JA
    • Zobacz profil
  • Otrzymane polubienia: 25
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1161 dnia: 17 Października 2022, 17:15:56 »
Wychodzi na to, że muszę potwierdzić te problemy. Płytkę kupiłem na Aliexpress za jakieś 30 zł, więc mimo iż w opisie są wpisane oba chipy to na pewno jest tutaj CH340.

Ustawiłem teraz rzadszą transmisję danych + w eu07.ini jako "update time" dałem 0.05 i mam wrażenie, że jest okej. Ponad 4 tysiące pakietów i nic, żadnych problemów z synchronizacją.

EDIT. Pochwaliłem dzień przed zachodem słońca. Chyba muszę zainwestować w płytkę z 16U2. I w sumie to muszę chyba wziąć Arduino Mega. Polecilibyście dobre MEGA z 16U2?

Próbuję teraz zrobić w końcu hamulec lub nastawnik - @mac310 napisałeś, że
Cytuj
odebrania konkretnej pozycji nastawnika z bajtu 10. Dalej bocznik to bajt 11, hamulec zespolony - 12 i hamulec pomocniczy - 14.
ale przecież każdy bajt ma 8 bitów - skąd mam wiedzieć w którym konkretnie bicie mam dać pozycję?
« Ostatnia zmiana: 19 Października 2022, 13:30:11 wysłana przez erap2 »

Offline mac310

  • Zasłużony dla Symulatora
  • Wiadomości: 518
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 73
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1162 dnia: 19 Października 2022, 20:09:47 »
Pozycja nastawnika to liczba całkowita więc po prostu jest przekazywana przez bajt, a nie wybrany bit jak przycisk czy przełącznik. Ja mając styki na krzywkach odczytuję konkretną wartość ze wszystkich  styków i poprzez case wyznacza mi to numer pozycji nastawnika. Tę liczbę przesyłam doPC w konkretnym bajcie. Przykładowo:
doPC[10] = pozycjaNastawnika
Historia budowy pulpitu lokomotywy serii EU07.

Offline erap2

  • Wiadomości: 96
  • JA
    • Zobacz profil
  • Otrzymane polubienia: 25
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1163 dnia: 20 Października 2022, 17:56:41 »
Dobra, wszystko poza tymi problemami z komunikacją działa. Kupię niedługo klona MEGA z 16U2 i mam nadzieję, że będzie dobrze.

Teraz jedyne zadanie które sobie postawiłem to zrobienie nastawnika zintegrowanego z hamulcem ED - tak jak w Impulsie. Próbowałem rozwiązać to w taki sposób:
    odczytanaPozycjaNastawnika = analogRead(A5);  //Odczytujemy wartość napięcia
    pozycjaNastawnika = map(odczytanaPozycjaNastawnika, 1023, 501, 0, 10);
    pozycjaHamulcaED = map(odczytanaPozycjaNastawnika, 500, 1023, 0, 100);
    doPC[10] = pozycjaNastawnika;
    doPC[14] = pozycjaHamulcaED;
Oczywiście pojawił się problem - gdy potencjometr wchodzi np. na 300 to pozycja nastawnika jest ujemna i zastanawiam się jak to rozwiązać. W ostateczności zawsze mogę zostać przy pojeździe bez zintegrowanego nastawnika :D

Offline mac310

  • Zasłużony dla Symulatora
  • Wiadomości: 518
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 73
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1164 dnia: 20 Października 2022, 22:54:42 »
Nie za bardzo rozumiem co chcesz osiągnąć tymi dwoma funkcjami. Mapujesz dwa razy tę samą wartość tylko w przeciwnych kierunkach na dwa różne zakresy. Jak to niby ma działać?
Historia budowy pulpitu lokomotywy serii EU07.

Offline erap2

  • Wiadomości: 96
  • JA
    • Zobacz profil
  • Otrzymane polubienia: 25
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1165 dnia: 21 Października 2022, 09:34:05 »
Faktycznie, wrzuciłem tutaj wersję roboczą. Sprawdzałem taki kod - czyli potencjometr w górnym zakresie działa za nastawnik, a w dolnej za hamulec pomocniczy
    odczytanaPozycjaNastawnika = analogRead(A5);  //Odczytujemy wartość napięcia
    pozycjaNastawnika = map(odczytanaPozycjaNastawnika, 1023, 501, 0, 10);
    pozycjaHamulca = map(odczytanaPozycjaNastawnika, 500, 0, 0, 100);
    doPC[10] = pozycjaNastawnika;
    doPC[14] = pozycjaHamulca;

Offline mac310

  • Zasłużony dla Symulatora
  • Wiadomości: 518
    • Zobacz profil
    • Moim Okiem...
  • Otrzymane polubienia: 73
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1166 dnia: 21 Października 2022, 16:39:12 »
To dodaj warunek, żeby przy wartości < 0 wysyłał zawsze 0. Nie bawiłem się z potencjometrem do takiego zastosowania więc tak z głowy podrzucam.
Nie wiem jakie wartości powinny się pojawiać na wyjściu, bo rozumiem, że najpierw rośnie pozycja nastawnika od 0 do 10, a później co, zostaje na 10 i zaczyna rosnąć hamowanie od 0 do 100?
Jeśli tak to może coś takiego:
    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ć.
« Ostatnia zmiana: 21 Października 2022, 19:24:36 wysłana przez mac310 »
Historia budowy pulpitu lokomotywy serii EU07.

Offline erap2

  • Wiadomości: 96
  • JA
    • Zobacz profil
  • Otrzymane polubienia: 25
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1167 dnia: 22 Października 2022, 05:18:00 »
Już sam to opanowałem, wszystko działałoby dobrze - gdyby nie klon Arduino. Ścina się coraz mocniej. Zamawiam na dniach klona MEGA na 16U2 i zobaczymy jak będzie to wtedy działało

Offline youBy

  • Deweloper
  • Wiadomości: 6163
  • Co tam?
    • Zobacz profil
    • Automat Weryfikujący Regulację i Lambdę
  • Otrzymane polubienia: 865
Odp:  Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1168 dnia: 22 Października 2022, 10:04:16 »
Ja u siebie w Arduino mam na końcu asekuracyjne "delay(100)", bo wcześniej też się różne dziwne rzeczy działy.
Xoov
Powyższy post wyraża jedynie opinię autora w chwili publikacji. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyny, jak również informowania o tym.

Offline marcinn

  • Wiadomości: 65
    • Zobacz profil
  • Otrzymane polubienia: 86
Odp: Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty.
« Odpowiedź #1169 dnia: 22 Października 2022, 10:17:23 »
Ja u siebie w Arduino mam na końcu asekuracyjne "delay(100)"

Stare metody wiecznie dobre. Kiedyś NOP, później sleep, a teraz delay. ;) U mnie jest delay, ale „non blocking” - i chyba też około setki.

Jak pisałem - mam klony z rzeczonym układem i transmisja może nie jest perfect, ale nie ścina mi tak jak pisze kolega.
« Ostatnia zmiana: 22 Października 2022, 10:18:25 wysłana przez marcinn »