krif38 Napisano Kwiecień 19, 2020 Udostępnij Napisano Kwiecień 19, 2020 (edytowany) Witam napisałem trochę przerobiłem szkic na jazdę kolejki raz w prawo prostuj puziniej w lewo prostuj i tak dalej . Mamproblem bo chciałbym żeby kolejka przystawala na stacji na chwile najeżdżając na kontaktron i pochwali dalej ruszała chciałbym napisać warunek do tego szkicu: void setup() { pinMode(8,OUTPUT); pinMode(7,OUTPUT); } Void loop() { digitalWrite(8,HIGH); delay(50000); digitalWrite(8,LOW); delay(3000); digitalWrite(7,HIGH); delay(50000); digital (7,LOW); delay (3000); Bardzo proszę o pomoc Edytowano Kwiecień 19, 2020 przez krif38
Treker (Damian Szymański) Kwiecień 19, 2020 Udostępnij Kwiecień 19, 2020 @krif38 witam na forum Z czym dokładnie masz problem? Nie wiesz jak zapisać to w programie, czy nie masz zupełnie pomysłu jak to zrealizować? Obecny program (nawet jeśli teraz działa) to nie sprawdzi się raczej przy wersji z kontaktronem. Teraz będziesz musiał zrobić wersję, w której kolejka jedzie tak długo, aż napotka na kontaktron, wtedy się zatrzymuje i rusza z opóźnieniem. Program ze sztywnymi opóźnieniami na deley'ach tutaj się nie sprawdzi.
krif38 Kwiecień 19, 2020 Autor tematu Udostępnij Kwiecień 19, 2020 Witam chciałbym w tym programie postawić warunek jeżeli na pinie 6 pojawi się stan wysoki to program zaczyna się np na 4s Bardzo proszę o wpisanie mi takiego warunku bo nie mogę sobie poradzić Mi ten program odpowiada tylko nie wiem w jaki sposób wpisać warunek kolejka najeżdża na kontraktom pentla się zatrzymuje na 4s .
jas123 Kwiecień 19, 2020 Udostępnij Kwiecień 19, 2020 (edytowany) Kombinowałem nad tym parę minut i wpadłem na coś takiego: #define kontaktron 6 //definiujemy kontaktron i skręty #define lewo 7 #define prawo 8 boolean x = 0; //dodajemy zmienną void setup (){ pinMode(lewo,OUTPUT);//ustawiamy skręty jako wyjścia pinMode(prawo,OUTPUT); pinMode(kontaktron,INPUT_PULLUP);//INPUT - ustawiamy kontaktron jako wejście, PULLUP - dodajemy rezystor podciągający } void loop(){ if(digitalRead(kontaktron) == LOW && x == 0 ){ //jeśli kontaktron jest połączony z masą (poprzez najechanie kolejki) to: digitalWrite(prawo,HIGH); //prawo delay(4000); //czekamy 4s digitalWrite(prawo,LOW);//prosto x=x+1;//zmieniamy wartość x } if(digitalRead(kontaktron) == LOW && x == 1 ){ //jeśli kontaktron jest połączony z masą (poprzez najechanie kolejki) to: digitalWrite(lewo,HIGH); //lewo delay(4000); //czekamy 4s digitalWrite(lewo,LOW);//prosto x=x-1;//zmieniamy wartość x } } Kod działa( wypróbowałem na diodach) pod warunkiem że kontaktron nie jest zwarty dłużej niż 4 sekundy. To jest kod do skręcania na przemian w prawo lub lewo po najechaniu kolejki na kontaktron.Jeśli kod jest źle napisany to proszę mnie poprawić. Jeśli nie o to Ci chodziło to opisz dokładniej jak to ma działać. Edytowano Kwiecień 19, 2020 przez jas123
krif38 Kwiecień 20, 2020 Autor tematu Udostępnij Kwiecień 20, 2020 9 godzin temu, Treker napisał: @krif38 witam na forum Z czym dokładnie masz problem? Nie wiesz jak zapisać to w programie, czy nie masz zupełnie pomysłu jak to zrealizować? Obecny program (nawet jeśli teraz działa) to nie sprawdzi się raczej przy wersji z kontaktronem. Teraz będziesz musiał zrobić wersję, w której kolejka jedzie tak długo, aż napotka na kontaktron, wtedy się zatrzymuje i rusza z opóźnieniem. Program ze sztywnymi opóźnieniami na deley'ach tutaj się nie sprawdzi. Dziękuje bardzo wpisałem szkic wystąpił błąd ;kontaktron was not declared in this scope
BananWszyscy Kwiecień 20, 2020 Udostępnij Kwiecień 20, 2020 (edytowany) 1. wstaw caly kod :d 2. Ja bym to zrobił tak, żebyś łatwo zrozumiał: robisz sobie switch case i teraz case 1: jedziesz sobie do przodu, dopóki nie najedziesz na kontaktron(tu nie stosujemy delaya, w tym case masz włącz jazdę do przodu i ifa z wykryciem kontaktronu- wtedy nadpisujesz case = 2) case 2: wyłączasz jazdę do przodu - skoro już stoisz, to czekasz sobie chwilkę (na start możesz zrobić z delayem, potem możesz to poprawić), po czasie skaczesz do case=3 case 3: wybierasz nowy kierunek (na podstawie poprzedniego/jakiegoś algorymtu/whatever, skaczesz to case 4 case 4: kręcisz w prawo/lewo, a potem wracasz do case = 1, żeby jechać na wprost i program działa w koło Edytowano Kwiecień 20, 2020 przez BananWszyscy
jas123 Kwiecień 20, 2020 Udostępnij Kwiecień 20, 2020 4 godziny temu, krif38 napisał: wystąpił błąd ;kontaktron was not declared in this scope @krif38 chyba nie napisałeś tej linijki : #define kontaktron 6
krif38 Kwiecień 20, 2020 Autor tematu Udostępnij Kwiecień 20, 2020 Teraz działa tylko jedna dioda wylancza się jak zewre z 6 kstaktron druga się nie wlancza
BananWszyscy Kwiecień 20, 2020 Udostępnij Kwiecień 20, 2020 (edytowany) 1. daj kod 2. włącza ! wyłącza ... ale pewnie twoje dodatkowe komentarze to spowodowały Edytowano Kwiecień 20, 2020 przez BananWszyscy
krif38 Kwiecień 20, 2020 Autor tematu Udostępnij Kwiecień 20, 2020 Witam prosił bym jeszcze o odpowiedz na takie pytanie ten program który teraz wysłałem dlaczego działa dobrze na diodach natomiast na przekaźnikach nie przez chwile są dwa włączone co mam zrobić żeby była przerwa tak jak na diodach Aktualizacja: Witam czy ktoś by mi nie pomógł napisać przerwę w tym nie innym programie jeżeli na 6 pinie pojawi się stan wysoki to program zatrzyma się na 10 s po tym czasie ruszy dalej znowu na pinie 6 pojawi się stan wysoki program zatrzyma się i tak cały czas Dziękuje za pomoc
Treker (Damian Szymański) Kwiecień 20, 2020 Udostępnij Kwiecień 20, 2020 5 godzin temu, krif38 napisał: laczego działa dobrze na diodach natomiast na przekaźnikach nie przez chwile są dwa włączone co mam zrobić żeby była przerwa tak jak na diodach A jak dokładnie masz podłączone przekaźniki do Arduino? Czy sterujesz nimi przez tranzystor i masz diody wpięte równolegle z cewką? Przykład poprawnego podłączenia przekaźnika do Arduino znajdziesz w tym artykule: Kurs elektroniki – #9 – elementy stykowe, przekaźniki Kody programów należy umieszczać za pomocą odpowiedniego narzędzia dostępnego w edytorze (przycisk "Wstaw kod"). Programy są wtedy prezentowane w czytelny sposób, a ich składania jest kolorowana. Nie wklejaj proszę zdjęć ekranu komputera, bo to tylko utrudnia wszystkim rozczytanie programu. Z góry dziękuję za zrozumienie i pomoc w utrzymaniu porządku
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »