Mga Array: Ano ang mga ito, para saan ginagamit ang mga ito, at ano ang kahalagahan ng mga ito sa Arduino programming?

Huling pag-update: 19/08/2022
Mga Array: Ano ang mga ito, para saan ang mga ito ginagamit, at ang kanilang kahalagahan sa Arduino programming

ang mga arduino board nailalarawan para sa pagkakaroon ng isa medyo simpleng pagprograma sa Kapaligiran ng IDE. Ito ay dahil sa paggamit ng mga Array at Stringsna nagbibigay-daan para sa pagpapasimple ng isang hanay ng magkakaibang baryabol at datos.

Kung gusto mong sumisid nang mas malalim sa Sa mundo ng Arduino programming, mahalagang malaman mo ang dalawang tungkuling ito dahil makakatulong ang mga ito sa iyong makatipid ng oras. wala nang mga pagkakamali.

Para matuto pa, mahalagang ipagpatuloy mo ang pagbabasa hanggang sa huli. Ipapaliwanag namin kung tungkol saan ang mga konseptong ito at ang sunud-sunod na proseso na dapat mong sundin upang magamit ang isang matrix. Magsimula tayo

Ano ang array sa Arduino programming at para saan ang mga ito ginagamit?

Sa ibaba ay ipapakita namin sa iyo ang layunin ng dalawang napakahalagang elemento sa pagprograma ng isang Arduino board:

Mga Arrays

Mga array, vector, o matriceAng mga ito ay mga lalagyan para sa mga baryabol. Ibig sabihin, ang mga ito ay... "mga baryabol" na naglalaman ng iba pa upang pagsama-samahin ang mga ito. Tinatawag din silang mga matris, dahil ang pagkakaayos nito na kinakatawan sa grapiko ay katulad ng sa isang matrix, at Tinatawag din silang mga vector dahil ang mga matris na may iisang hilera o kolum ay tinatawag sa parehong pangalan.

Para magamit ang isang array, mayroong dalawang kinakailangan. Ang una ay ang lahat ng mga baryabol na nakapaloob ay magkakapareho ang katangian, at ang pangalawa ay, na ang limitasyon ng mga baryabol na maaaring iimbak ng programa ay hindi lumampas.

Ang limitasyong ito ay nag-iiba depende sa arrayDahil tayo mismo ang nagdedefine nito kapag idineklara natin ito (mahalaga na, kapag lumilikha tayo ng array, magrereserba tayo ng memorya na ginagamit upang tukuyin ang dulo ng matrix). Masasabi natin na, Ito ay isang hanay ng mga baryabol na nakapangkat sa ilalim ng iisang pangalan, Gayunpaman, sa loob ng grupong ito ay maaaring may iba pang iba't ibang uri, na nakaayos ayon sa isang indeks. Pinapasimple nito ang programming sa pamamagitan ng paggawa ng code na mas simple at mas malinaw.

String

String

Mga string ng karakter o "mga tali" Ito ang mga uri ng datos na nagbibigay-daan sa iyong mangalap ng iba't ibang karakter. Magkaiba sila sa "char" dahil pinapayagan nila ang pag-iimbak ng higit sa isang karakter. Posible ito. mag-imbak ng mga salita, parirala, numero, mga espesyal na karakter o ang kombinasyon ng mga elementong ito.

Por ejemplo:

String str1 = "maligayang pagdating"; String str2 = "maligayang pagdating aplikante"; String str3 = "54321"; String str4 = "maligayang pagdating gumagamit 54321"; String str5 = "*/-+"; String str6 = "mabuti"dumating ang gumagamit ++**54325**++";

Dahil sa kagamitang ito, mas madaling makakuha ng iba't ibang resulta. Kabilang sa mga ito ang concatenation, na binubuo ng pagsasama-sama ng dalawang string ng mga karakter sa isa.

Malaking tulong ito kapag gusto mong gumawa ng mga code sequence, tingnan sa ibaba:

String str1 = "maligayang pagdating"; String str2 = "gumagamit"; String str3 = ""; str3 += str1; str3 += " "; str3 += str2;

