Arrayer: Hva er de, hva brukes de til, og hva er deres betydning i Arduino-programmering?

Siste oppdatering: 19/08/2022
Forfatter: Felix Albornoz
Arrayer: Hva de er, hva de brukes til, og deres betydning i Arduino-programmering

Las arduino-brett karakterisert for å ha en ganske enkel programmering i IDE-miljø. Dette skyldes bruken av arrayer og strengersom tillater forenkling av et sett med forskjellige variabler og data.

Hvis du vil dykke dypere inn i I Arduino-programmeringens verden er det viktig at du kjenner disse to funksjonene, fordi de vil hjelpe deg med å spare tid. ingen flere feil.

For å lære mer er det viktig at du fortsetter å lese til slutten. Vi vil forklare hva disse konseptene handler om og den trinnvise prosessen du bør følge for å bruke en matrise. La oss komme i gang.

Hva er en array i Arduino-programmering, og hva brukes de til?

Nedenfor viser vi deg formålet med to svært viktige elementer i programmeringen av et Arduino-kort:

arrays

Matriser, vektorer eller matriserDe er beholdere for variabler. Det vil si at de er... «variabler» som inneholder andre for å gruppere dem sammen. De kalles også matriser, siden den grafisk representerte arrangementet ligner på en matrise, og De kalles også vektorer fordi matriser med én rad eller kolonne kalles med samme navn.

For å kunne bruke en array, er det to krav. Den første er at alle variablene som er inkludert er av samme natur, og den andre er, at grensen for variabler som programmet kan lagre ikke overskrides.

Denne grensen varierer avhengig av arrayetSiden vi forhåndsdefinerer den selv når vi deklarerer den (det er viktig at vi, når vi oppretter en matrise, reserverer minne som brukes til å definere slutten av matrisen). Vi kan da si at, Det er et sett med variabler gruppert under ett enkelt navn, Innenfor denne gruppen kan det imidlertid finnes andre typer, sortert etter en indeks. Dette forenkler programmeringen ved å gjøre koden enklere og tydeligere.

Strenger

Strenger

Tegnstrenger eller «strenger» Dette er datatyper som lar deg samle forskjellige tegn. De skiller seg fra «char» fordi de tillater lagring av mer enn ett tegn. Det er mulig. lagre ord, uttrykk, tall, spesialtegn eller kombinasjoner av disse elementene.

For eksempel:

String str1 = "velkommen"; String str2 = "velkommen søker"; String str3 = "54321"; String str4 = "velkommen bruker 54321"; String str5 = "*/-+"; String str6 = "bra"brukeren kommer ++**54325**++";

Takket være dette verktøyet er det mulig å oppnå forskjellige resultater enklere. Blant dem er sammenkobling, som består av å sette sammen to tegnstrenger til én.

Dette er veldig nyttig når du vil lage kodesekvenser, se nedenfor:

String str1 = "velkommen"; String str2 = "bruker"; String str3 = ""; str3 += str1; str3 += " "; str3 += str2;

Hvis du skriver ut «str3», blir resultatet «velkommen bruker».Det vi gjorde var å lage en sammenkobling av verdien "velkomst" pluss variabelen "Brukernavn", etter å ha indikert en tom strengvariabelEn annen av bruksområdene er «toUpperCase()» y «tilSmå bokstaver()»Disse funksjonene erstatter alle tegn i strengen med henholdsvis store og små bokstaver. De er også svært nyttige for å konvertere tall fra desimaltall til heksadesimaltall, oktaltall eller binærtall.

Vi bruker 26 som et eksempel:

int num = 26; String hex = String(num, HEX); String bin = String(num, BIN); String oct = String(num, OCT); println(hex); println(bin); println(oct); Når resultatene skrives ut, vil de gi 1A 11010 32

1A ville være 26 i heksadesimal, mens 11010 er resultatet i binært system og 32 i oktalt system.

Lær trinn for trinn hvordan du bruker en matrise eller et array når du programmerer med Arduino

Lær trinn for trinn hvordan du bruker en matrise eller arrayer når du programmerer med Arduino

Både arrayer og strenger Dette er uunnværlige verktøy som du må lære å bruke Hvis du vil programmere Arduino-kortet ditt.

For å komme i gang, her er noen grunnleggende instruksjoner:

Å erklære

Det er viktig For å avklare, for å bruke arrayer, må du først indeksere det første elementet. med tallet nullPå denne måten kan vi nå spørre den og tilordne verdier til den.

Vi kan deklarere dem på en av følgende måter:

