Arduino R4 posiada wbudowany 12-bitowy DAC (Digital-to-Analog Converter), czyli jest w stanie generować sygnał analogowy bez podłączania dodatkowych modułów. Jest to duży krok naprzód, ponieważ w przypadku starszego Uno R3 i podobnych płytek musieliśmy dołączać zewnętrzne DAC takie jak MCP4725 i sterować nimi zazwyczaj przez SPI lub I2C by uzyskać sinusoidę. A tu można wygenerować ją bezpośrednio z pinu A0. W tym temacie krótko pokażę, jak można uruchomić DAC na Arduino R4 oraz przyjrzę się wygenerowanemu sygnałowi na oscyloskopie.
DAC - sinusoida na Arduino R4
Rozważmy przykład z dokumentacji Arduino. Przykład ten odczytuje wartość napięcia z potencjometru i zamienia ją na częstotliwość generowanej sinusoidy na DAC. Potencjometr jest tu w roli dzielnika napięcia, skrajne nóżki na VDD i GND, a środka na ADC. Poniżej znajduje się jego poprawiony kod, gdyż na czas pisania tematu w dokumentacji Arduino był błąd, był użyty raz zły pin - A0 zamiast A5.
Kod: C / C++
Potencjometr podłączony jest na A5, na A0 jest wyjście DAC.
Funkcja map, jak sama nazwa wskazuje, mapuje odczytaną wartość z ADC, która jest w zakresie od 0 do 1024 (10-bitowe ADC), na częstotliwość, której zakres dobraliśmy sobie od 0 do 10kHz.
Oto rezultat:
Na oscylogramach bardzo ładnie widać jak DAC tworzy przybliżenie sinusoidy wystarczające dla wielu zastosowań. Jeśli chcemy generować inną funkcję, to mamy też do wyboru:
Kod: C / C++
lub
Kod: C / C++
DAC z Arduino można zastosować przykładowo do generowania melodii, oto kod z oficjalnej dokumentacji:
Kod: C / C++
Powyższy kod generuje melodię "Frere Jacques", odtwarza sekwencję nut i rytmów, używając biblioteki AnalogWave do generowania fal dźwiękowych. Melodia jest odtwarzana na głośniku przy użyciu konwertera DAC i wzmacniacza audio (LM386), a parametry, takie jak tonika, melodia, rytm, tempo i długość nuty, są zdefiniowane w kodzie.
Pełną specyfikację Arduino R4 (w dostępnych jego wersjach) znajdziecie na stronie Arduino:
https://docs.arduino.cc/hardware/uno-r4-wifi
https://docs.arduino.cc/resources/datasheets/ABX00087-datasheet.pdf
Podsumowanie
Trudno jest nie zgodzić się ze stwierdzeniem, że typowy początkujący będzie mieć dużo do uruchamiania i zabawy z Arduino R4. Na pokładzie tej płytki jest znacznie więcej niż w kultowym R3, nawet oferuje ona omawiany tutaj DAC, co pozwala generować sinusoidę bez podłączenia zewnętrznych modułów. Wystarczy raptem kilka kabelków stykowych.
Mimo wszystko zastanawiam się, jak często się te DAC może przydać? Czy korzystaliście z DAC w swoich projektach, a jeśli tak to jakich? A może w R4 jest ono tylko zbędnym wodotryskiem? Zapraszam do dyskusji.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.