Samouczek programowania kontrolera Arduino dla początkujących

  • Owen Little
  • 0
  • 1155
  • 94
Reklama

Sygnalizacja świetlna Arduino to zabawny mały projekt, który można zbudować w niecałą godzinę. Oto jak zbudować własny przy użyciu Arduino i jak zmienić obwód na zaawansowaną odmianę.

Jeśli wolisz obejrzeć ten samouczek jako film, zapewnimy Ci:

Co jest potrzebne do zbudowania kontrolera sygnalizacji świetlnej Arduino

Oprócz podstawowego Arduino potrzebujesz:

  • 1 x rezystor 10 kΩ
  • 1 x przełącznik przyciskowy
  • 6 x rezystory 220 omów
  • Deska do krojenia
  • Przewody łączące
  • Czerwone, żółte i zielone diody LED

Prawie każde Arduino będzie działać dla tego projektu, pod warunkiem, że ma wystarczającą liczbę pinów. Zapoznaj się z naszym przewodnikiem zakupu Arduino Przewodnik zakupu Arduino: Którą deskę powinieneś dostać? Poradnik kupujący Arduino: Którą deskę powinieneś dostać? Jest tak wiele różnych rodzajów tablic Arduino, że wybaczono by ci, że jesteś zdezorientowany. Który powinieneś kupić dla swojego projektu? Pomóż nam, korzystając z tego przewodnika zakupów Arduino! jeśli nie jesteś pewien, jakiego modelu potrzebujesz. Być może już masz te części w zestawie startowym Arduino Co zawiera zestaw startowy Arduino? [Początkujący Arduino] Co zawiera zestaw startowy Arduino? [Arduino Beginners] W obliczu pudełka pełnego elementów elektronicznych łatwo jest zostać przytłoczonym. Oto przewodnik po tym, co znajdziesz w swoim zestawie. .

Arduino Traffic Light: The Basics

Zacznijmy od małego. Podstawowa, pojedyncza sygnalizacja świetlna jest dobrym miejscem do rozpoczęcia. Oto obwód:

Podłącz anodę (długą nogę) każdej diody LED do styków cyfrowych ósmej, dziewiątej i dziesiątej (za pomocą rezystora 220 omów). Podłącz katody (krótka noga) do uziemienia Arduino.

Kod sygnalizacji świetlnej Arduino

Zacznij od zdefiniowania zmiennych, aby można było adresować światła według nazwy, a nie liczby. Rozpocznij nowy projekt Arduino i zacznij od następujących linii:

int czerwony = 10; int żółty = 9; int zielony = 8;

Następnie dodajmy funkcję konfiguracji, w której skonfigurujesz czerwoną, żółtą i zieloną diodę LED jako wyjścia. Ponieważ utworzyłeś zmienne reprezentujące numery pinów, możesz teraz odwoływać się do pinów według nazwy:

void setup () pinMode (czerwony, WYJŚCIE); pinMode (żółty, WYJŚCIE); pinMode (zielony, WYJŚCIE); 

The pinMode funkcja konfiguruje Arduino do użycia danego pinu jako wyjścia. Musisz to zrobić, aby diody LED w ogóle działały. Teraz rzeczywista logika sygnalizacji świetlnej. Oto kod, którego potrzebujesz. Dodaj to poniżej definicji zmiennych i funkcji konfiguracji:

void loop () changeLights (); opóźnienie (15000);  void changeLights () // zielony wyłączony, żółty włączony przez 3 sekundy digitalWrite (zielony, LOW); digitalWrite (żółty, WYSOKI); opóźnienie (3000); // wyłącz żółty, następnie włącz czerwony na 5 sekund digitalWrite (żółty, NISKI); digitalWrite (czerwony, WYSOKI); opóźnienie (5000); // czerwony i żółty włączony przez 2 sekundy (czerwony już jest włączony) digitalWrite (żółty, WYSOKI); opóźnienie (2000); // wyłącz czerwony i żółty, następnie włącz zielony digitalWrite (żółty, NISKI); digitalWrite (czerwony, LOW); digitalWrite (zielony, WYSOKI); opóźnienie (3000); 

Prześlij ten kod do swojego Arduino i uruchom (upewnij się, że wybrałeś właściwą płytkę i port z Przybory > Deska i Przybory > Port menu). Powinieneś mieć działające światło drogowe, które zmienia się co 15 sekund, w ten sposób (przyspieszone):

