Znaki i teksty



W Arduino do pracy z tekstem możemy wykorzystać typ char lub klasę String. Obie metody mają swoje zalety i wady, a ich zastosowanie zależy od konkretnego projektu. W tym artykule wyjaśniamy różnice między nimi oraz prezentujemy przykłady użycia.




Typ char

Typ char jest używany do przechowywania pojedynczego znaku, np. litery, cyfry czy symbolu. Jego wartość zapisujemy w pojedynczym cudzysłowie ('), np. ‘A’.

W rzeczywistości typ char przechowuje liczby całkowite w zakresie od -128 do 127, a zapisany znak jest interpretowany jako jego odpowiadająca wartość w tabeli ASCII.

Tabela ASCII (American Standard Code for Information Interchange) to standard przypisujący każdemu znakowi (np. literze, cyfrze czy symbolowi) unikalny kod liczbowy. Na przykład:

  • Litera 'A' ma kod ASCII 65.
  • Litera 'a' ma kod ASCII 97.
  • Cyfra '0' ma kod ASCII 48.

Każdy znak w tabeli ASCII, chociaż zapisujemy go jako ‘A’, ‘a’ czy ‘0’, jest on wewnętrznie przechowywany jako odpowiadająca mu liczba (np. 65 dla ‘A’) w pamięci Arduino. Dzięki temu Arduino może łatwo manipulować znakami i używać ich w obliczeniach, operacjach porównywania lub przesyłać je do innych urządzeń.

Szczegóły znaków ASCII opisane zostaną w dalszej części kursu.

Poniżej znajduje się przykład (Symulacja_1) definicji zmiennej globalnej o nazwie znak i przypisanie jej wartości – literę ‘A’.

Symulacja_1

Kod rozpoczyna się od definicji zmiennej znak typu char, której przypisany jest pojedynczy znak ‘A’. Następnie w funkcji setup() inicjalizowana jest komunikacja szeregowa z prędkością 9600bps za pomocą Serial.begin(9600).

Instrukcja Serial.println(znak); wysyła wartość zmiennej znak do monitora portu szeregowego, dzięki czemu w momencie uruchomienia programu wyświetli się znak A. Znak ten wyświetli się tylko raz, ponieważ funkcja setup() uruchamiana jest jednokrotnie po starcie lub resecie płytki Arduino.

Funkcja loop() pozostaje pusta, dlatego po wyświetleniu znaku A program nie wykonuje żadnych dalszych operacji.

Uwaga: Z typu char można również zbudować tablicę znaków (char[]), która pozwala przechowywać ciągi znaków, takie jak słowa czy zdania. Szczegółowe omówienie tablic pojawi się w dalszej części kursu.





Klasa String

String w Arduino to klasa, która pozwala na przechowywanie ciągów znaków (tekstów). Przykładem takiego ciągu jest napis: “Hej, tu Arduino!”. Choć często traktowany jak typ danych, w rzeczywistości String jest bardziej zaawansowaną strukturą. Dzięki temu może dynamicznie zarządzać pamięcią i oferować funkcje, które znacznie upraszczają pracę z tekstami.


Rysunek przedstawia deklarację i przypisanie wartości obiektowi typu String w języku C++ w postaci String powitanie = "Hej, tu Arduino!";. Typ obiektu String definiuje, że zmienna będzie przechowywać ciąg znaków. Nazwa obiektu powitanie to identyfikator używany w programie. Operator = przypisuje wartość, którą w tym przypadku jest tekst w cudzysłowie "Hej, tu Arduino!". Instrukcja kończy się średnikiem ;. Czerwone strzałki i żółte opisy zostały dodane ręcznie, aby szczegółowo wyjaśnić każdy element tej deklaracji.
Rys.1. Elementy definicji obiektu tekstowego w Arduino.



Na Rys. 1, używając terminu obiekt, a nie zmienna, chcemy podkreślić, że obiekt powitanie jest bardziej zaawansowany niż zwykła zmienna, taka jak liczba (int) czy ułamek (float). Pochodzi on z klasy String, która oferuje dodatkowe funkcje (np. liczenie liter w tekście czy łączenie słów). Dzięki temu obiekt ten to coś więcej niż tylko miejsce na tekst – to wszechstronne narzędzie do pracy z ciągami znaków.

Przykład: Wyświetlanie tekstu

Poniższy program (Symulacja_2) pokazuje, jak użyć klasy String do przechowywania tekstu i wyświetlenia go w monitorze portu szeregowego.

Symulacja_2

Po wciśnięciu “Start”, na dole ramki symulatora pojawi się wynik w monitorze portu szeregowego: Hej, tu Arduino!

Szczegółowe wyjaśnienie powyższej symulacji:

  • Serial.begin(9600): Uruchamia komunikację szeregową, umożliwiając wysyłanie danych do komputera z prędkością 9600 bps.
  • String powitanie = “Hej, tu Arduino!”: Tworzy lokalny obiekt klasy String, który przechowuje tekst “Hej, tu Arduino!”.
  • Serial.println(powitanie): Wyświetla tekst zapisany w obiekcie powitanie w monitorze portu szeregowego. Tekst pojawia się tylko raz, ponieważ funkcja setup() wykonuje się jednokrotnie po uruchomieniu programu.
  • Pusta loop(): Pętla główna pozostaje pusta, co oznacza, że program nie wykonuje żadnych powtarzających się operacji.

Klasa String jest wygodnym narzędziem do przechowywania i manipulowania tekstami w Arduino, szczególnie dla początkujących programistów. Choć może nie być idealnym rozwiązaniem w projektach wymagających optymalizacji pamięci, jej łatwość obsługi czyni ją doskonałym wyborem na start.




Asystent Arduinowo_AI

Asystent Arduinowo_AI zgłębił powyższy zakres wiedzy i z przyjemnością wszystko Ci wyjaśni.




Zdobądź więcej wiedzy!

Przejdź do kolejnych materiałów naszego kursu: Operatory arytmetyczne.