Arrays: Was sind sie, wofür werden sie verwendet und welche Bedeutung haben sie in der Arduino-Programmierung?

Letzte Aktualisierung: 19/08/2022
Arrays: Was sie sind, wofür sie verwendet werden und welche Bedeutung sie in der Arduino-Programmierung haben.

Die Arduino-Platinen charakterisiert für einen ziemlich einfache Programmierung in der IDE-Umgebung. Dies liegt an der Verwendung von Arrays und Strings.die eine Vereinfachung einer Reihe verschiedener Variablen und Daten ermöglichen.

Wenn Sie tiefer in die Materie eintauchen möchten In der Welt der Arduino-Programmierung ist es wichtig, dass Sie diese beiden Funktionen kennen, da sie Ihnen helfen, Zeit zu sparen. Keine Fehler mehr.

Um mehr zu erfahren, ist es wichtig, dass Sie bis zum Ende weiterlesen. Wir erklären Ihnen, worum es bei diesen Konzepten geht und wie Sie Schritt für Schritt vorgehen, um eine Matrix zu verwenden. Fangen wir an

Was ist ein Array in der Arduino-Programmierung und wofür werden sie verwendet?

Im Folgenden zeigen wir Ihnen den Zweck zweier sehr wichtiger Elemente bei der Programmierung eines Arduino-Boards:

Arrays

Arrays, Vektoren oder MatrizenSie sind Behälter für Variablen. Das heißt, sie sind... "Variablen" die andere enthalten, um sie zusammen zu gruppieren. Sie werden auch Matrizen genannt.da seine grafische Darstellung der einer Matrix ähnelt, und Sie werden auch Vektoren genannt. weil Matrizen mit einer einzigen Zeile oder Spalte denselben Namen tragen.

Um ein Array verwenden zu können, müssen zwei Voraussetzungen erfüllt sein. Erstens sind alle enthaltenen Variablen von gleicher Art, und zweitens: dass die Grenze der Variablen, die das Programm speichern kann, nicht überschritten wird.

Dieser Grenzwert variiert je nach Array.Da wir es bei der Deklaration selbst vordefinieren (es ist wichtig, dass wir beim Erstellen eines Arrays Speicher reservieren, der zur Definition des Array-Endes verwendet wird), können wir dann sagen: Es handelt sich um eine Gruppe von Variablen, die unter einem einzigen Namen zusammengefasst sind. Innerhalb dieser Gruppe können jedoch weitere verschiedene Typen existieren, die durch einen Index geordnet sind. Dies vereinfacht die Programmierung, da der Code dadurch einfacher und übersichtlicher wird.

Streicher

Streicher

Zeichenketten oder „Schleifen“ Hierbei handelt es sich um Datentypen, mit denen Sie verschiedene Zeichen erfassen können. Sie unterscheiden sich von „char“. Weil sie die Speicherung von mehr als einem Zeichen ermöglichen. Es ist möglich. Speichern von Wörtern, Phrasen, Zahlen, Sonderzeichen oder einer Kombination dieser Elemente.

Zum Beispiel:

String str1 = "welcome"; String str2 = "welcome applicant"; String str3 = "54321"; String str4 = "welcome user 54321"; String str5 = "*/-+"; String str6 = "goodBenutzer kommt ++**54325**++";

Dank dieses Tools lassen sich unterschiedliche Ergebnisse leichter erzielen. Dazu gehört die Verkettung, bei der zwei Zeichenketten zu einer einzigen zusammengefügt werden.

Dies ist sehr hilfreich, wenn Sie Codesequenzen erstellen möchten, siehe unten:

String str1 = "welcome"; String str2 = "user"; String str3 = ""; str3 += str1; str3 += " "; str3 += str2;

Wenn Sie "str3" ausgeben, lautet das Ergebnis "welcome user".Wir haben eine Verkettung der Werte erstellt. "Willkommen" plus die Variable "Nutzername", nachdem ein leere String-VariableEine weitere Verwendungsmöglichkeit sind „toUpperCase()“ y “toLowerCase()”Diese Funktionen ersetzen alle Zeichen in der Zeichenkette durch Groß- bzw. Kleinbuchstaben. Sie sind auch sehr nützlich, um Zahlen von Dezimal- in Hexadezimal-, Oktal- oder Binärzahlen umzuwandeln.

Wir nehmen die Zahl 26 als Beispiel:

int num = 26; String hex = String(num, HEX); String bin = String(num, BIN); String oct = String(num, OCT); println(hex); println(bin); println(oct); Die Ausgabe lautet: 1A 11010 32

1A wäre 26 im Hexadezimalsystem, während 11010 das Ergebnis im Binärsystem und 32 im Oktalsystem ist.

Lerne Schritt für Schritt, wie du beim Programmieren mit Arduino eine Matrix oder ein Array verwendest.