int losEnteros[6]; //deklarerer en matrise med 6 variabler av typen int int losPins[] = {2, 4, 8, 3}; //deklarerer en matrise med 4 variabler av typen int float losSensores[5] = {2, 4, -8, 3.8, 2.1, 6}; //deklarerer en matrise med 6 variabler av typen float char melding[5] = "Hilsen"; //deklarerer en matrise med 5 elementer av typen char char melding[6] = {'s','a','l','u','d','o'}; //deklarerer en matrise med 6 elementer av typen char int mimatriz[5]; int Pins[] = {2, 4, 8, 3, 6}; int losValores[5] = {2, 4, -8, 3, 2};

Du bør huske på det char-arrays krever et ekstra tegn for å identifisere nivået på arrayet..

Tilgang til en matrise

Matrisen, som vi allerede har sagt, Den er indeksert fra bunnen avDerfor er den første verdien på indeks 0. I følge eksemplet, Verdiene[0] vil være lik 2 og Verdiene[1] Det blir 4Derfor må vi være forsiktige når vi får tilgang til arrayet. Hvis vi prøver å få tilgang utover slutten (ved å bruke en indeks som er mindre enn null eller større enn den deklarerte størrelsen), vil minneplasseringene som brukes bli påvirket. til andre formål vil forårsake feil.

Tilordne en verdi til en matrise

For å tilordne verdier til en matrise brukes tilordneroperatoren (=), og eksemplet fortsetter som følger:

  • 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

Hent en verdi fra en matrise

For å hente den spesifikke verdien fra en spesifikk matrise, og i henhold til eksemplet, trenger vi bare å bruke linjen:

  • x = losValores[4];

Liste over de beste Arduino-prosjektene med arrayer du kan gjøre for å øve

Hva nå Vet du hva disse verktøyene handler om?Tiden er inne for å sette dem ut i praksis.

For å hjelpe deg med dette har vi laget disse tre prosjektene, slik at du kan øve og sette alt du har lært i dette innlegget ut i livet:

Minnespill

Minnespill

Det er en spillapplikasjon der vi må memorere så mange sifre som mulig inntil vi er ferdige med å laste inn "trommer".

Når det gjelder maskinvaren, trenger vi:

  • Arduino Mega 2560
  • Et 7-segmentsdisplay (ligner på sifrene på kalkulatorer).
  • Et Arduino numerisk tastatur av typen 3 x 4
  • Generiske hoppere
  • En liten batteriladeskjerm

Så kobler vi dem til hverandre slik:

Så kobler vi dem til hverandre slik:

  • Koble den første pinnen til venstre til pinne 8 på Arduinoen.Pinne 8 til 2 på Arduino Mega-kontrollenheten. Som vist på bildet.
  • La syvsegmentskjerm kobles til til pinnene 35, 37, 39, 41, 47, 49 og 53.
  • La Minibatteridisplayet kobles til via pinner DIO klokken 9 og CLK klokken 10.

Når det gjelder programvaren, er dette koden:

#inkludere #inkludere int CLK = 10; int DIO = 9; TM1651 Batterivisning(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}; Tastatur keyboard = Tastatur(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 }; At 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}; int osam[7] = {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 partisjon = 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 (partisjon != 8) { BatteryDisplay.displayLevel(partisjon); s[k] = random(0, 10); WriteDisplay(start, tast); delay(200); forsinkelse(s[k]); if (Kontakt(k) != 0) { WriteDisplay(start, tast); break; } break++; k++; } // while finish } // fullføring av oppsett void loop() {} int Kontakt(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; } // slutt 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, den fantastiske bilen eller den fortryllede bilen

Knight Rider, den fantastiske bilen eller den fortryllede bilen

Hvis disse navnene ikke høres kjente ut for deg, vil de garantert gjøre det for foreldrene dine eller til og med besteforeldrene dine. Det er en kode som får en serie med LED-er til å oppføre seg. på samme måte som en av hovedpersonene i denne åttitallsserien gjorde.

Vi trenger:

  • 6 LED
  • 6 motstander på 220 ohm
  • Arduino UNO-kort
  • Generiske hoppere

LED-ene er koblet til pinne 2 til 7 ved hjelp av en motstand på hver jumper. Vi vil også vise deg tre forskjellige måter å programmere denne visuelle effekten på. I den første vil vi bare bruke «digitalWrite» (pinNum, HIGH / LOW) og «delay» (tid). I den andre skal vi gjøre det gjennom konstruksjonen av typen "til" som vil gjøre det samme, men i en kode med færre linjer.

Til slutt, koden som vil utføre denne effekten jevnere:

