Skocz do zawartości

Szkic do kolejki PIko - dodanie postoju na stacji


krif38

Pomocna odpowiedź

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 przez krif38
Link do komentarza
Share on other sites

@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.

Link do komentarza
Share on other sites

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 .

Link do komentarza
Share on other sites

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 przez jas123
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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 

image.jpg

Link do komentarza
Share on other sites

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 przez BananWszyscy
Link do komentarza
Share on other sites

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

image.jpg

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

image.jpg

Link do komentarza
Share on other sites

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 😉

Link do komentarza
Share on other sites

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ę »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.