Skocz do zawartości

Gal_kris

Użytkownicy
  • Zawartość

    23
  • Rejestracja

  • Ostatnio

Reputacja

1 Neutralna

O Gal_kris

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Wrocław
  • Zainteresowania
    brak miejsca by to opisać
  • Zawód
    elektronik, informatyk
  1. Masz rację te oświetlenia ma być podłączone pod ciuchcię która, będzie jeździć po szynach, ja nie mam takiej i też nie jestem modelarzem. Pod koniec filmu widzisz płytkę z dekoderem i to ta płytka jest montowana w lokomotywie. Jak wpiszesz w necie 21mtc znajdziesz jak wygląda dekoder i jak płyta z wyprowadzeniami na diody, silnik, głośnik, generator dymu, sprzęg elektryczny itp. Jest tego dużo tak jak i wersji dekoderów i wymagań klientów. to co pokazałem na filmie nie działa dobrze bo żeby nie widzieć mrugania tej przygaszonej diody , oszukałem program i dałem delay(3000). wtedy wygląda to tak jak zmniejszę pokazują się błędy w konstrukcji. Płytka z atmegą pod dekoder nie jest moją konstrukcją i jest na niej szereg błędów. Po pierwsze dekoder dostaje 15v zmiennego, po tym napięciu leci sterowanie dekoderem ( to te 15v jest w szynach na które stawiamy model) a z kolei z dekodera wychodzi 5v do którego jest podłączony atmel, ten co zaprojektował płytkę albo nie zauważył albo zignorował że dekoder po wspólnej masie sieje tak mocne zakłócenia że pwm bardzo źle pracuje nie ma naokoło atmegi żadnych filtrów więc przez te zakłócenia mocno wpływają na pracę atmegi. Druga sprawa na diody leci te same 15v z szyn a dokładne +15v a płytka wykonana jest tak by wszystko przełączała w minusie czyli po wyjściu z tranzystora sterującego diodą jest minus a z +15V jest + i nawet mimo starań odseparowania się od tych 15v (z danymi sterującymi) niewiele można zrobić, modele mają już zainstalowane diody oświetlania z rezystorami policzonymi na 15v a że te diody są tak małe nikt tego nie wymieni. więc projektuje nową płytkę z odseparowaniem od zasilania 5v dekodera ale czy uda mi się dobrze wyfiltrować atmegę nie wiem.
  2. Zobacz to https://www.youtube.com/watch?v=lbmq5_zs_No prawie działa, ale prawie mnie nie zadawala.
  3. Ok temetu jeszcze nie zamykam, bo dokończę symulator i coś Ci pokażę, mogłem wcześniej gdybyś był multimedialny i dał radę połączyć się za pomocą obrazu Gal
  4. zrobiłem symulację, sam zobacz co się dzieje Gal symulacja bez kierunku.zip test_led_na_pinie_3.zip
  5. Owszem potrafię ale jednej rzeczy nie zrozumiałeś, a ja nie do końca dobrze opisałem wciśnięcie na sterowniku jazdy klawisza F0 czyli pin A5 mojej atmegi, powoduje włączenie obsługi obu kierunków jazdy kierunki pokazują się wtedy tak Do przodu A5 LOW, A4 HIGH a do przodu A5 HIGH a A4 LOW i nie można zrobić na opak czyli np. nie aktywując F0(A5) mieć aktywnego A4. innymi słowy A5 to jakby włącznik włączasz i tak już jest do wszystkich sygnałów. i tu moje pytanie z początku pin A5 jest zwarty do masy czy można go podnieść na HIGH pomijając zwarcie na zewnątrz scalaka ? Gal no schemató to ja rysować nie umiem pomijam rezystory które są oczywiste
  6. nie jak jedzie do przodu pin jak do tyłu pin1 sygnały na dwie różne nogi atmegi 1 sygnał do przodu trzy białe po trójkącie do tyłu to samo 2 sygnał do przodu trzy diody białe z przodu dwie czerwone z tyłu, do tyłu to samo 3 sygnał do przodu górna i lewa biała prawa czerwona , do tyłu to samo 4 sygnał do przodu górna i lewa biała prawa czerwona i dwie czerwone z tyłu, do tyłu to samo 5 sygnał niezależnie od kierunku tylko prawa dioda z przodu i tyłu 6 sygnał do przodu górna biała i dwie czerwone, to tyłu to samo tyle tego na początek Gal
  7. dziękuję za odpowiedź, i na szybko już odpowiadam to nie samochód tylko ciuchcia, na szybko sobie wyobraź jak wygląda oświetlenie lokomotywy górne światło i dwa dolne, prawe i lewe wszystko ma kształt trójkonta z tym że dwie dolne są dwukolorowe biało czerwone. PWM tak do przygaszenia diod, problem w tym że dekoder DCC który steruje pracą silnika i wyjściami aux wymusza stan na wejściu atmela, dlatego pisałem że wejście jest podciągnięte przez rezystor do zasilania bo dekoder daje stan niski. więc reasumując 5 diod na jedną stronę pojazdu trzy białe i dwie czerwone, jak sobie poradzę z tym wyłączeniem diody mimo dwóch stanów z dwóch funkcji pójdę dalej. Gal jeżeli jesteś zainteresowany i chcesz zobaczyć jak wygląda dekoder i jak działa bo w zasadzie cały program już napisałem z tym że diody białe tylko przygasają to możemy się umówić na połączenie video gdzie pokażę dokładnie o co biega, i myślę że to najszybciej odda problem, bo by to dokładnie wyjaśnić muszę Ci podać schematy dekodera wytłumaczyć sterowanie i co robi program jest tego dużo. Pokazać będzie łatwo. do dyspozycji Skype, facetime, viber Gal
  8. int led4 = 10; // dioda biała do wyłączenia gdy zapali się czerwona int led7 = 12; // doda czerwona int led5 = 11; // dioda biała zapala się gdy z zewnątrz przyjdzie sygnał z danego kierunku int led = 9; // dioda biała zapala się gdy z zewnątrz przyjdzie sygnał z danego kierunku int jas = 255; //pwm do późniejszego wykożystania int moc = 0; //pwm #define pin A5 // z zewnętrzego źródła, jazda do przodu #define pin1 A4 // z zewnętrzego źródła, jazda do tyłu #define pin2 1 // zmieniam kolor jednej z diod zestawu oświetlenia void setup() { pinMode(led4, OUTPUT); pinMode(led7, OUTPUT); pinMode(led5, OUTPUT); pinMode(led, OUTPUT); // diody jako wyjścia pinMode(pin, INPUT); pinMode(pin1, INPUT); pinMode(pin2, INPUT); // piny jako wejścia } void loop() { digitalWrite(pin, HIGH); //mimo że na płytce oryginalnej te piny są przez rezystor podciągnięte do zasilania 5v ustawiam stan wysoki digitalWrite(pin2, HIGH);// zewnętrze źródło w momęcie podania dygnału kierunku, bądź zmiany diody białej na diodę czerwoną daje nam stan niski digitalWrite(pin1, HIGH); if (digitalRead(pin) == LOW){ //dlatego tu jest stan niski jas = 255; }else{ jas = 0; } analogWrite(led, jas); jas = jas + moc; if (jas <= 0 || jas >= 255){ moc = -moc; } analogWrite(led5, jas); jas = jas + moc; if (jas <= 0 || jas >= 255) { moc = -moc; } analogWrite(led4, jas); jas = jas + moc; if (jas <= 0 || jas >= 255) { moc = -moc; } if ((digitalRead(pin) == LOW) && (digitalRead(pin2) == LOW)){ // deklaracja aktywująca włączenie diody czerwonej w miejsce białej digitalWrite(led7, HIGH); analogWrite(led4, jas); // biała dioda nie gaśnie tylko się lekko przyciemnia taki wpis też nic nie daje analogWrite(led4, 0); jas = 0; // ani digitalWrite(led4, LOW); analogWrite(led4, jas); jas = jas + moc; if (jas <= 0 || jas >= 255) { moc = -moc; } }else{ jas = 255; digitalWrite(led7, LOW); } } schemat narysuję w domu, ale myślę że wystarczy opis
  9. problem nadal nie rozwiązany
  10. Poprawiłem program, połączyłem oba kody, stary kod usunołem
  11. Witaj tak też już sprawdzałem, jednej rzeczy nie napisałem PIN jest stale HIGH i tak musi być dlatego moje pytanie bo są dwa warunki sprzeczne najpierw stan wysoki a w drugim if jest stan niski z tym że go nie zamienia
  12. Witam Napiszę dla potomnych jak poradzić sobie z odczytem danych idących w protokole rs485. Na początek napiszę co miałem do dyspozycji: klawiatura CCTV, konwerter RS485 na USB, Program Putty ( ale ostateczne znalazłem w sieci 232analizer. założenie mojego projektu: komunikacja klawiatury CCTV innego producenta z Rejestratorem cyfrowym innego producenta, ostatecznie przy okazji powstało kilka urządzeń sterowanych przez wspomnianą klawiaturę. protokół komunikacji wysyłany przez naciskanie klawiszy w klawiaturze można było zaczytać przez konwerter bezpośrednio po podłączeniu do urządzenia, natomiast rejestrator i protokół w nim zawarty znalazłem na stronie producenta Hikvision co do programu i porównaniu danych byte buffer[2]; int cnt = 0; #define kanal1 11 #define kanal2 12 void setup() { Serial.begin(9600); //Serial.println("Start"); } void loop(void) { pinMode(kanal1, OUTPUT); //Konfiguracja wyjść pinMode(kanal2, OUTPUT); // pinMode(dioda, OUTPUT); digitalWrite(kanal1, LOW); //Doziemienie wyjść digitalWrite(kanal2, LOW); // czytamy bajty if ((cnt < 2) && Serial.available()) buffer[cnt++] = Serial.read(); if (cnt == 2) // odczytujemy wszyskie bajty //Serial.print(Serial.available()); { //Serial.print("odpalamy kanal 1); boolean same = true; // zakładamy że tablice są takie same byte ans[]={0xDC,0x01,0x00}; //znaki do porównania for (int i=0; i< 2 && same; i++) same = (buffer[i] == ans[i]); if (same) { digitalWrite(kanal1, HIGH); //To włączamy kanal 1 delay(20); digitalWrite(kanal1, LOW); //Serial.println(" odebrałem dane 1"); Serial.flush(); cnt = 0; } if ((cnt < 2) && Serial.available()) buffer[cnt++] = Serial.read(); if (cnt == 2) // odczytujemy wszyskie bajty //Serial.print(Serial.available()); { //Serial.print("odpalamy monitor 2"); boolean same = true; byte ans2[]={0xDC,0x02,0x0}; for (int i=0; i< 2 && same; i++) same = (buffer[i] == ans2[i]); if (same) { digitalWrite(kanal2, HIGH); //To włączamy kanal 2 delay(20); digitalWrite(kanal2, LOW); //Serial.println("odebrałem dane 2"); } Serial.flush(); cnt = 0; //Serial.println("czyścimy bufor"); }
  13. Witam serdecznie po tak długim czasie, mimo że nie loguję się na forum to muszę przyznać cze co najmniej raz dziennie czytam je od deski do deski. Bardzo dziękuję wszystkim aktywnym na forum, wiele się można od Was dowiedzieć. Forumowicze jestem tu ponieważ mimo przeglądnięcia wielu tematów nie potrafię dopasować nic do swojego projektu a że mam dysleksję nauka idzie mi powoli. co takiego ma na stole? kontroler jazdy dcc, atmegę88, 9 diod, 4 wyjścia sterowane z kontrolera jazdy. problem dotyczy dwóch warunków If do tego samego pinu int led4 = 10; int led7 = 12; int led5 = 11; int led = 9; int jas = 255; int moc = 0; #define pin A5 #define pin9 A4 #define pin2 1 void setup() { pinMode(led4, OUTPUT); pinMode(led7, OUTPUT); pinMode(led5, OUTPUT); pinMode(led, OUTPUT); pinMode(pin, INPUT); pinMode(pin9, INPUT); pinMode(pin2, INPUT); } void loop() { digitalWrite(pin, HIGH); digitalWrite(pin2, HIGH); digitalWrite(pin9, HIGH); if (digitalRead(pin) == LOW){ jas = 255; }else{ jas = 0; } analogWrite(led, jas); jas = jas + moc; if (jas <= 0 || jas >= 255){ moc = -moc; } analogWrite(led5, jas); jas = jas + moc; if (jas <= 0 || jas >= 255) { moc = -moc; } analogWrite(led4, jas); jas = jas + moc; if (jas <= 0 || jas >= 255) { moc = -moc; } if ((digitalRead(pin) == LOW) && (digitalRead(pin2) == LOW)){ digitalWrite(led7, HIGH); analogWrite(led4, jas); jas = 0; analogWrite(led4, jas); jas = jas + moc; if (jas <= 0 || jas >= 255) { moc = -moc; } }else{ jas = 255; digitalWrite(led7, LOW); } } wytłumaczę o co tu biega pin to ogólne zasilanie nie mam na nie wpływu, by mieć zasilanie pin musi być LOW i wtedy zapalam diody led, led5, led4, teraz aktywuję pin2 również stanem niskim i gaszę led4 a zapalam led7 gdy zwolnię pin2 led7 off led4 on pełna jasność tyle w teorii bo nie dochodzi do zupełnego wygaszenia led4 myślę że teraz lepiej wytłumaczyłem Proszę o sugestię jak sobie z tym poradzić, czasami zaskakuje po czasie Gal
  14. Witam. Na wstępie napiszę że masz rację ludzie uważają że w internecie wszystko jest za free i dlatego fora, stronki blogowe itp zapchane są reklamami, banerami czyli wszystkim czego tam nie powinno być. Ja jestem nawet za tym by na te forum wpłacać coś w rodzaju abonamentu. To forum uzmysłowiło mi że mimo wielu wad jakie posiadam dam radę ogarnąć w jakimś stopniu programowanie mikro kontrolerów, daleko mi jeszcze do kolegi deshipu ale dzięki wam zbuduję swojego robota !
  15. Proszę zwrócić uwagę na wszelkie mikro urazy czyli naruszenie powłoki każdego pakietu. rozcięcie pakietu związane jest z wysychaniem i utratą pojemności natomiast jeśli pakiet został wgięty (z boku, góry) i jakimś cudem nie spalił się na miejscu to pod żadnym pozorem nie należy go prostować. Miałem taki przypadek mój heksacopter spadł i rozbił się akumulator był lekko zagięty, ładował się działał bez problemu ale był na kancie wgięty nie mieścił się w przygotowane miejsce na aku w copterze o 1mm wgniotłem to palcem i w ciągu ułamku sekund pakiety spuchły i pokazał się ogień oraz bardzo gryzący biały dym czasu na reakcje nie było za wiele. inny aku miał dziurkę po ostro przyciętej opaski zaciskowej (mówią tyrtytki) już po godzinie nie można było go naładować do pełna Pozdrawiam, gal_kris
×