Kung ipi-print mo ang "str3", ang resulta ay "welcome user"Ang ginawa namin ay lumikha ng isang pagsasama-sama ng halaga "maligayang pagdating" kasama ang baryabol "Username", pagkatapos magpahiwatig ng isang walang laman na baryabol na StringIsa pa sa mga gamit nito ay "saMataas na Kahon()" y "saLowerCase()"Pinapalitan ng mga function na ito ang lahat ng karakter sa string ng malalaking titik at maliliit na titik, ayon sa pagkakabanggit. Kapaki-pakinabang din ang mga ito para sa pag-convert ng mga numero mula sa decimal patungong hexadecimal, octal, o binary.

Gagamitin natin ang 26 bilang halimbawa:

int num = 26; String hex = String(num, HEX); String bin = String(num, BIN); String oct = String(num, OCT); println(hex); println(bin); println(oct); Kapag na-print, ang mga resulta ay magbibigay ng 1A 11010 32

Ang 1A ay magiging 26 sa hexadecimal, habang ang 11010 ay ang resulta sa binary at 32 sa octal system.

Alamin nang sunud-sunod kung paano gumamit ng matrix o array kapag nagpoprograma gamit ang Arduino

Alamin ang hakbang-hakbang kung paano gumamit ng matrix o arrays kapag nagpoprograma gamit ang Arduino

Parehong array at string Ito ay mga kailangang-kailangan na kagamitan na dapat mong matutunang gamitin Kung gusto mong i-program ang iyong Arduino board.

Para makapagsimula ka, narito ang ilang pangunahing tagubilin:

Sabihin

Ito ay mahalaga Para linawin, para magamit ang mga array, ang unang bagay na dapat mong gawin ay i-index ang unang elemento na may numerong seroSa ganitong paraan, maaari na natin itong i-query at magtalaga ng mga halaga dito.

Maaari natin silang ideklara sa alinman sa mga sumusunod na paraan:

int losEnteros[6]; //nagdedeklara ng array na may 6 na baryabol na uri int int losPins[] = {2, 4, 8, 3}; //nagdedeklara ng array na may 4 na baryabol na uri int float losSensores[5] = {2, 4, -8, 3.8, 2.1, 6}; //nagdedeklara ng array na may 6 na baryabol na uri float char mensaje[5] = "Pagbati"; //nagdedeklara ng array na may 5 elemento ng uri char char mensaje[6] = {'s','a','l','u','d','o'}; //nagdedeklara ng array na may 6 na elemento ng uri char int mimatriz[5]; int Pins[] = {2, 4, 8, 3, 6}; int losValores[5] = {2, 4, -8, 3, 2};

Dapat mong tandaan iyon Ang mga char array ay nangangailangan ng karagdagang karakter upang matukoy ang antas ng array..

Pag-access sa isang matrix

Ang matrix, gaya ng nasabi na natin, Ito ay naka-index mula sa simulaSamakatuwid, ang unang halaga ay matatagpuan sa indeks 0. Ayon sa halimbawa, angMga Halaga[0] ay magiging katumbas ng 2 at angMga Halaga[1] Ito ay magiging 4Samakatuwid, dapat tayong maging maingat sa pag-access sa array. Kung susubukan nating mag-access nang lampas sa dulo (gamit ang index na mas mababa sa zero o mas malaki kaysa sa idineklarang laki), maaapektuhan ang mga lokasyon ng memorya na ginamit. para sa ibang layunin ay magdudulot ng mga pagkakamali.

Pagtatalaga ng halaga sa isang array

Kaugnay nito, upang magtalaga ng mga halaga sa isang array, ginagamit ang assignor operator (=), na nagpapatuloy sa halimbawa tulad ng sumusunod:

  • 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

Kumuha ng halaga mula sa isang array

Upang makuha ang partikular na halaga mula sa isang partikular na matrix, at ayon sa halimbawa, kailangan lang nating gamitin ang linyang ito:

  • x = losValores[4];

Listahan ng mga pinakamahusay na proyekto ng Arduino na may mga array na maaari mong gawin para magsanay

Ano ngayon Alam mo ba kung tungkol saan ang mga kagamitang ito?Dumating na ang panahon para isabuhay ang mga ito.

Para matulungan ka rito, nagbigay kami ng tatlong proyektong ito para makapagsanay ka at maisabuhay ang lahat ng iyong natutunan sa post na ito:

Laro sa memorya

Laro sa memorya

Ito ay isang aplikasyon ng laro kung saan kailangan nating kabisaduhin ang pinakamaraming numero hangga't maaari hanggang sa makumpleto natin ang paglo-load ng "drums".

