Bezpłatna biblioteka techniczna ENCYKLOPEDIA RADIOELEKTRONIKI I INŻYNIERII ELEKTRYCZNEJ Arduino. Operacje wejścia-wyjścia analogowego, praca z dźwiękiem. Encyklopedia elektroniki radiowej i elektrotechniki Encyklopedia radioelektroniki i elektrotechniki / Projektant radioamatorów Chociaż cyfrowe operacje I/O pozwalają rozwiązywać szeroki zakres zadań, to jednak obecność zintegrowanego przetwornika analogowo-cyfrowego (ADC) w mikrokontrolerze płytki Arduino oraz możliwość wyprowadzania sygnałów analogowych z wykorzystaniem szerokości impulsu modulację (PWM) zapewniają pracę z czujnikami analogowymi oraz wszelkiego rodzaju elementami wykonawczymi, oddziałującymi na obiekt proporcjonalnie do sygnału sterującego. Ściśle mówiąc, w trybie wyjściowym wszystkie linie portu Arduino mogą przesyłać tylko sygnały dyskretne, które mają tylko dwa stany. Ale mikrokontroler jest w stanie bardzo szybko zmieniać te stany, generując prostokątne impulsy. Jeśli zastosujesz te impulsy do dowolnego urządzenia, które ma właściwości bezwładnościowe, to będzie się zachowywać tak, jakby przyłożone do niego napięcie było stałe, równe średniej wartości impulsu i zmieniało się płynnie, a nie przeskakiwało między wysokimi i niskimi poziomami logicznymi. W trybie PWM port generuje sygnał impulsowy o stałej częstotliwości i zmiennym współczynniku wypełnienia (jest to stosunek okresu powtarzania impulsów do czasu ich trwania). Często zamiast cyklu pracy działają z jego odwrotnością - cyklem pracy, który można zmienić od 0 (brak impulsów) do 100% (impulsy następują, łączą się, bez przerw). Dlatego, chociaż napięcie wyjściowe jest w danym momencie wysokie lub niskie, jego średnia wartość jest proporcjonalna do cyklu pracy. Jeśli podłączysz zwykły multimetr do tego wyjścia, pokaże on tę wartość (oczywiście, jeśli częstotliwość pulsowania jest wystarczająco wysoka). W Arduino UNO wyjścia D3, D5, D6, D9, D10 i D11 mogą pracować w trybie PWM. Zwykle na płytce są one oznaczone znakami „~” lub skrótami „PWM”. Należy zauważyć, że płytki Arduino innych modyfikacji mogą mieć mniej lub więcej takich wyjść. W najprostszym przypadku PWM można wykorzystać do sterowania jasnością diody LED. To urządzenie jest praktycznie bezwładnościowe, ale ludzki wzrok ma na tyle bezwładności, że sekwencja szybkich błysków diody LED jest postrzegana jako ciągłe świecenie o jasności zależnej od współczynnika wypełnienia. Wyjścia cyfrowe obsługujące PWM są domyślnie skonfigurowane do korzystania z tego trybu, więc nie trzeba wywoływać funkcji pinMode(), aby działały w tym trybie. Aby ustawić cykl pracy sygnału PWM, istnieje standardowa funkcja analogWrite(N, M), gdzie N to numer pinu, M to liczba proporcjonalna do wymaganego cyklu pracy. Musi mieścić się w zakresie od 0 do 255, gdzie 0 oznacza zerowy cykl pracy (stała niska moc wyjściowa), a 255 oznacza 100% cykl pracy (stała wysoka moc wyjściowa). Schematy czasowe napięcia wyjściowego dla niektórych wartości M i odpowiednio cyklu pracy Kz pokazano na ryc. 1.
Rozważmy na przykład tabelę podaną w tabeli. 1 program, który stopniowo zwiększa jasność diody podłączonej do wyjścia cyfrowego D9, a następnie stopniowo ją zmniejsza. Opiera się na przykładowym przykładzie 3.AnalogFading dostarczonym z Arduino IDE. Wyliczenie wartości współczynnika wypełnienia impulsu realizowane jest tutaj za pomocą operatorów pętli for rozważanych już w [1]. 1 stołowy. Do odbioru sygnałów analogowych z urządzeń zewnętrznych Arduino wykorzystuje wejścia A0-A5, które domyślnie ustawione są na żądany stan, więc nie jest wymagana dodatkowa inicjalizacja. Przetwornik ADC wbudowany w Arduino UNO generuje 10-bitowe kody binarne i konwertuje napięcie wejściowe w zakresie od 0 do +5 V na liczbę całkowitą od 0 do 1023 (210-1). Do odczytania wyniku konwersji służy funkcja analogRead(N), gdzie N to numer wejścia analogowego. Do wejść analogowych Arduino można podłączyć różnorodne czujniki, których napięcie wyjściowe jest proporcjonalne do mierzonej wartości (rezystory zmienne, termistory, fotorezystory itp.). Należy jednak pamiętać, że na wejście analogowe można podać tylko od 0 do +5 V. Jeżeli napięcie wyjściowe czujnika leży w innym przedziale lub ma ujemną polaryzację, sygnał należy najpierw umieścić w określonym przedziale . Wejście analogowe jest odpytywane z częstotliwością mniejszą niż 10 kHz [2], co może nie być wystarczające do analizy niektórych szybko zmieniających się sygnałów. Obecność wejść analogowych pozwala zamienić Arduino w prosty woltomierz cyfrowy, który mierzy stałe napięcie od 0 do +5 V i przesyła wynik pomiaru do komputera. W tym celu wystarczy pobrać do Arduino program pokazany w tabeli 2. XNUMX. Tabela 2 Należy pamiętać, że stałymi w programie są napięcie odniesienia ADC Uref (w miliwoltach) oraz współczynnik konwersji kodu wyjściowego ADC na napięcie Ku. Wartość współczynnika oblicza się dzieląc podane napięcie odniesienia przez 1023. Współczynnik jest zwykle ułamkiem, więc stała Ki jest typu float (liczba zmiennoprzecinkowa). Stała Uref ma ten sam typ do prawidłowego obliczenia współczynnika. Ponieważ po prawej stronie formuły znajdują się tylko stałe, to nie mikrokontroler oblicza współczynnik podczas wykonywania programu, ale sam kompilator na etapie jego translacji. Wszystko to pozwala zwiększyć dokładność woltomierza poprzez zmierzenie multimetrem dokładnej wartości napięcia odniesienia na pin Uref płytki Arduino i wpisanie jej do programu poprzez przypisanie stałej Uref. Inne sposoby poprawy dokładności konwersji analogowo-cyfrowej można znaleźć w [3, 4]. Gdy program jest uruchomiony, na płytce miga dioda TX, sygnalizując przesyłanie informacji przez port szeregowy. Dioda LED RX jest wyłączona, ponieważ komputer nie wysyła niczego w odpowiedzi. Wbudowany terminal Arduino IDE wyświetla odebrane informacje (rys. 2) - wyniki pomiaru napięcia baterii galwanicznej 3332.
Arduino może dawać nie tylko sygnały świetlne, ale także dźwiękowe. W tym celu do jednego z jego wyjść należy podłączyć emiter dźwięku piezoelektrycznego, np. ZP-1 (rys. 3).
Do pracy z dźwiękiem przewidziano specjalny ton funkcyjny (N, F, T), gdzie N to numer pinu, na którym będą generowane prostokątne impulsy; F - częstotliwość dźwięku, Hz; T - czas trwania dźwięku, ms. Ostatni parametr jest opcjonalny. W przypadku jego braku dźwięk będzie ciągły. Aby go wyłączyć, dostępna jest funkcja noTone(N). Oczywiście piezoceramicznego emitera dźwięku trudno nazwać wysokiej jakości urządzeniem odtwarzającym, a sygnał generowany przez mikrokontroler ma kształt prostokąta, niemniej jednak korzystanie z tych funkcji pozwala na odtwarzanie prostych melodii. Przykład podano w tabeli. 3. To jest nieco zmodyfikowany przykład 02. Cyfrowy program oneMelody dołączony do Arduino IDE. Ponieważ ręczne ustawianie częstotliwości każdej nuty melodii jest niewygodne, plik pitches.h jest dołączany do programu w jego nagłówku za pomocą dyrektywy #include. Operacja ta jest równoznaczna z włączeniem do programu pełnego tekstu tego pliku. W tym przypadku zawiera listę nazw nut, które można odtwarzać, oraz ich częstotliwości. Tabela 3 Emiter dźwięku musi być podłączony do wyjścia D8. Dla programu melodia jest ciągiem stałych tego samego typu (wartości częstotliwości), które są wygodnie łączone w tablicę - ponumerowaną listę podobnych elementów. Deklarując tablicę, musisz albo wyliczyć wszystkie jej elementy, albo podać ich całkowitą liczbę. Należy zauważyć, że numeracja elementów tablicy zawsze zaczyna się od zera. W tym przykładzie użyto dwóch tablic: int melody[] zawiera nazwy nut melodii, int note Durations[] - czas ich trwania w milisekundach. Aby uzyskać dostęp do elementu tablicy, należy podać jego nazwę z numerem kolejnym ujętym w nawiasy kwadratowe. Aby móc łatwo zmienić liczbę nut w melodii, jest ona obliczana za pomocą funkcji sizeof(V), które zwracają liczbę bajtów zajmowanych przez jej argument (zmienną lub ich tablicę) w pamięci mikrokontrolera. W tym przypadku tablica melodii ma długość 16 bajtów, a jej elementy int mają długość dwóch bajtów. W związku z tym zmienna Note przyjmuje wartość 8 i tyle razy powtórzy się ciało pętli for, odtwarzając nuty jedna po drugiej. Jeśli dodasz kilka nut do tablicy melody[], wartość nuty odpowiednio się zmieni. Pamiętaj tylko, aby wypełnić tablicę noteDurations[] czasem trwania tych nut. Ponieważ melodia jest odtwarzana raz, wszystkie niezbędne do tego operacje są umieszczane w funkcji setup(). Aby ponownie wykonać, należy zresetować mikrokontroler, naciskając przycisk RESET na płytce Arduino. Omówione w artykule programy dla Arduino można pobrać z ftp://ftp.radio.ru/pub/2016/09/aninout.zip. literatura
Autor: D. Lekomtsev Zobacz inne artykuły Sekcja Projektant radioamatorów. Czytaj i pisz przydatne komentarze do tego artykułu. Najnowsze wiadomości o nauce i technologii, nowa elektronika: Nowy sposób kontrolowania i manipulowania sygnałami optycznymi
05.05.2024 Klawiatura Primium Seneca
05.05.2024 Otwarto najwyższe obserwatorium astronomiczne na świecie
04.05.2024
Inne ciekawe wiadomości: ▪ Paliwo nanoelektryczne do nieskończonego ładowania baterii ▪ Odkurzacz automatyczny Samsung POWERbot VR7000 ▪ Stres nie jest niebezpieczny, ale reakcja na niego ▪ Słowa i ich emocjonalne zabarwienie Wiadomości o nauce i technologii, nowa elektronika
Ciekawe materiały z bezpłatnej biblioteki technicznej: ▪ część serwisu Transport osobisty: lądowy, wodny, powietrzny. Wybór artykułu ▪ artykuł Oświetlenie jako element kręcenia wideo. sztuka wideo ▪ artykuł W jakim mieście prawie wszyscy mieszkańcy mieszkają w tym samym domu? Szczegółowa odpowiedź ▪ artykuł Zaciskanie pętli. Wskazówki podróżnicze ▪ artykuł Tranzystory polowe KP150 - KP640. Encyklopedia elektroniki radiowej i elektrotechniki
Zostaw swój komentarz do tego artykułu: Wszystkie języki tej strony Strona główna | biblioteka | Artykuły | Mapa stony | Recenzje witryn www.diagram.com.ua |