Strings in Arduino: Was sind sie, wofür werden sie verwendet und wie setzt man sie in Open-Source-Hardware-Programmierprojekten ein?

Letzte Aktualisierung: 19/08/2022
Strings in Arduino: Was sie sind, wofür sie verwendet werden und wie man sie in Open-Source-Hardware-Programmierprojekten einsetzt.

Strings in Arduino sind sehr nützliche Werkzeuge, die Sie müssen dies verwenden, um Ihre Platine zu programmieren.Daher ist es wichtig zu wissen, wozu diese Funktionen dienen und Welche Arten von Zeichenketten gibt es? das können Sie finden.

Dazu müssen Sie diesen Artikel bis zum Ende lesen, denn Wir erklären Ihnen, welche Arten von Strings es gibt und welche Syntax Sie verwenden sollten. um ihre Arbeit zu verstehen.

Aber das ist noch nicht alles, Sie finden auch eine Anleitung zur Verwendung eines Zeichenkette (Objekt) und eine Liste der besten DIY-Projekte, mit denen Sie üben können.

Was ist ein String in der Arduino-Programmierung und wozu werden sie bei der Programmierung dieser Hardware verwendet?

En Arduino-Programmierung, Strings sind Werkzeuge, die zum Speichern von Zeichenketten verwendet werden. Daher wird es nicht als Schnur nicht als Faktum an sich, sondern als eine von diesen abhängige Klasse. Die Beendigung erfolgt mittels eines Nullzeichens. Darüber hinaus zeichnen sie sich dadurch aus, dass sie eine gewisse Speicherkapazität reservieren. Arduino-Platine einen Puffer erstellen und diesen intensiv nutzen können die Funktionen, die sie den Nutzern anbieten.

Zeichenkettentypen in der Arduino-Programmierung: Welche Typen gibt es alle?

Zeichenkettentypen in der Arduino-Programmierung: Welche Typen gibt es alle?

Kann gefunden werden verschiedene Arten von Zeichenketten die in der Programmierung verwendet werden Arduinos.

Wir werden sie Ihnen im Folgenden einzeln vorstellen:

Zeichenarray

Char-Arrays sind Zeichenmatrizen, die in großen Textketten verwendet werden.Das heißt, jedes Mal, wenn Sie in C++ mit einer Zeichenkette arbeiten, die mit dem Wert 0 (\0) endet, erzeugen Sie aufeinanderfolgende Speicherkompositionsstrukturen, die daher weniger Speicher belegen, und wenn nicht würde eine Zeichenkette als Zeichen identifizierenWichtig ist zu beachten, dass Sie immer mit einem Nullzeichen abschließen müssen und dass Sie auf die einzelnen Zeichen innerhalb der Zeichenkette verweisen können.

Object

Wenn Sie nicht mit großen Textmengen arbeiten Sie können ein String-Objekt verwenden.Diese Klassen von Daten verbessern die Verarbeitung von Zeichenketten durch Methoden Diese Funktionen werden von Benutzern unter anderem dazu verwendet, zwei Zeichenketten zu vergleichen, bestimmte Zeichen zu finden, Elemente zu verketten und an die Zeichenkette anzuhängen.

Zeichenkettenoperatoren

Operatoren sind Symbole, die Sie dienen dazu, eine konkrete Anweisung zu formulieren. al String Auf diese Weise können Aktionen eingerichtet werden, um ein bestimmtes Zeichen in der Zeichenkette hinzuzufügen, zu extrahieren und zu überprüfen, ob es wahr ist oder nicht.

Syntax von Zeichenketten (Zeichenarrays): Wie versteht man ihre Deklarationen und Verwendungsbedingungen?

Bei der Verwendung eines lange Reihe von Texten Sie müssen ein/eine verwenden. Zeichenarray.

Dazu zeigen wir Ihnen, wie Sie damit umgehen:

Aussagen