Lerne Schritt für Schritt, wie du Matrizen oder Arrays bei der Programmierung mit Arduino verwendest.

Sowohl Arrays als auch Strings Dies sind unverzichtbare Werkzeuge, deren Benutzung Sie unbedingt lernen müssen. Wenn Sie Ihr Arduino-Board programmieren möchten.

Um Ihnen den Einstieg zu erleichtern, finden Sie hier einige grundlegende Anweisungen:

Verkünden

Es ist wichtig, Um es klarzustellen: Um Arrays zu verwenden, muss man als Erstes das erste Element indizieren. mit der Zahl NullAuf diese Weise können wir es nun abfragen und ihm Werte zuweisen.

Wir können sie auf folgende Weise deklarieren:

int losEnteros[6]; //deklariert ein Array mit 6 Variablen vom Typ int int losPins[] = {2, 4, 8, 3}; //deklariert ein Array mit 4 Variablen vom Typ int float losSensores[5] = {2, 4, -8, 3.8, 2.1, 6}; //deklariert ein Array mit 6 Variablen vom Typ float char mensaje[5] = "Greeting"; //deklariert ein Array mit 5 Elementen vom Typ char char mensaje[6] = {'s','a','l','u','d','o'}; //deklariert ein Array mit 6 Elementen vom Typ char int mimatriz[5]; int Pins[] = {2, 4, 8, 3, 6}; int losValores[5] = {2, 4, -8, 3, 2};

Sie sollten sich bewusst sein, dass Zeichenarrays benötigen ein zusätzliches Zeichen, um die Ebene des Arrays zu identifizieren..

Zugriff auf eine Matrix

Die Matrix, wie wir bereits erwähnt haben, Es wurde von Grund auf indexiert.Daher befindet sich der erste Wert an Index 0. Dem Beispiel zufolge theValues[0] wird gleich 2 sein und theValues[1] Es werden 4 sein.Daher ist beim Zugriff auf das Array Vorsicht geboten. Versuchen wir, auf Elemente jenseits des Endes zuzugreifen (mit einem Index kleiner als null oder größer als die deklarierte Größe), werden die verwendeten Speicheradressen beeinflusst. für andere Zwecke wird dies zu Fehlern führen..

Einem Array einen Wert zuweisen

Um wiederum einem Array Werte zuzuweisen, wird der Zuweisungsoperator (=) verwendet. Das Beispiel sieht wie folgt aus:

  • losSensores[0] = 10; //asigna 10 al primer elemento de la matriz
  • x = losSensores[4]; //guarda el valor del quinto elemento de la matriz en la variable x

Einen Wert aus einem Array abrufen

Um einen bestimmten Wert aus einer bestimmten Matrix abzurufen, genügt es gemäß dem Beispiel, folgende Zeile zu verwenden:

  • x = losValores[4];

Liste der besten Arduino-Projekte mit Arrays, die Sie zum Üben durchführen können.

Nun Wissen Sie, worum es bei diesen Werkzeugen geht?Die Zeit ist gekommen sie in die Praxis umsetzen.

Um Ihnen dabei zu helfen, haben wir diese drei Projekte bereitgestellt, damit Sie üben und alles, was Sie in diesem Beitrag gelernt haben, in die Praxis umsetzen können:

Gedächtnisspiel

Gedächtnisspiel

Es handelt sich um eine Spieleanwendung. Dabei müssen wir uns so viele Ziffern wie möglich einprägen, bis wir das Laden abgeschlossen haben. "Schlagzeug".

Hinsichtlich der Hardware benötigen wir Folgendes:

  • Arduino Mega 2560
  • Eine 7-Segment-Anzeige (ähnlich den Ziffern auf Taschenrechnern).
  • Ein Arduino-Ziffernblock vom Typ 3 x 4
  • Standard-Jumper
  • Eine Mini-Batterieladeanzeige

Dann verbinden wir sie wie folgt miteinander:

Dann verbinden wir sie wie folgt miteinander:

  • Verbinden Sie den ersten Pin von links mit Pin 8 des Arduino.Die Pins 8 bis 2 der Arduino Mega-Steuereinheit. Wie in der Abbildung gezeigt.
  • La Sieben-Segment-Anzeige verbindet zu den Pins 35, 37, 39, 41, 47, 49 und 53.
  • La Das Mini-Batteriedisplay wird über Stifte angeschlossen. DIO bei 9 und CLK bei 10.

Bezüglich der Software lautet der Code wie folgt:

