
Le Schede Arduino caratterizzato per averne uno programmazione abbastanza semplice nel ambiente IDE. Ciò è dovuto all'utilizzo di array e stringhe.che consentono la semplificazione di un insieme di variabili e dati eterogenei.
Se vuoi approfondire Nel mondo della programmazione Arduino, è importante conoscere queste due funzioni perché ti aiuteranno a risparmiare tempo. Niente più errori.
Per saperne di più, è importante che continuiate a leggere fino alla fine. Spiegheremo in cosa consistono questi concetti e il processo passo passo da seguire per utilizzare una matrice. Iniziamo.
Che cos'è un array nella programmazione Arduino e a cosa serve?
Di seguito illustreremo lo scopo di due elementi molto importanti nella programmazione di una scheda Arduino:
Array
Array, vettori o matriciSono contenitori per variabili. Cioè, sono... “variabili” che contengono altri elementi al fine di raggrupparli insieme. Sono anche chiamate matrici, poiché la sua disposizione rappresentata graficamente è simile a quella di una matrice, e Sono anche chiamati vettori perché le matrici con una sola riga o colonna vengono chiamate con lo stesso nome.
Per poter utilizzare un array, sono necessari due requisiti. La prima è che tutte le variabili contenute sono della stessa natura, e la seconda è, che non venga superato il limite di variabili che il programma può memorizzare..
Questo limite varia a seconda dell'arrayPoiché lo predefiniamo noi stessi quando lo dichiariamo (è importante che, quando creiamo un array, riserviamo memoria che viene utilizzata per definire la fine della matrice). Possiamo quindi dire che, Si tratta di un insieme di variabili raggruppate sotto un unico nome, Tuttavia, all'interno di questo gruppo possono esserci altri tipi diversi, ordinati tramite un indice. Ciò semplifica la programmazione, rendendo il codice più semplice e chiaro.
String
stringhe di caratteri o “corde” Si tratta di tipi di dati che consentono di raccogliere vari caratteri. Differiscono dal “char” perché consentono di memorizzare più di un carattere. È possibile. memorizza parole, frasi, numeri, caratteri speciali o combinazioni di questi elementi.
Ad esempio:
Stringa str1 = "benvenuto"; Stringa str2 = "benvenuto candidato"; Stringa str3 = "54321"; Stringa str4 = "benvenuto utente 54321"; Stringa str5 = "*/-+"; Stringa str6 = "buonoutente vieni ++**54325**++";
Grazie a questo strumento, è possibile ottenere risultati diversi con maggiore facilità. Tra queste c'è la concatenazione, che consiste nell'unire due stringhe di caratteri in una sola.
Questo è molto utile quando si desidera creare sequenze di codice, vedi sotto:
Stringa str1 = "benvenuto"; Stringa str2 = "utente"; Stringa str3 = ""; str3 += str1; str3 += " "; str3 += str2;
Se stampi "str3", il risultato sarà "welcome user"Quello che abbiamo fatto è stato creare una concatenazione del valore "Benvenuto" più la variabile "utente", dopo aver indicato un variabile stringa vuotaUn altro dei suoi usi sono “toUpperCase()” y “toLowerCase()”Queste funzioni sostituiscono tutti i caratteri della stringa rispettivamente con lettere maiuscole e minuscole. Sono inoltre molto utili per convertire i numeri da decimale a esadecimale, ottale o binario.
Useremo il numero 26 come esempio:
int num = 26; String hex = String(num, HEX); String bin = String(num, BIN); String oct = String(num, OCT); println(hex); println(bin); println(oct); Quando stampato il risultato darà 1A 11010 32
1A corrisponde a 26 in esadecimale, mentre 11010 è il risultato in binario e 32 in ottale.
Impara passo dopo passo come utilizzare una matrice o un array quando programmi con Arduino.
Sia array che stringhe Questi sono strumenti indispensabili che devi imparare a usare Se vuoi programmare la tua scheda Arduino.
Per iniziare, ecco alcune istruzioni di base:
Per dichiarare
È importante Per chiarire, per usare gli array, la prima cosa da fare è indicizzare il primo elemento con il numero zeroIn questo modo possiamo ora interrogarlo e assegnargli dei valori.
Possiamo dichiararli in uno qualsiasi dei seguenti modi:
int losEnteros[6]; //dichiara un array di 6 variabili di tipo int int losPins[] = {2, 4, 8, 3}; //dichiara un array di 4 variabili di tipo int float losSensores[5] = {2, 4, -8, 3.8, 2.1, 6}; //dichiara un array di 6 variabili di tipo float char mensaje[5] = "Saluto"; //dichiara un array di 5 elementi di tipo char char mensaje[6] = {'s','a','l','u','d','o'}; //dichiara un array di 6 elementi di tipo char int mimatriz[5]; int Pins[] = {2, 4, 8, 3, 6}; int losValores[5] = {2, 4, -8, 3, 2};
È necessario essere consapevoli del fatto che Gli array di caratteri richiedono un carattere aggiuntivo per identificare il livello dell'array..
Accesso a una matrice
La matrice, come abbiamo già detto, È indicizzato da zeroPertanto, il primo valore si trova all'indice 0. Secondo l'esempio, i valori[0] sarà uguale a 2 e i valori[1] Saranno 4Pertanto, dobbiamo fare attenzione quando accediamo all'array. Se proviamo ad accedere oltre la fine (utilizzando un indice minore di zero o maggiore della dimensione dichiarata), le posizioni di memoria utilizzate saranno influenzate. per altri scopi causerà errori.
Assegnare un valore a un array
A sua volta, per assegnare valori a un array, si utilizza l'operatore di assegnazione (=), proseguendo con l'esempio seguente:
losSensores[0] = 10; //asigna 10 al primer elemento de la matrizx = losSensores[4]; //guarda el valor del quinto elemento de la matriz en la variable x
Recuperare un valore da un array
Per recuperare il valore specifico da una matrice specifica, e secondo l'esempio, è sufficiente utilizzare la riga:
x = losValores[4];
Elenco dei migliori progetti Arduino con array che puoi realizzare per esercitarti
Ora che Sai a cosa servono questi strumenti?È giunto il momento di metterli in pratica.
Per aiutarti in questo, abbiamo preparato questi tre progetti in modo che tu possa esercitarti e mettere in pratica tutto ciò che hai imparato in questo articolo:
Gioco di memoria
Si tratta di un'applicazione di gioco in cui dobbiamo memorizzare quante più cifre possibili fino al completamento del caricamento del "batteria".
Per quanto riguarda l'hardware, avremo bisogno di:
- Arduino Mega2560
- Un display a 7 segmenti (simile alle cifre delle calcolatrici).
- Una tastiera numerica Arduino di tipo 3 x 4
- maglioni generici
- Un mini display per la ricarica della batteria
Quindi li colleghiamo tra loro nel modo seguente:
- Collega il primo pin a sinistra al pin 8 dell'ArduinoCollegare i pin da 8 a 2 sulla scheda di controllo Arduino Mega, come mostrato nell'immagine.
- La Il display a sette segmenti si collega ai pin 35, 37, 39, 41, 47, 49 e 53.
- La Il mini display della batteria si collega tramite pin DIO alle 9 e CLK alle 10.
Per quanto riguarda il software, ecco il codice:
#includi #includi int CLK = 10; int DIO = 9; Display batteria TM1651(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}; Tastiera 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 sì [ 7 ] = { 0 , 1 , 1 , 0 , 0 , 0 , 0 }; A 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 , 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, 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 } // completamento della configurazione 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; } // fine konacno int K ( Char key ) { if ( key == '1' ) return 1651 ; 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, l'auto fantastica o l'auto incantata
Se questi nomi non vi suonano familiari, lo saranno sicuramente per i vostri genitori o persino per i vostri nonni. Si tratta di un codice che regola il comportamento di una serie di LED. nello stesso modo in cui ha fatto uno dei personaggi principali di questa serie degli anni Ottanta.
Avremo bisogno:
- LED 6
- 6 resistori da 220 Ohm
- Scheda Arduino UNO
- maglioni generici
I LED sono collegati ai pin da 2 a 7 tramite una resistenza su ciascun jumper. Vi mostreremo anche tre modi diversi per programmare questo effetto visivo. Nel primo, useremo solo “Scrittura digitale” (pinNum, HIGH / LOW) e “delay” (tempo). Nel secondo lo faremo attraverso la costruzione del tipo "per" che farà la stessa cosa, ma con un codice di meno righe.
Infine, ecco il codice che permetterà di ottenere questo effetto in modo più fluido:
/* 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(){ // facciamo tutte le dichiarazioni in una volta 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); } }
Orologio binario
Un orologio binario Si tratta di un dispositivo che visualizza il tempo. (che è sessagesimale) in un'espressione binaria composta, cioè una con sei cifre (2 per le ore, 2 per i minuti e 2 per i secondi).
È davvero facile da fare; per iniziare, avremo bisogno di:
- 1 Scheda prototipo
- 6 LED rossi
- 6 LED verdi
- 5 LED, gialli
- 17 resistori da 330 ohm
- 17 ponticelli
- UNO Arduino
Con tutto ciò che ho imparato, Sarai in grado di decifrare tutti gli array che compaiono nel codice necessario per far funzionare questo orologio.
Check-out:
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); //Ottiene il numero di elementi in un 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() { seconds++; if(seconds > 59) { seconds = 0; minutes++; if(minutes > 59) { minutes = 0; hours++; if(hours > 23) { hours = 0; } } } //Serial.println((char) seconds); print("Ore: "); print(hours); print("Minuti: "); print(minutes); print("Secondi: "); 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); } }


















