Kurs Arduino #5: PWM – obsługa funkcji analogRead() analogWrite()

Kurs Arduino #5: PWM – obsługa funkcji analogRead() analogWrite()

2. Przykład wykorzystania funkcji analogWrite()
Skoro już wiemy co i jak to czas przejść do konkretów, a właściwie to do programowania. Na samym początku sprawdźmy czy to co przed chwilą powiedziałem to prawda. W tym celu stworzyłem prosty kod, dzięki któremu możemy ustawić poziomy jasności naszych diod.

5.2

DSCN1342

Główna funkcja, która pociąga za sznurki to analogWrite(). Składania wygląda następująco:

Przykład:

Chcemy aby napięcie dochodzące do naszej diody wynosiło 3.3V. Musimy zatem przeliczyć wartość PWM. Najprostszy moim zdaniem sposób podzielenie docelowego napięcia przez maksymalne napięcia z PWM, a potem pomnożyć przez cały zakres PWM. Czyli:

3.3V / 5V = 0.66

0.66 * 256 = 168.96

Wynik końcowy to nasza wartość PWM, którą wstawiamy do programu.

To był zapis wartość PWM, Teraz przejdziemy do odczytu sygnału analogowego.

3. Przykład wykorzystania funkcji analogRead()

Żeby tego dokonać musimy użyć funkcji analogRead(). Składnia funkcji:

Programem poniżej przedstawię na jakiej zasadzie działa funkcji analogRead():

5.3

 

 

Na początku przypisujemy alias dla pinu potencjometra A0 oraz tworzymy zmienną „war”, która będzie przechowywać wartość z przetwornika A/C.  W konfiguracji startowej ustawiamy nasz potencjometr jako wejście oraz definiujemy transmisję UART o prędkość 9600 baud. Następnie w pętli głównej programu wskazujemy funkcji analogRead(), aby przesyłała wartości do zmiennej war. Następnie wartość odczytana z potencjometru ma być przekazana na UART. Następnie program ma poczekać 0.2 sekundy na kolejny odczyt. Po wgraniu programu klikamy lupę w prawym górnym rogu co w efekcie daje nam dostęp do monitora portu szeregowego. W dolnym prawym rogu ustawiamy prędkość transmisji- w tym przypadku 9600 baud i klikamy reset na Arduino. Jeżeli do Arduino podłączasz bezpośrednio kabel USB to nie potrzebujesz takiej przejściówki jak na schemacie wyżej. W efekcie końcowym powinniśmy otrzymać coś takiego:

Jak widzimy wartość potencjometru waha się w przedziale 0-1023. Jest to podyktowane tym, że przetwornik A/C w ATMega jest 10-bitowy, więc możemy osiągnąć 1024 poziomów odczytu.

4. Program podsumowujący 

Pozostało nam już tylko podsumować tą część kursu, programem który będzie łączyć nasze dzisiejsze zagadnienia. Do tego celu możemy wykorzystać joystick analogowy (albo dwa potencjometry 10k ohm) i diodę RGB. Plan jest taki, aby sumować dwa kolory, które sobie wybierzemy. Ja na przykład wybrałem niebieski i zielony. Program ma działać na tej zasadzie, że jak zwiększamy wartości na potencjometrach to wzrastają również jasności świecenie diod. Jednak ja tylko pokażę efekt końcowy jaki ma być uzyskany a cały program oraz schemat połączeń musisz stworzyć samemu, jako zadanie domowe :)

Jeżeli za pierwszym razem nie wyjdzie to się nie załamuj tylko próbuj dalej, nie wszystko wychodzi za pierwszym razem ;) W załączniku dostępne są materiały do tej części kursu, oraz przykładowe rozwiązanie zadania domowego ;). Galeria poniżej prezentuje, jakie efekty otrzymałem, łącząc różne kolory diod.


wsady oraz schematy do tej części kursu:

Download-icon

 

 

 


Jeżeli chcesz być informowany na bieżąco o nowych częściach kursu to kliknij „Lubię to!” bądź subskrybuj naszą stronę, aby otrzymywać na adres e-mail nowości ze strony. Jeżeli masz jakieś pytania to śmiało zadawaj je na forum ; )