Podzielmy ten kod. The changeLights funkcja wykonuje całą ciężką pracę. Spowoduje to obrócenie świateł drogowych przez kolor żółty i czerwony, a następnie powrót do zieleni. Jak to zostanie wywołane wewnątrz pętla funkcja Arduino uruchomi ten kod na zawsze, z 15-sekundową przerwą za każdym razem.

The changeLights funkcja składa się z czterech różnych kroków:

  • Zielony włączony, żółty wyłączony
  • Żółty wyłączony, czerwony włączony
  • Żółty na, czerwony na
  • Zielony włączony, czerwony wyłączony, żółty wyłączony

Te cztery kroki replikują proces stosowany na prawdziwych światłach. Dla każdego kroku kod jest bardzo podobny. Odpowiednia dioda LED zostaje włączona lub wyłączona za pomocą digitalWrite. Jest to funkcja Arduino używana do ustawiania pinów wyjściowych na WYSOKA (dla włączenia) lub LOW (dla wyłączenia).

Po włączeniu lub wyłączeniu wymaganych diod LED, opóźnienie sprawia, że ​​Arduino czeka przez określony czas. W tym przypadku trzy sekundy.

Going Deep: przejście dla pieszych Arduino

Teraz, gdy znasz podstawy, poprawmy to. Dodaj przycisk, aby piesi mogli zmienić światło, kiedy tylko chcą:

Zauważ, że sygnalizacja świetlna jest dokładnie taka sama jak w poprzednim przykładzie. Podłącz przycisk do styku cyfrowego 12. Zauważysz, że do przełącznika jest podłączony rezystor 10 kΩ o wysokiej impedancji, i możesz się zastanawiać, dlaczego. Jest to rezystor obniżający.

Przełącznik albo pozwala na przepływ prądu, albo nie. Wydaje się to dość proste, ale w obwodzie logicznym prąd powinien zawsze płynąć w stanie wysokim lub niskim (pamiętaj, 1 lub 0, WYSOKA lub NISKA). Można założyć, że przycisk, który nie został naciśnięty, byłby w stanie NISKIM, ale w rzeczywistości mówi się, że jest „pływający”, ponieważ w ogóle nie pobiera się prądu.

W tym stanie zmiennym możliwe jest, że nastąpi fałszywy odczyt, ponieważ zmienia się on z zakłóceniami elektrycznymi. Innymi słowy, przełącznik pływający nie daje ani wiarygodnego odczytu WYSOKIEGO, ani NISKIEGO. Opornik obniżający utrzymuje niewielką ilość prądu płynącego po zamknięciu przełącznika, zapewniając w ten sposób dokładny odczyt stanu niskiego.

W innych obwodach logicznych zamiast tego może znajdować się rezystor podciągający, i działa to na tej samej zasadzie, ale odwrotnie, upewniając się, że konkretna bramka logiczna ma domyślnie wysoką wartość.

Teraz, w części kodu w pętli, zamiast zmieniać lampki co 15 sekund, zamiast tego przeczytasz stan przełącznika przyciskowego i zmienisz lampki tylko wtedy, gdy jest aktywowany.

Kod dla przejścia dla pieszych Arduino

Zacznij od dodania nowej zmiennej do przechowywania kodu PIN przycisku:

przycisk int = 12; // przełącznik znajduje się na pinie 12 

Teraz w funkcji konfiguracji dodaj nowy wiersz, aby zadeklarować przełącznik jako wejście. Dodaj linię, aby ustawić sygnalizację świetlną na zielonym etapie. Bez tego początkowego ustawienia wyłączyliby się po raz pierwszy changeLights biegnie.

pinMode (przycisk, WEJŚCIE); digitalWrite (zielony, WYSOKI);

Zamiast tego zmień całą funkcję pętli na:

void loop () if (digitalRead (button) == HIGH) delay (15); // oprogramowanie debounce jeśli (digitalRead (przycisk) == HIGH) // jeśli przełącznik jest WYSOKI, tj. wciśnięty - zmień światła! changeLights (); opóźnienie (15000); // poczekaj 15 sekund

Że należy to zrobić. Być może zastanawiasz się, dlaczego sprawdzanie przycisku odbywa się dwukrotnie (digitalRead (przycisk)), oddzielone niewielkim opóźnieniem. To zapowiada. Podobnie jak rezystor obniżający przycisk, ta prosta kontrola zatrzymuje kod wykrywający niewielkie zakłócenia po naciśnięciu przycisku.

