logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Tworzenie kodu Arduino Nano do dwukierunkowego sterowania silnikiem za pomocą L293D

Sunnysky 05 Gru 2023 23:17 1347 5
REKLAMA
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • #1 20848433
    Sunnysky
    Poziom 9  
    Posty: 57
    Pomógł: 1
    Ocena: 2
    @ElektrodaBot Napisz kod, aby sterować dwukierunkowym wyjściem za pomocą Arduino Nano do sterowania pełnym mostkiem L293D do szczotkowanego silnika prądu stałego
  • REKLAMA
  • #2 20848436
    ElektrodaBot
    AI od OpenAI ChatGPT4
    Posty: 8880
    Pomógł: 364
    Ocena: 954
    LABEL_AI_GENERATED
    Sunnysky napisał:
    Napisz kod do sterowania silnikiem dwukierunkowym za pomocą Arduino Nano do sterowania L293D
    Aby sterować silnikiem dwukierunkowym za pomocą Arduino Nano i sterownika silnika L293D, należy wykonać następujące czynności:

    1. Podłącz L293D do Arduino Nano.
    2. Napisać kod sterujący silnikiem.

    Poniżej znajduje się podstawowy schemat połączeń i przykładowy kod:

    Schemat połączeń:
    1. Podłącz pin EN1 układu L293D do pinu obsługującego PWM w Arduino Nano w celu sterowania prędkością (np. D9).
    2. Podłącz wejście 1 i wejście 2 układu L293D do dwóch cyfrowych pinów Arduino Nano w celu sterowania kierunkiem (np. D2 i D3).
    3. Podłącz silnik do wyjścia 1 i wyjścia 2 układu L293D.
    4. Podłącz VSS L293D do pinu 5V na Arduino Nano, jeśli używasz silnika 5V (dla zasilania logiki).
    5. Podłącz VS układu L293D do zewnętrznego źródła zasilania odpowiedniego dla silnika (zasilanie silnika).
    6. Nie zapomnij połączyć ze sobą masy (GND) Arduino, L293D i zewnętrznego źródła zasilania.

    Kod Arduino:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Ten kod uruchomi silnik w jednym kierunku z pełną prędkością przez 2 sekundy, zatrzyma na 1 sekundę, a następnie uruchomi w przeciwnym kierunku z pełną prędkością przez kolejne 2 sekundy. Cykl powtarza się w nieskończoność.

    Pamiętaj, aby dostosować numery pinów w kodzie w zależności od sposobu podłączenia sterownika silnika do Arduino Nano.

    Czy jest jakaś konkretna część kodu lub konfiguracji, która wymaga wyjaśnienia lub pomocy?
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • REKLAMA
  • #3 20848444
    Sunnysky
    Poziom 9  
    Posty: 57
    Pomógł: 1
    Ocena: 2
    Zmodyfikuj powyższy kod, aby przyspieszyć przez 1 sekundę zamiast pełnej mocy.
  • REKLAMA
  • #4 20848450
    ElektrodaBot
    AI od OpenAI ChatGPT4
    Posty: 8880
    Pomógł: 364
    Ocena: 954
    LABEL_AI_GENERATED
    Sunnysky napisał:
    wyjaśnij, co robi void w powyższym kodzie.
    W językach programowania C i C++, które są używane do pisania kodu dla Arduino, `void` jest słowem kluczowym, które reprezentuje brak wartości. Może być używane w kilku kontekstach, ale w kodzie, który przedstawiłem powyżej, jest używane w dwóch miejscach:

    1. Jako typ zwracany funkcji: `void setup()` i `void loop()`.
    2. Jako słowo kluczowe definiujące wskaźnik do nieznanego typu: nieużywane w podanym kodzie

    Skupmy się na pierwszym przypadku użycia, ponieważ to właśnie on pojawia się w kodzie:

    - `void setup()`: Ta funkcja jest wywoływana raz, gdy Arduino jest włączone lub zresetowane. Służy do inicjalizacji zmiennych, trybów pinów, uruchamiania bibliotek itp. Słowo kluczowe `void` przed `setup()` wskazuje, że ta funkcja nie zwraca żadnej wartości do wywołującego.

    - `void loop()`: Funkcja ta jest wywoływana wielokrotnie po zakończeniu wykonywania funkcji `setup()`. Zawiera ona główny kod uruchamiany przez Arduino. Ponownie, słowo kluczowe `void` wskazuje, że funkcja ta nie zwraca żadnej wartości.

    Innymi słowy, `void` służy do zadeklarowania, że te funkcje nie powinny zwracać wartości, gdy są wywoływane. Mają one wykonywać swoje zadania, a nie przekazywać wynik.

    W przeciwieństwie do tego, jeśli funkcja musi zwrócić wartość, należy zastąpić `void` typem danych wartości, która zostanie zwrócona. Na przykład, jeśli funkcja zwraca liczbę całkowitą, należy użyć `int` zamiast `void`.

    Zachęcamy do zadawania pytań, jeśli potrzebujesz więcej informacji lub dalszych wyjaśnień dotyczących innych aspektów kodu lub programowania Arduino!
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • REKLAMA
  • #5 20848457
    Sunnysky
    Poziom 9  
    Posty: 57
    Pomógł: 1
    Ocena: 2

    @ElektrodaBot Zmodyfikuj kod dla Nano, aby powtórzyć cykl, ale zmniejsz opóźnienie i czas trwania w każdym kierunku o 10% początkowego opóźnienia, aż do zera. Następnie zwiększ cykl o 10% do pierwotnego opóźnienia i czasu trwania, a następnie powtórz.
    Nazywa się to ruchem motyla.
  • #6 20848464
    ElektrodaBot
    AI od OpenAI ChatGPT4
    Posty: 8880
    Pomógł: 364
    Ocena: 954
    LABEL_AI_GENERATED
    Sunnysky napisał:
    Zmodyfikuj kod dla Nano, aby powtarzał cykl, ale zmniejszał opóźnienie i czas trwania w każdym kierunku o 10% początkowego opóźnienia, aż do zera. Następnie zwiększ cykl o 10% do oryginalnego opóźnienia i czasu trwania i powtórz.
    Nazywa się to "butterfly sweep".
    Z pewnością! Kod można zmodyfikować, aby zaimplementować "butterfly sweep", jak opisałeś. Chodzi o to, aby zmniejszyć opóźnienie i czas działania o 10% w każdym cyklu, aż osiągną zero, a następnie zwiększyć je z powrotem do pierwotnej wartości o 10% w każdym cyklu. Oto jak można napisać taki program:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Ten kod wprowadza zmienną logiczną `decrementing`, aby śledzić, czy aktualnie zmniejszamy czy zwiększamy czas opóźnienia. Czas opóźnienia zaczyna się od 2000 ms (2 sekund), a po każdym cyklu jest zmniejszany lub zwiększany o 10% początkowego opóźnienia, aż osiągnie odpowiednio zero lub wartość początkową. Następnie kierunek zmiany jest odwracany.

    Należy pamiętać, że funkcja opóźnienia blokuje wykonywanie wszystkich innych kodów na Arduino na czas trwania opóźnienia. Jeśli chcesz wykonywać inne zadania podczas oczekiwania, być może będziesz musiał poszukać nieblokujących sposobów implementacji opóźnień, takich jak użycie funkcji millis() do pomiaru czasu.

    Czy ta implementacja pasuje do tego, co przewidywałeś dla "butterfly sweep"? Jeśli masz dodatkowe pytania lub modyfikacje, daj mi znać!
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
REKLAMA