Folgende Aussagen sind in einer Zeichenkette für eine Zeichenkette gültig:

  • char Str1[14]; Diese Syntax dient dazu, ein Array auf allgemeine Weise zu initialisieren.
  • char Str2[4] = {'a', 'u', 'i'}; In diesem Fall werden zusätzliche Zeichen festgelegt, und der Compiler fügt das Nullzeichen hinzu.
  • char Str3[4] = {'a', 'u', 'i', '\0'}; Wenn Sie das Nullzeichen manuell einfügen möchten, müssen Sie diese Struktur verwenden.
  • char Str4[] = «ipap"; Sie können einen String mit einer Konstanten mithilfe einfacher Anführungszeichen initialisieren. Die IDE legt dann die Arraygröße fest.
  • char Str5[8] = «ipap"arduino"; Wenn Sie die Größe manuell festlegen und eine Konstante angeben, müssen Sie diese Syntax verwenden.
  • char Str6[15] = «ipap"arduino"; Diese Struktur ermöglicht das Hinzufügen einer längeren Zeichenkette, da ein Leerzeichen gelassen wird.

Nullterminierung

Nullendungen werden verwendet um zu definieren, wo eine Kette endetHierfür ist es notwendig, ein/eine einzubeziehen Nullzeichenvon ASCII-Code , am Ende der Funktion. Es kann manuell durch Eingabe von «\0» oder automatisch, so dass es geschehen ist interpretiert von der Arduino IDE.

Zeichenkettenmatrizen

Matrizen werden verwendet, um Zeichenketten konfigurieren, die große Textmengen enthaltenDadurch wird die Arbeit erleichtert, da die Komplexität der Handhabung reduziert wird.

Lerne Schritt für Schritt, wie du mit Strings (Objekten) in Arduino programmierst.

Lerne Schritt für Schritt, wie du mit Strings (Objekten) in Arduino programmierst.

Um in einer IDE einen String zu verwenden, müssen Sie folgende Schritte befolgen:

Syntax

Das erste, was Sie tun müssen, ist Säbel ist die Frage, wie man damit umgeht Struktur, die einen String enthält.

Dazu müssen Sie die Syntax berücksichtigen, die in einem String (Objekt) verwendet wird:

  • Schnur(Wert)
  • Schnur(Wert, Basis)
  • Schnur(Wert, Dezimalstellen)

Parameter

Als Nächstes müssen Sie die Parameter implementieren, die in der obigen Syntax verwendet werden:

  • Wert: Dies bezieht sich auf die Variable, die formatiert werden muss, um einen String zu erhalten. Unterstützte Datentypen für diese Parameter sind byte, char, double, float, int, long, string, unsigned int und unsigned long.
  • Base: Dieser Parameter ist optional und gibt die Basis an, in der die Variable formatiert werden soll. Standardmäßig wird Basis 10 verwendet, es können aber auch Hexadezimal- und Binärzahlen angegeben werden. Beispiele hierfür sind `String(14, HEX)` und `String(13, BIN)`.
  • Nachkommastellen: Bei Verwendung von Gleitkomma- oder Double-Werten muss die Dezimalstelle angegeben werden.
Was ist ein Ultraschallsensor und wie kann man ihn mit Arduino verwenden? Schritt-für-Schritt-Anleitung

funciones

Schließlich musst du die Funktionen einbeziehen al String

