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

[Rozwiązano] Arduino Nano - jak ustawić pin LED w szkicu Blink without Delay?

11 Lip 2024 16:43 318 4
REKLAMA
  • #1 21151038
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #2 21151060
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1462
    grzegorz77xxx napisał:
    ale tego języka na tą chwilę totalnie nie pojmuje.


    A jaką ksiażkę na ten temat czytałeś?


    grzegorz77xxx napisał:
    Wcześniej pisałem krótkie programy w bascomie, ale z powodu ograniczenia kodu (Demo) przeszedłem na C, a później liznąłem trochę assemblera.

    grzegorz77xxx napisał:
    nie rozumiem skąd program wie, którego leda ma zapalić


    To ciekawe. Przy czwartym języku programowania sie rozumie przyczyna - skutek (nawet jeśli czasem trzeba zerknąć w dokumentację nt syntaxu)


    grzegorz77xxx napisał:
    Mam problem z Arduino Nano.


    Jaki problem ?
    Wyraźnie określić problem, już w połowię się go rozwiązuje

    Na tym etapie widzę problem lenistwa
  • REKLAMA
  • Pomocny post
    #3 21151099
    gps79
    Poziom 37  
    Posty: 2190
    Pomógł: 495
    Ocena: 792
    Każdy program Arduino zachowuje się, praktycznie jak standardowy program C++.
    W C++ wystarczy komenda:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    aby zaświecić diodę podłączoną do portu PB5 (po uprzedniej inicjalizacji portu).

    W Arduino wygląda to następująco:
    W programie "Blink without Delay" zapalasz diodę LED_BUILTIN.
    Kliknij prawym przyciskiem myszy na LED_BUILTIN i wybierz z menu "Go to definition". Przeniesie Cię do pliku pins_arduino.h. Zobaczysz tam, że LED_BUILTIN ma wartość 13.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Jest to wirtualny numer pinu (używany tylko w świecie Arduino).

    Zmiana stanu tego pinu (w mikrokontrolerze) odbywa się poprzez wywołanie funkcji digitalWrite(ledPin, ledState);
    "Go to definition" na tej funkcji pokazuje, zawartość, tj.
    1) wyszukany zostaje rzeczywisty port mikrokontrolera przypisany do wirtualnego pinu 13
    2) wyszukany zostaje rzeczywisty pin mikrokontrolera przypisany do wirtualnego pinu 13
    3) następuje zmiana stanu pinu mikrokontrolera

    Ad. 1)
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    "Go to definition" wskazuje na odczyt elementu z tablicy digital_pin_to_port_PGM[].
    13. pozycja w tablicy digital_pin_to_port_PGM[], to "PB", czyli 2.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    "Go to definition" wskazuje na odczyt elementu z tablicy port_to_output_PGM[].
    2. pozycja w tablicy port_to_output_PGM[], to "&PORTB".

    Ad. 2)
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    "Go to definition" wskazuje na odczyt elementu z tablicy digital_pin_to_bit_mask_PGM[].
    13 pozycja w tablicy digital_pin_to_bit_mask_PGM[], to "_BV(5)", czyli (1<<5).

    Ad. 3)
    W zależności od potrzeby zmiana stanu pinu na niski lub wysoki
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dla każdej płytki Arduino (nano, mega, uno, itd.) stworzone są oddzielne pliki z definicjami. Dlatego zawsze przed kompilacją programu należy wybrać platformę (płytkę Arduino), a kod skompilowany dla jednej płytki Arduino może nie działać na innej.
    Czytać, przeglądać, analizować, a będzie zapamiętane.
  • REKLAMA
  • #4 21151118
    Konto nie istnieje
    Poziom 1  
  • #5 21151144
    Konto nie istnieje
    Poziom 1  
REKLAMA