/* 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, UTGANG); pinMode(pin3, UTGANG); pinMode(pin4, UTGANG); pinMode(pin5, UTGANG); pinMode(pin6, UTGANG); pinMode(pin7, UTGANG); } void loop() { digitalWrite(pin2, HØY); delay(timer); digitalWrite(pin2, LAV); delay(timer); digitalWrite(pin3, HØY); delay(timer); digitalWrite(pin3, LAV); delay(timer); digitalWrite(pin4, HØY); delay(timer); digitalWrite(pin4, LAV); delay(timer); digitalWrite(pin4, HØY); delay(timer); digitalWrite(pin5, HØY); delay(timer); digitalWrite(pin5, LAV); delay(timer); digitalWrite(pin6, HØY); delay(timer); digitalWrite(pin6, LAV); delay(timer); digitalWrite(pin7, HØY); delay(timer); digitalWrite(pin7, LAV); delay(timer); digitalWrite(pin7, LAV); delay(timer); digitalWrite(pin6, HØY); delay(timer); digitalWrite(pin6, LAV); delay(timer); digitalWrite(pin5, HØY); delay(timer); digitalWrite(pin5, LAV); delay(timer); digitalWrite(pin4, HØY); delay(timer); digitalWrite(pin4, LAV); delay(timer); digitalWrite(pin3, HØY); delay(timer); digitalWrite(pin3, LAV); delay(timer); } /* Knight Rider 2 */ int pinArray[] = {2, 3, 4, 5, 6, 7}; int count = 0; int timer = 100; void setup() { // vi lager alle deklarasjonene samtidig 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 (antall=0;antall<5;antall++) { digitalWrite(pinArray[antall], HØY); delay(timer); digitalWrite(pinArray[antall + 1], HØY); delay(timer); digitalWrite(pinArray[antall], LAV); delay(timer*2); } for (antall=5;antall>0;antall--) { digitalWrite(pinArray[antall], HØY); delay(timer); digitalWrite(pinArray[antall - 1], HØY); delay(timer); digitalWrite(pinArray[antall], LAV); delay(timer*2); } }

Binær klokke

Un binær klokke Det er en enhet som visualiserer tid. (som er seksagesimalt) i et sammensatt binært uttrykk, det vil si et med seks sifre (2 for timen, 2 for minuttene og 2 for sekundene).

Det er veldig enkelt å gjøre; for å begynne trenger vi:

  • 1 Protoboard
  • 6 røde LED-lys
  • 6 grønne LED-lys
  • 5 LED-lys, gul
  • 17 motstander på 330 ohm
  • 17 hoppere
  • Arduino UNO

Med alt jeg har lært, Du vil kunne tyde alle arrayene som vises i den nødvendige koden å betjene denne klokken.

Sjekk ut:

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 sekStørrelse =sizeof(ledPinsSec) / sizeof(int); int minStørrelse = sizeof(ledPinsMin) / sizeof(int); int timeStørrelse = sizeof(ledPinsHr) / sizeof(int); int sekunder = 30; int minutter = 30; int timer = 15; void setup() { begin(9600); //Henter antall elementer i en array 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() { sekunder++; hvis(sekunder > 59) { sekunder = 0; minutter++; hvis(minutter > 59) { minutter = 0; timer++; hvis(timer > 23) { timer = 0; } } } //Serial.println((char) sekunder); print("Timer: "); print(timer); print(" Minutter: "); print(minutter); print(" Sekunder: "); println(sekunder); DisplaySeconds(); DisplayMinutes(); DisplayHours(); delay(1000); /* DisplaySeconds(); DisplayMinutes(); DisplayHours();*/ } void DisplaySeconds() { for(int i = sekStørrelse - 1; i>= 0; i--) { int currentSecond = bitRead(sekunder, i); digitalWrite(ledPinsSec[i], currentSecond); } } void DisplayMinutes() { for(int i = minStørrelse - 1; i>= 0; i--) { int currentMinute = bitRead(minutter, i); digitalWrite(ledPinsMin[i], currentMinute); } } void DisplayHours() { for(int i = timeStørrelse - 1; i>= 0; i--) { int currentHour = bitRead(timer, i); digitalWrite(ledPinsHr[i], currentHour); } }
E-bøker av IPAP
Ebøker IPAP

🔥BLI MED I🔥 DET NYE IP@P-FELLESSKAPET! REGISTRER DEG HER!

Emner

Forfatter: Félix Albornoz

Jeg har over 20 års erfaring innen teknologisektoren, der jeg har hjulpet bedrifter og brukere med å utvikle og lære opp innen dette feltet. Jeg lærer alltid nye ting.

I slekt