Tungkol sa hardware, kakailanganin natin:

  • Arduino Mega 2560
  • Isang 7-segment na display (katulad ng mga digit sa mga calculator).
  • Isang Arduino numeric keypad na uri ng 3 x 4
  • Mga generic na jumper
  • Isang maliit na display ng pag-charge ng baterya

Pagkatapos ay ikinokonekta namin ang mga ito sa isa't isa tulad ng sumusunod:

Pagkatapos ay ikinokonekta namin ang mga ito sa isa't isa tulad ng sumusunod:

  • Ikonekta ang unang pin sa kaliwa sa pin 8 ng ArduinoMga pin 8 hanggang 2 sa Arduino Mega control unit. Gaya ng ipinapakita sa larawan.
  • La nagkokonekta ang pitong-segment na display sa mga pin 35, 37, 39, 41, 47, 49 at 53.
  • La Ang mini battery display ay kumokonekta sa pamamagitan ng mga pin DIO sa alas-9 at CLK sa alas-10.

Tungkol sa software, ito ang code:

#isama #isama int CLK = 10; int DIO = 9; TM1651 Display ng Baterya (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 }; Sa 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 }; int sedam [ 7 ] = { 1 , 1 , 1 , 0 , 0 , 0 }; int osam [ 7 ] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 }; int devet [ 7 ] = { 1, 1, 1, 0, 0, 1, 1}; int null [ 7 ] = { 1, 1, 1, 0, 0, 1, 1}; int null [ 7 ] = { 1, 1, 1, 1, 1, 1, 1, 1, 0}; int pom = 0; int s [ 50]; int k = 0; int partition = 0; walang laman na 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 } // pagkumpleto ng 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) { kung (key == '1' ) return 1 ; kung hindi kung (key == '2' ) return 2 ; kung hindi kung (key == '3' ) return 3 ; kung hindi kung (key == '4' ) return 4 ; kung hindi kung (key == '5' ) return 5 ; kung hindi kung (key == '6' ) return 6 ; kung hindi kung (key == '7' ) return 7 ; kung hindi kung (key == '8' ) return 8 ; kung hindi kung (key == '9' ) return 9 ; } }

Knight Rider, ang kamangha-manghang kotse o ang mahiwagang kotse

Knight Rider, ang kamangha-manghang kotse o ang mahiwagang kotse

Kung hindi pamilyar sa iyo ang mga pangalang ito, tiyak na pamilyar din ang mga ito sa iyong mga magulang o maging sa iyong mga lolo't lola. Ito ay isang code na nagpapagana sa isang serye ng mga LED. sa parehong paraan na ginawa ng isa sa mga pangunahing tauhan sa seryeng ito ng dekada otsenta.

Kakailanganin namin ang:

  • 6 LED
  • 6 na resistor na 220 Ohm
  • Arduino UNO board
  • Mga generic na jumper

Ang mga LED ay nakakonekta sa mga pin 2 hanggang 7 gamit ang isang resistor sa bawat jumper. Ipapakita rin namin sa iyo ang tatlong magkakaibang paraan upang i-program ang visual effect na ito. Sa una, gagamitin lamang natin "digitalWrite" (pinNum, HIGH / LOW) at “delay” (oras). Sa pangalawa, gagawin natin ito sa pamamagitan ng pagbuo ng uri “para sa” na gagawin ang parehong bagay, ngunit sa isang code na may mas kaunting linya.

Panghuli, ang code na mas maayos na magsasagawa ng epektong ito:

