Podczas pracy z Arduino musimy wydrukować wiele danych na monitorze szeregowym. Normalnie Seryjny.wydrukować Funkcja jest używana, ale dziś wyróżnimy inną funkcję o nazwie Sprintf i sprawdzimy, w jaki sposób ta funkcja pomaga w drukowaniu wielu zmiennych w jednym wierszu na monitor szeregowych.
Za pomocą seryjnego.wydrukować()
Zwykle, gdy chcemy wydrukować zmienną lub wynik wyjściowy, używamy szeregów.print () lub szeregowy.println (), aby wydrukować każdy wynik na następnym wierszu. Załóżmy, że jeśli mamy wiele zmiennych, musimy napisać liczby linii dla drukowania szeregowego w zależności od liczby zmiennych.
Oto przykład, który ilustruje użycie szeregów.wydrukować():
W powyższym przykładzie zainicjowaliśmy trzy liczby całkowite zmienne A, B i C. Aby wydrukować wszystkie trzy zmienne na monitorze szeregowym, musimy osobno napisać kod szeregowego wydruku dla każdego. Tutaj użyliśmy trzech zmiennych, które prowadzą nas do pisania sześciu wierszy kodu, aby pokazać nam na monitorze szeregowym. Teraz wyobraź sobie pisanie kodu dla pięciu lub 10 zmiennych i drukowanie ich na monitorze szeregowym.
Wtedy pojawia się funkcja SprintF (), omówmy, jak wydrukować wszystkie trzy zmienne w jednym wierszu kodu.
Wydrukuj wiele zmiennych za pomocą funkcji Arduino sprintf ()
Sprintf () ogólnie oznacza „Druk strunowy". W przeciwieństwie do normalnego wydruku szeregowego Nie pokazuje bezpośrednio wyjścia zmiennych na monitor szeregowych, najpierw przechowuje wyjście w określonej zmiennej charb bufor.
sprintf () pozwala użytkownikowi wysłać sformatowane wyjście do tablicy char. Aby pokazać ciąg, w którym sformatowane są zmienne, serial.używana jest funkcja print ().
int sprintf (char * str, const char * format,…);
Jak używać Arduino sprintf ()
Sprintf () jest przydatna, gdy musimy wydrukować wiele zmiennych w jednym wierszu, używając trzech wierszy kodu, możemy napisać tyle zmiennych, ile chcemy. Oto podstawowa składnia pisania wielu zmiennych za pomocą SprintF ():
Char Buffer [40];
Sprintf (bufor, „Suma liczby %d i liczba %d to %d”, a, b, c);
Seryjny.println (bufor);
Przykładowy kod
Teraz wydrukujemy powyższy kod za pomocą sprintf () funkcjonować.
Przeanalizujmy teraz każdą wiersz kodu.
Najpierw w kodzie inicjujemy komunikację szeregową za pomocą szeregów.Rozpocznij () i ustawienie stawki BAUD na 9600. Później sekcja pętli inicjuje trzy zmienne a, b i c. Suma pierwszych dwóch zmiennych a i b będzie przechowywana w trzeciej zmiennej c. Teraz przejdź do głównej części kodu.
Char Buffer [40];
Rozmiar tablicy znaków musi być tak duży, jak może łatwo przechowywać zmienne wyjściowe i tekst. Policz liczbę znaków potrzebnych do przechowywania i wykonania bufora o dokładnie takim samym rozmiarze.
Sprintf (bufor, „Suma liczby %d i liczba %d to %d”, a, b, c);
Następny wiersz w kodzie to faktyczna funkcja Sprintf (). Wymaga 2 argumentów; Pierwszy argument będzie przechowywał postać wewnątrz tablicy bufora. Drugi argument to ciąg, który chcemy stworzyć. Tutaj, aby wyświetlić zmienną w ciągu, której użyliśmy Specyfikatory formatu.
Specyfikator formatu to znak %, a następnie list znany jako Formatowanie postaci. Specyfikatory znaków to litera po %. Oba te informują sprint (), jaki danych zostanie użyty dla dostępnych danych.
Niektóre wspólne specyfikatory postaci to:
Postać | Typ danych |
---|---|
d lub i | Podpisano liczbę całkowitą dziesiętną |
u | Niepodpisana liczba całkowita dziesiętna |
S | Ciąg znaków |
W powyższym przykładzie zainicjowaliśmy trzy specyfikatory formatu za pomocą %D co oznacza, że chcemy, aby 3 zmienne były przechowywane w ciągu wyjściowego jako Podpisano liczbę całkowitą dziesiętną. Aby uzyskać wartości do tych trzech zmiennych, 3 argumenty są dodawane zaraz po ciągu. Dla każdego specyfikatora formatu musimy przekazać osobną wartość, a każdy z nich oddzielony przecinkiem.
Notatka: Funkcje sprintf () w Arduino nie mogą obsługiwać wartości zmiennoprzecinkowych. Tak więc, jeśli musimy wydrukować liczbę dziesiętną około 3.14 lub 12.12, najpierw musimy przekonwertować tę wartość pływaka na ciąg, a następnie wydrukować na ekranie. Funkcja dtostrf () jest powszechnie używany do tego.
Wniosek
Podczas programowania płyty Arduino musimy szukać wszystkich dostępnych technik i funkcji, które mogą zoptymalizować nasz kod. Posiadanie minimalistycznego i wydajnego kodu pomaga szybko uruchomić Arduino. Podczas drukowania danych na temat monitora szeregowego używamy funkcji szeregowej drukowania, ale tutaj omówiliśmy funkcję Sprint () może pomóc Arduino w drukowaniu wielu zmiennych na jednej linii.