Die in der Arduino IDE verwendeten Funktionen sind:

  • charAt(): Diese Funktion dient dazu, auf ein bestimmtes Element der Zeichenkette zuzugreifen.
  • comparateTo(): Mit diesem Tool können Sie zwei Zeichenketten vergleichen und so feststellen, ob sie gleich sind oder nicht.
  • concat(): Wenn Sie ein Element oder einen Parameter zur Zeichenkette hinzufügen müssen, müssen Sie diese Funktion verwenden.
  • c_str(): Diese Variable wird verwendet, wenn Sie eine Zeichenkette in eine C-Zeichenkette konvertieren müssen.
  • endet mit (): Es dient dazu zu prüfen, ob eine gegebene Zeichenkette mit einem bestimmten Zeichen endet.
  • gleich (): Mit dieser Funktion können zwei Zeichenketten verglichen und auf Gleichheit geprüft werden.
  • gleichIgnoreCase(): Wie die vorherige Funktion dient auch diese Variable dazu, zwei Zeichenketten zu vergleichen, jedoch ohne Berücksichtigung von Groß- und Kleinbuchstaben.
  • getBytes(): Ermöglicht das Kopieren von Zeichen aus einer Zeichenkette.
  • index(): Diese Funktion wird auf einen String angewendet, wenn Sie nach einer Zeichenkette oder einem Wert innerhalb einer Zeichenkette suchen müssen.
  • lastIndexOf(): Es dient dazu, ein Zeichen oder eine Zeichenkette zu finden.
  • Länge (): Wenn ich die Länge der Zeichenkette wissen muss, müssen Sie diese Funktion verwenden.
  • entfernen (): Entfernt oder verändert Zeichen.
  • ersetzen(): kann innerhalb einer Zeichenkette ein Zeichen durch ein anderes ersetzen.
  • Reservieren (): Diese Funktion kann genutzt werden, um den Speicher des Boards zu puffern und so Prozesse auszuführen, ohne die Hardwareleistung zu beeinträchtigen.
  • setCharAt(): Es dient dazu, einen Charakter einzubinden.
  • beginnt mit (): Diese Funktion zeichnet sich dadurch aus, dass sie prüft, ob eine Zeichenkette mit einem bestimmten Element beginnt.
  • substring(): Wie der Name schon sagt, dient diese Funktion dazu, eine Teilzeichenkette innerhalb einer Zeichenkette zu erhalten.
  • toCharArray(): Es ermöglicht das Kopieren von Zeichen innerhalb des ausgewählten Puffers, um Speicherplatz freizugeben.
  • toDouble(): Wenn die Zeichenkette gültig ist, kann sie zur Duplizierung verwendet werden.
  • toInt(): Eine Zeichenkette kann in eine Ganzzahl umgewandelt werden, sofern sie gültig ist.
  • toFloat(): Es schafft es, einen String in ein Gleitkommazeichen umzuwandeln.
  • toLowerCase(): Wenn die Zeichenkette in Großbuchstaben geschrieben ist und in Kleinbuchstaben umgewandelt werden muss, sollte diese Funktion verwendet werden.
  • zuGroßbuchstabe (): Es handelt sich um die umgekehrte Situation zur vorherigen Funktion.
  • trimmen (): Mit diesem Tool kann man ein Leerzeichen am Anfang oder Ende der String-Version einfügen.

Liste der besten String-basierten Programmierprojekte, die Sie zum Üben selbst durchführen können.

Im Folgenden stellen wir Ihnen die besten Projekte vor, die Sie können sich mithilfe von Strings selbst programmieren..

Lass uns anfangen:

Schnellreaktionsgerät

Schnellreaktionsgerät

Mit einem Arduino UNO BoardFür die Installation werden ein Druckknopf, ein Steckbrett, ein LED-Display und ein 10-kΩ-Widerstand benötigt. Man kann ein Display erstellen, auf dem man eine Frage eingibt und eine zufällige Antwort erhält. Für Fragen und Antworten sollte die Zeichenkette verwendet werden.

Die benötigten Codes:

#enthalten #enthalten #enthalten #enthalten

Nun müssen Sie die Variablen einbinden und sie auf dem Bildschirm konfigurieren:

#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 32 #define STRING_ARRAYSIZE 10 // Deklaration für ein SSD1306-Display, das an I2C (SDA-, SCL-Pins) angeschlossen ist - Arduino UNO: A4 (SDA - Daten), A5 (SCL - Takt) #define OLED_RESET 4 // Reset-Pin # (oder -1, wenn der Reset-Pin des Arduino verwendet wird) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