Czekając w środku Jeśli oświadczenie przez 15 sekund, sygnalizacja świetlna nie może się zmienić przynajmniej przez ten czas. Po upływie 15 sekund pętla uruchomi się ponownie. Przy każdym ponownym uruchomieniu pętli ponownie odczytuje stan przycisku, ale jeśli nie zostanie naciśnięty, przycisk Jeśli instrukcja nigdy się nie aktywuje, światła nigdy się nie zmieniają, a program ponownie się uruchamia.

Oto jak to wygląda (przyspieszone):

Arduino Sygnalizacja świetlna ze skrzyżowaniem

Wypróbujmy bardziej zaawansowany model. Zamiast przejścia dla pieszych zmień obwód, tak aby miał dwie sygnalizację świetlną:

Podłącz drugie światło drogowe do cyfrowych styków 11, 12 i 13.

Kod sygnalizacji świetlnej Arduino ze skrzyżowaniem

Najpierw przypisz nowe piny sygnalizacji świetlnej do zmiennych i skonfiguruj je jako dane wyjściowe, jak w pierwszym przykładzie:

// light one int red1 = 10; int yellow1 = 9; int green1 = 8; // light two int red2 = 13; int yellow2 = 12; int green2 = 11; void setup () // light one pinMode (red1, OUTPUT); pinMode (żółty1, WYJŚCIE); pinMode (zielony1, WYJŚCIE); // light two pinMode (red2, OUTPUT); pinMode (żółty2, WYJŚCIE); pinMode (zielony2, WYJŚCIE); 

Teraz zaktualizuj pętlę, aby użyć kodu z pierwszego przykładu (zamiast przejścia dla pieszych):

void loop () changeLights (); opóźnienie (15000); 

Po raz kolejny wszystkie prace są prowadzone w changeLights funkcjonować. Zamiast iść czerwony > czerwony I żółty > Zielony, ten kod będzie naprzemiennie sygnalizacji świetlnej. Kiedy jeden jest zielony, drugi jest czerwony. Oto kod:

void changeLights () // włącz oba żółte na digitalWrite (zielony1, LOW); digitalWrite (żółty1, WYSOKI); digitalWrite (żółty2, WYSOKI); opóźnienie (5000); // wyłącz oba żółte i przeciwne zielone i czerwone digitalWrite (żółty 1, NISKI); digitalWrite (czerwony1, WYSOKI); digitalWrite (żółty 2, NISKI); digitalWrite (czerwony2, LOW); digitalWrite (zielony2, WYSOKI); opóźnienie (5000); // oba żółcie ponownie na digitalWrite (żółty1, WYSOKI); digitalWrite (żółty2, WYSOKI); digitalWrite (zielony2, LOW); opóźnienie (3000); // wyłącz oba żółte i przeciwne zielone i czerwone digitalWrite (zielony1, WYSOKI); digitalWrite (żółty 1, NISKI); digitalWrite (czerwony1, LOW); digitalWrite (żółty 2, NISKI); digitalWrite (czerwony2, WYSOKI); opóźnienie (5000); 

Oto jak to wygląda (przyspieszone):

Arduino Sygnalizacja świetlna Następne kroki

To wszystko na dzisiaj. Twoje nowe rozumienie diod i przycisków Arduino dotyczy wszystkich rodzajów różnych projektów. Jeśli chcesz rozszerzyć te sygnalizację świetlną, dlaczego nie zbudować czterokierunkowego (lub więcej) skrzyżowania, wraz z wieloma przejściami dla pieszych i światłami dla pieszych?

A może poszerzysz swoje umiejętności o większy projekt, taki jak ten DIY kontroler MIDI lub robot Arduino z Xod? Możesz także przyjrzeć się kodowaniu Arduino za pomocą VS Code i PlatformIO Lepsze kodowanie Arduino za pomocą VS Code i PlatformIO Lepsze kodowanie Arduino za pomocą VS Code i PlatformIO Chcesz w łatwy sposób rozpocząć kodowanie Arduino? Dzięki PlatformIO i VS Code możesz uprościć projekty Arduino i szybciej się uczyć. .

Źródło zdjęcia: androsvector / Shutterstock




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.