/* 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, MATAAS); delay(timer); digitalWrite(pin2, MABABA); delay(timer); digitalWrite(pin3, MATAAS); delay(timer); digitalWrite(pin3, MABABA); delay(timer); digitalWrite(pin4, MATAAS); delay(timer); digitalWrite(pin4, MABABA); delay(timer); digitalWrite(pin5, MATAAS); delay(timer); digitalWrite(pin5, MABABA); delay(timer); digitalWrite(pin5, MABABA); delay(timer); digitalWrite(pin6, MATAAS); delay(timer); digitalWrite(pin6, MABABA); delay(timer); digitalWrite(pin7, MATAAS); delay(timer); digitalWrite(pin7, MABABA); delay(timer); digitalWrite(pin6, MATAAS); delay(timer); digitalWrite(pin6, MABABA); delay(timer); digitalWrite(pin5, MATAAS); delay(timer); digitalWrite(pin5, MABABA); delay(timer); digitalWrite(pin4, MATAAS); delay(timer); digitalWrite(pin4, MABABA); delay(timer); digitalWrite(pin3, MATAAS); delay(timer); digitalWrite(pin3, MABABA); delay(timer); } /* Knight Rider 2 */ int pinArray[] = {2, 3, 4, 5, 6, 7}; int count = 0; int timer = 100; void setup(){ // ginagawa natin ang lahat ng deklarasyon nang sabay-sabay para sa (count=0;count<6;count++) { pinMode(pinArray[count], OUTPUT); } } void loop() { para sa (count=0;count<6;count++) { digitalWrite(pinArray[count], HIGH); delay(timer); digitalWrite(pinArray[count], LOW); delay(timer); } para sa (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(){ para sa (count=0;count<6;count++) { pinMode(pinArray[count], OUTPUT); } } void loop() { para sa (bilang=0;bilang<5;bilang++) { digitalWrite(pinArray[bilang], MATAAS); delay(timer); digitalWrite(pinArray[bilang + 1], MATAAS); delay(timer); digitalWrite(pinArray[bilang], MABABA); delay(timer*2); } para sa (bilang=5;bilang>0;bilang--) { digitalWrite(pinArray[bilang], MATAAS); delay(timer); digitalWrite(pinArray[bilang - 1], MATAAS); delay(timer); digitalWrite(pinArray[bilang], MABABA); delay(timer*2); } }

Binary na Orasan

Un binary na orasan Ito ay isang aparato na nagpapakita ng oras sa isang visual na paraan. (na sexagesimal) sa isang pinagsamang binary expression, ibig sabihin, isa na may anim na digit (2 para sa oras, 2 para sa minuto, at 2 para sa segundo).

Napakadaling gawin ito; para makapagsimula, kakailanganin natin ang mga sumusunod:

  • 1 Protoboard
  • 6 na Pulang LED
  • 6 na berdeng LED
  • 5 LED, Dilaw
  • 17 resistors na may 330 ohms
  • 17 jumper
  • Arduino UNO

Sa lahat ng aking natutunan, Magagawa mong i-decipher ang lahat ng array na lumalabas sa kinakailangang code para patakbuhin ang orasang ito.

Tignan mo:

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); //Kinukuha ang bilang ng mga elemento sa isang array println(sizeof(ledPinsSec)); para sa (int i = 0; i< secSize;i++) { pinMode(ledPinsSec[i], OUTPUT); } para sa (int i = 0; i< minSize;i++) { pinMode(ledPinsMin[i], OUTPUT); } para sa (int i = 0; i< hourSize;i++) { pinMode(ledPinsHr[i], OUTPUT); } } void loop() { segundo++; kung(segundo > 59) { segundo = 0; minuto++; kung(minuto > 59) { minuto = 0; oras++; kung(oras > 23) { oras = 0; } } } //Serial.println((char) segundo); print("Mga Oras: "); print(oras); print(" Minuto: "); print(minuto); print(" Segundo: "); println(segundo); DisplaySeconds(); DisplayMinutes(); DisplayHours(); pagkaantala(1000); /* DisplaySeconds(); DisplayMinutes(); DisplayHours();*/ } void DisplaySeconds() { para sa(int i = secSize - 1; i>= 0; i--) { int kasalukuyangSegundo = bitRead(segundo, i); digitalWrite(ledPinsSec[i], kasalukuyangSegundo); } } void DisplayMinutes() { para sa(int i = minSize - 1; i>= 0; i--) { int kasalukuyangMinuto = bitRead(minuto, i); digitalWrite(ledPinsMin[i], kasalukuyangMinuto); } } void DisplayHours() { para sa(int i = orasSize - 1; i>= 0; i--) { int kasalukuyangOras = bitRead(oras, i); digitalWrite(ledPinsHr[i], kasalukuyangOras); } }
Mga Ebook ng IPAP
Ebook IPAP

🔥SUMALI🔥 SA BAGONG KOMUNIDAD NG IP@P! MAG-SIGN UP DITO!

Paksa

May-akda: Félix Albornoz

Mayroon akong mahigit 20 taon na karanasan sa pagtatrabaho sa sektor ng teknolohiya, pagtulong sa mga kumpanya at mga gumagamit na umunlad at magsanay sa larangang ito. Palagi akong natututo ng mga bagong bagay.

Kaugnay