Konfigurieren Sie die Schaltflächenvariablen:

const int buttonPin = 2; int buttonState = 0; int lastButtonState = 0; int randomNumber = 0; String mainText = "Fragen"; void setup() { // Serielle Einrichtung begin(9600); // OLED-Einrichtung // SSD1306_SWITCHCAPVCC = Generiert intern Displayspannung aus 3.3 V if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Adresse 0x3C für 128x32 println(F("SSD1306-Zuweisung fehlgeschlagen")); for(;;); // Nicht fortfahren, Endlosschleife } displayTextOnOLED(mainText); // PIN für die Tastenkonfiguration pinMode(buttonPin, INPUT); // Wenn der analoge Eingangspin 0 nicht angeschlossen ist, führt zufälliges analoges Rauschen dazu, dass der Aufruf von randomSeed() // bei jedem Durchlauf des Sketches unterschiedliche Startwerte generiert. // randomSeed() mischt dann die Zufallszahlen. randomSeed(analogRead(0)); } // Zweck ist es, den Zustand eines Buttons zu überwachen // und beim Drücken einen anderen Text auf dem OLED-Display anzuzeigen // beim Loslassen den setup()-Text anzuzeigen void loop() { // Zustand des Druckbuttons lesen: buttonState = digitalRead(buttonPin); if ( buttonState != lastButtonState ){ if (buttonState == HIGH) { displayTextOnOLED(randomText()); } else { displayTextOnOLED(mainText); } } lastButtonState = buttonState; } void displayTextOnOLED(String str) { clearDisplay(); setTextSize(2); // Text in doppelter Größe zeichnen setTextColor(SSD1306_WHITE); setCursor(0,0); println(str); display(); // Anfangstext anzeigen }

Verwenden Sie die Zeichenkette:

String randomText(void) { String texts[STRING_ARRAYSIZE] = {"Da", "Nu", "Nu stiu!", "Nu vreau!", "Du-te naibii!","Varule","Te pup!","Sigur!", "Sigur ca nu!","Nah!"}; if ( buttonState != lastButtonState ) { randomNumber = random(1, 10); return texts[randomNumber]; } else { return texts[randomNumber]; } }

Radarstation

Radarstation

Für dieses Projekt benötigen Sie ein Arduino-Board., ein Ultraschallsensor des Modells HC-SR04, Sie benötigen einen Servomotor, Kabel und einen 10-kΩ-Widerstand. Verbinden Sie den Sensor mit den Pins 10 und 11 der Platine und den Servo mit Pin 12.

Als Nächstes müssen Sie diese Codes mithilfe von Strings eingeben:

#enthalten const int trigPin = 10; const int echoPin = 11; long duration; int distance;

Um den Servomotor zu steuern, müssen Sie ein Servo-Objekt erstellen:

Servo myServo; void setup() { pinMode(trigPin, OUTPUT); outputPinMode(echoPin, INPUT); begin(9600); attach(12); } void loop () {

Programmieren Sie den Drehradius des Servomotors zwischen 15 und 165 Grad:

for (int i = 15; i <= 165; i++) { write(i); delay(30); distance = calculateDistance(); print(i); print(","); print(distance); print("."); } for (int i = 165; i > 15; i -) { write(i); delay(30); distance = calculateDistance(); print(i); print(","); print(distance); print("."); } } int calculateDistance() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.034 / 2; return distance; } Verwenden Sie SerialEvent(), um Distanz- und Winkelwerte zu empfangen: empty drawRadar() { pushMatrix(); translate(960,1000); noFill(); strokeWeight(2); stroke(98,245,31); arc(0,0,1800,1800, PI, TWO_PI); arc(0,0,1400,1400, PI, TWO_PI); arc(0,0,1000,1000, PI, TWO_PI); arc(0,0,600,600, PI, TWO_PI); line of anglelines(-960,0,960,0); line(0,0, -960 cos(radians(30)), -960 sin(radians(30))); line(0,0, -960 cos(radians(60)), -960 sin(radians(60))); line(0,0, -960 cos(radians(90)), -960 sin(radians(90))); line(0,0, -960 cos(radians(120)), -960 sin(radians(120))); line(0,0, -960 cos(radians(150)), -960 sin(radians(150))); line(-960 * cos(radians(30)), 0,960,0); popMatrix(); }