#enthalten #enthalten int CLK = 10; int DIO = 9; TM1651 Battery Display(CLK, DIO); const byte ROWS = 4; const byte COLS = 3; char keys[ROWS][COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins[ROWS] = {8, 7, 6, 5}; byte colPins[COLS] = {4, 3, 2}; Keyboard keyboard = Keyboard(makeKeymap(keys), rowPins, colPins, ROWS, COLS); int start [ 7 ] = { 39 , 41 , 53 , 49 , 47 , 37 , 35 }; int ugasi [ 7 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 }; int jedan [ 7 ] = { 0 , 1 , 1 , 0 , 0 , 0 , 0 }; Zum Zeitpunkt t dva [ 7 ] = { 1 , 1 , 0 , 1 , 1 , 0 , 1 }; int tri[ 7 ] = { 1 , 1 , 1 , 1 , 0 , 0 , 1 }; int cetiri [ 7 ] = { 0 , 1 , 1 , 0 , 0 , 1 , 1 }; int pet [ 7 ] = { 1 , 0 , 1 , 1 , 0 , 1 , 1 }; int sest[7] = {0, 0, 1, 1, 1, 1, 1, 1}; int sedam[7] = {1, 1, 1, 0, 0, 0, 0, 0}; int osam[7] = {1, 1, 1, 1, 1, 1, 1, 1, 1}; int devet[7] = {1, 1, 1, 0, 0, 1, 1}; int null[7] = {1, 1, 1, 1, 1, 1, 1, 0}; int pom = 0; int s[50]; int k = 0; int partition = 0; empty configuration() { Serial.start(9600); Output(start); BatteryDisplay.init(); BatteryDisplay.set(BRIGHTEST); // BRIGHT_TYPICAL = 2, BRIGHT_DARKEST = 0, BRIGHTEST = 7; BatteryDisplay.frame(FRAME_ON); randomSeed(analogRead(0)); while (partition != 8) { BatteryDisplay.displayLevel(partition); s[k] = random(0, 10); WriteDisplay(start, ugasi); delay(200); ispisi(s[k]); if (Konacno(k) != 0) { WriteDisplay(start, ugasi); break; } break++; k++; } // while finish } // completion of setup void loop() {} int Konacno(int k) { int pom = 0; while (pom <= k) { char key = keyboard.getKey(); while (!key) { key = keyboard.getKey(); } if (s[pom] != K(key)) return -1; pom++; delay(400); } return 0; } // end konacno int K ( Char key ) { if ( key == '1' ) return 1 ; else if ( key == '2' ) return 2 ; else if ( key == '3' ) return 3 ; else if ( key == '4' ) return 4 ; else if ( key == '5' ) return 5 ; else if ( key == '6' ) return 6 ; else if ( key == '7' ) return 7 ; else if ( key == '8' ) return 8 ; else if ( key == '9' ) return 9 ; } }

Knight Rider, das fantastische Auto oder das verzauberte Auto

Knight Rider, das fantastische Auto oder das verzauberte Auto

Falls Ihnen diese Namen nichts sagen, werden sie Ihren Eltern oder sogar Großeltern sicherlich bekannt sein. Es handelt sich um einen Code, der eine Reihe von LEDs steuert. auf die gleiche Weise, wie es eine der Hauptfiguren in dieser Serie aus den Achtzigern tat.

Wir brauchen:

  • 6 LED
  • 6 Widerstände à 220 Ohm
  • Arduino UNO Board
  • Standard-Jumper

Die LEDs sind über einen Widerstand an jedem Jumper mit den Pins 2 bis 7 verbunden. Wir zeigen Ihnen außerdem drei verschiedene Möglichkeiten, diesen visuellen Effekt zu programmieren. In der ersten verwenden wir nur „digitalWrite“ (pinNum, HIGH / LOW) und „Verzögerung“ (Zeit). Im zweiten Fall werden wir dies durch die Konstruktion des Typs realisieren. "zum" was dasselbe bewirkt, aber mit einem Code mit weniger Zeilen.

Und schließlich der Code, der diesen Effekt reibungsloser umsetzt:

/* Knight Rider 1 */ int pin2 = 2; int pin3 = 3; int pin4 = 4; int pin5 = 5; int pin6 = 6; int pin7 = 7; int timer = 100; void setup(){ pinMode(pin2, OUTPUT); pinMode(pin3, OUTPUT); pinMode(pin4, OUTPUT); pinMode(pin5, OUTPUT); pinMode(pin6, OUTPUT); pinMode(pin7, OUTPUT); } void loop() { digitalWrite(pin2, HIGH); delay(timer); digitalWrite(pin2, LOW); delay(timer); digitalWrite(pin3, HIGH); delay(timer); digitalWrite(pin3, LOW); delay(timer); digitalWrite(pin4, HIGH); delay(timer); digitalWrite(pin4, LOW); delay(timer); digitalWrite(pin5, HIGH); delay(timer); digitalWrite(pin5, LOW); delay(timer); digitalWrite(pin6, HIGH); delay(timer); digitalWrite(pin6, LOW); delay(timer); digitalWrite(pin7, HIGH); delay(timer); digitalWrite(pin7, LOW); delay(timer); digitalWrite(pin6, HIGH); delay(timer); digitalWrite(pin6, LOW); delay(timer); digitalWrite(pin5, HIGH); delay(timer); digitalWrite(pin5, LOW); delay(timer); digitalWrite(pin4, HIGH); delay(timer); digitalWrite(pin4, LOW); delay(timer); digitalWrite(pin3, HIGH); delay(timer); digitalWrite(pin3, LOW); delay(timer); } /* Knight Rider 2 */ int pinArray[] = {2, 3, 4, 5, 6, 7}; int count = 0; int timer = 100; void setup(){ // Wir führen alle Deklarationen gleichzeitig durch for (count=0;count<6;count++) { pinMode(pinArray[count], OUTPUT); } } void loop() { for (count=0;count<6;count++) { digitalWrite(pinArray[count], HIGH); delay(timer); digitalWrite(pinArray[count], LOW); delay(timer); } for (count=5;count>=0;count--) { digitalWrite(pinArray[count], HIGH); delay(timer); digitalWrite(pinArray[count], LOW); delay(timer); } } /* Knight Rider 3 */ int pinArray[] = {2, 3, 4, 5, 6, 7}; int count = 0; int timer = 30; void setup(){ for (count=0;count<6;count++) { pinMode(pinArray[count], OUTPUT); void loop() { for (count=0;count<5;count++) { digitalWrite(pinArray[count], HIGH); delay(timer); digitalWrite(pinArray[count + 1], HIGH); delay(timer); digitalWrite(pinArray[count], LOW); delay(timer*2); } for (count=5;count>0;count--) { digitalWrite(pinArray[count], HIGH); delay(timer); digitalWrite(pinArray[count - 1], HIGH); delay(timer); digitalWrite(pinArray[count], LOW); delay(timer*2); } }

Binäruhr

Un binäre Uhr Es handelt sich um ein Gerät, das die Zeit visualisiert. (das sexagesimal ist) in einem zusammengesetzten Binärausdruck, also einem mit sechs Ziffern (2 für die Stunde, 2 für die Minuten und 2 für die Sekunden).

Das ist ganz einfach; zunächst benötigen wir Folgendes:

  • 1 Steckbrett
  • 6 rote LEDs
  • 6 grüne LEDs
  • 5 LEDs, Gelb
  • 17 Widerstände à 330 Ohm
  • 17 Springer
  • Arduino UNO

Mit allem, was ich gelernt habe, Sie werden in der Lage sein, alle im erforderlichen Code vorkommenden Arrays zu entschlüsseln. um diese Uhr zu bedienen.

Auschecken:

int ledPinsSec[] = {2, 3, 4, 5, 6, 7}; int ledPinsMin[] = {8, 9, 10, 11, 12, 13}; int ledPinsHr[] = {14, 15, 16, 17, 18, 19}; int secSize = sizeof(ledPinsSec) / sizeof(int); int minSize = sizeof(ledPinsMin) / sizeof(int); int hourSize = sizeof(ledPinsHr) / sizeof(int); int seconds = 30; int minutes = 30; int hours = 15; void setup() { begin(9600); // Gibt die Anzahl der Elemente in einem Array aus println(sizeof(ledPinsSec)); for(int i = 0; i< secSize;i++) { pinMode(ledPinsSec[i], OUTPUT); } for(int i = 0; i< minSize;i++) { pinMode(ledPinsMin[i], OUTPUT); } for(int i = 0; i< hourSize;i++) { pinMode(ledPinsHr[i], OUTPUT); } } void loop() { seconds++; if(seconds > 59) { seconds = 0; minutes++; if(minutes > 59) { minutes = 0; hours++; if(hours > 23) { hours = 0; } } } //Serial.println((char) seconds); print("Stunden: "); print(hours); print(" Minuten: "); print(minutes); print(" Sekunden: "); println(seconds); DisplaySeconds(); DisplayMinutes(); DisplayHours(); delay(1000); /* DisplaySeconds(); DisplayMinutes(); DisplayHours();*/ } void DisplaySeconds() { for(int i = secSize - 1; i>= 0; i--) { int currentSecond = bitRead(seconds, i); digitalWrite(ledPinsSec[i], currentSecond); } } void DisplayMinutes() { for(int i = minSize - 1; i>= 0; i--) { int currentMinute = bitRead(minutes, i); digitalWrite(ledPinsMin[i], currentMinute); } } void DisplayHours() { for(int i = hourSize - 1; i>= 0; i--) { int currentHour = bitRead(hours, i); digitalWrite(ledPinsHr[i], currentHour); } }
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