Zeichne die Linien ein, die auf dem Radar sichtbar sein werden:

void drawLine() { pushMatrix(); strokeWeight(9); stroke(30,250,60); translate(960,1000); locationLine(0,0,950 cos(radians(iAngle)), -950 sin(radians(iAngle))); popMatrix(); } Radar-Print-Screen-04

Nun müssen Sie die Objekte zeichnen, die das Radar erfasst:

void drawObject() { pushMatrix(); translate(960, 1000); strokeWeight(9); stroke(255, 10, 10); pixsDistance = iDistance 22.5; if (iDistance < 40) { // zeichnet Objekt gemäß Winkel und Entfernung line (pixsDistance cos(radians(iAngle)), -pixsDistance sin(radians(iAngle)), 950 cos(radians(iAngle)), -950 * sin(radians(iAngle))); } popMatrix(); }

Füge Wörter zum Bildschirm hinzu:

leere Zeichenfunktion { fill(98, 245, 31); textFont(orcFont); noStroke(); fill(0, 4); rect(0, 0, width, 1010); fill(98, 245, 31); // grüne Farbe drawRadar(); Draw line(); drawObject(); drawText(); }

Programmieren Sie das Radar:

import processing.serial.*; import java.awt.event.KeyEvent; import java.io.IOException; Serial myPort; String angle = ""; String distance = ""; String data = ""; String noObject; float pixsDistance; int iAngle, iDistance; int index1 = 0; int index2 = 0; void PFont orcFont; void setup() { size(1920, 1080); smooth(); myPort = new Serial(this, "COM4", 9600); bufferUntil('.'); orcFont = loadFont("OCRAExtended-30.vlw"); } void draw() { fill(98, 245, 31); textFont(orcFont); noStroke(); fill(0, 4); rect(0, 0, width, 1010); fill(98, 245, 31); drawRadar(); DrawLine(); drawObject(); drawText(); } void serialEvent(Serial myPort) { data = myPort.readStringUntil('.'); data = data.substring(0, data.length() - 1); index1 = data.indexOf (","); angle = data.substring(0, index1); distance = data.substring(index1 + 1, data.length());

An dieser Stelle müssen Sie die String-Variablen in Integer-Variablen umwandeln:

iAngle = int(angle); iDistance = int(distance); } void drawRadar() { pushMatrix(); translate(960, 1000); noFill(); strokeWeight(2); stroke(98, 245, 31); // Kreisbögen zeichnen arc(0, 0, 1800, 1800, PI, TWO_PI); arc(0, 0, 1400, 1400, PI, TWO_PI); arc(0, 0, 1000, 1000, PI, TWO_PI); arc(0, 0, 600, 600, PI, TWO_PI); // Gerade zeichnen angle(-960, 0, 960, 0); line(0, 0, -960 cos(radians(30)), -960 sin(radians(30))); line(0,0, -960 cos(radians(60)), -960 sin(radians(60))); line(0,0, -960 cos(radians(90)), -960 sin(radians(90))); line(0,0, -960 cos(radians(120)), -960 sin(radians(120))); line(0,0, -960 cos(radians(150)), -960 sin(radians(150))); line(-960 cos(radians(30)), 0,960,0); popMatrix(); } void drawObject() { pushMatrix(); translate(960,1000); strokeWeight(9); stroke(255,10,10); pixsDistance = iDistance 22.5; if (iDistance < 40) { // Zeichne das Objekt gemäß der Winkel- und Entfernungslinie (pixsDistance cos(radians(iAngle)), -pixsDistance sin(radians(iAngle)), 950 cos(radians(iAngle)), -950 sin(radians(iAngle))); } popMatrix(); } void drawLine() { pushMatrix(); strokeWeight(9); stroke(30,250,60); translate(960,1000); locationLine(0,0,950 cos(radians(iAngle)), -950 sin(radians(iAngle))); popMatrix(); }

Füge dem Bildschirm Text hinzu:

void drawText() { pushMatrix(); if (iDistance > 40) { noObject = "Außerhalb des Bereichs"; } else { noObject = "Im Bereich"; } fill(0, 0, 0); noStroke(); rect(0, 1010, width, 1080); fill(98, 245, 31); textSize(25); text("10 cm", 1180, 990); text("20 cm", 1380, 990); text("30 cm", 1580, 990); text("40 cm", 1780, 990); textSize(40); text("Objekt:" + noObject, 240, 1050); text("Winkel:" + iAngle + "°", 1050, 1050); text("Entfernung:", 1380, 1050); if (iDistance < 40) { text("" + iDistance + "cm", 1400, 1050); } textSize(25); fill(98, 245, 60); translate(961 + 960cos(radians(30)), 982-960sin(radians(30))); rotate(-radians(-60)); text("30°", 0, 0); resetMatrix(); translate(954 + 960cos(radians(60)), 984-960sin(radians(60))); rotate(-radians(-30)); text("60°", 0, 0); resetMatrix(); translate(945 + 960cos(radians(90)), 990-960sin(radians(90))); rotate(radians(0)); text("90°", 0,0); resetMatrix(); translate(935 + 960 cos(radians(120)), 1003 - 960 sin(radians(120))); rotate(radians(-30)); text("120°", 0,0); resetMatrix(); translate(940 + 960 cos(radians(150)), 1018 - 960 sin(radians(150))); rotate(radians(-60)); text("150°", 0,0); popMatrix(); }

Feuchtigkeitsdetektor

Setzen Sie ein Arduino UNO R3 BoardMit einem Steckbrett, einem Feuchtigkeitssensor, Drähten und einem Widerstand können Sie eine Station aufbauen Feuchtigkeitssensor.

Was sind die besten DIY-Projekte mit Arduino und 3D-Druck? Liste 2026

Sie müssen die Verbindung anhand des unten gezeigten Bildes herstellen:

Feuchtigkeitsdetektor

Anschließend müssen Sie diese Codes mithilfe von Strings eingeben:

#enthalten const int RHT03_DATA_PIN = 0; RHT03 rht; void configuration() { begin(9600); begin(RHT03_DATA_PIN); } void loop() { int updateRet = rht.update(); // Bei Erfolg gibt die update()-Funktion 1 zurück, andernfalls einen Wert < 0. if (updateRet == 1) { float latestHumidity = rht.humidity(); float latestTempC = rht.tempC(); float latestTempF = rht.tempF();

Nun müssen Sie die erhaltenen Ergebnisse ausdrucken:

println("Luftfeuchtigkeit:" + String (latestHumidity, 1) + "%"); println("Temperatur (°F):" + String(latestTempF, 1) + "Grad F"); println("Temperatur (°C):" + String(latestTempC, 1) + "Grad C"); } { delay (RHT_READ_INTERVAL_MS); } delay(1000); }
E-Books von IPAP
Ebooks IPAP

🔥WERDE TEIL DER NEUEN IP@P-COMMUNITY! MELDE DICH HIER AN!

Themen

Autor: Félix Albornoz

Ich verfüge über mehr als 20 Jahre Berufserfahrung im Technologiesektor und unterstütze Unternehmen und Anwender bei ihrer Entwicklung und Weiterbildung in diesem Bereich. Ich lerne ständig dazu.

Verwandte