
Les cartes arduino caractérisé pour en avoir un une programmation relativement simple dans le Environnement IDE. Cela est dû à l'utilisation de tableaux et de chaînes de caractères.qui permettent de simplifier un ensemble de variables et de données diverses.
Si vous souhaitez approfondir le sujet Dans le monde de la programmation Arduino, il est important de connaître ces deux fonctions car elles vous permettront de gagner du temps. Plus d'erreurs.
Pour en savoir plus, il est important de continuer à lire jusqu'à la fin. Nous allons vous expliquer en quoi consistent ces concepts et la procédure étape par étape à suivre pour utiliser une matrice. Commençons
Qu'est-ce qu'un tableau en programmation Arduino et à quoi sert-il ?
Nous allons vous montrer ci-dessous le rôle de deux éléments très importants dans la programmation d'une carte Arduino :
Arrays
Tableaux, vecteurs ou matricesCe sont des conteneurs pour les variables. Autrement dit, ce sont... « variables » qui en contiennent d'autres afin de les regrouper. On les appelle également matrices, puisque sa représentation graphique est similaire à celle d'une matrice, et On les appelle également vecteurs. car les matrices à une seule ligne ou colonne sont appelées par le même nom.
Pour pouvoir utiliser un tableau, deux conditions doivent être remplies. La première est que toutes les variables contenues sont de même nature, et la seconde est, que la limite des variables que le programme peut stocker n'est pas dépassée.
Cette limite varie en fonction du tableauPuisque nous le prédéfinissons nous-mêmes lors de sa déclaration (il est important que, lors de la création d'un tableau, nous réservions la mémoire utilisée pour définir la fin du tableau), nous pouvons alors affirmer que : Il s'agit d'un ensemble de variables regroupées sous un seul nom. Cependant, au sein de ce groupe, il peut exister d'autres types différents, classés par un index. Cela simplifie la programmation en rendant le code plus simple et plus clair.
String
chaînes de caractères ou « cordes » Ce sont des types de données qui vous permettent de rassembler différents caractères. Ils diffèrent du « charbon » Parce qu'elles permettent de stocker plusieurs caractères. C'est possible. stocker des mots, des phrases, des nombres, des caractères spéciaux ou une combinaison de ces éléments.
Par exemple:
Chaîne str1 = "bienvenue"; Chaîne str2 = "bienvenue candidat"; Chaîne str3 = "54321"; Chaîne str4 = "bienvenue utilisateur 54321"; Chaîne str5 = "*/-+"; Chaîne str6 = "bon"utilisateur arrive ++**54325**++";
Grâce à cet outil, il est possible d'obtenir plus facilement différents résultats. Parmi elles figure la concaténation, qui consiste à assembler deux chaînes de caractères en une seule.
Ceci est très utile lorsque vous souhaitez créer des séquences de code, voir ci-dessous :
Chaîne str1 = "bienvenue"; Chaîne str2 = "utilisateur"; Chaîne str3 = ""; str3 += str1; str3 += " "; str3 += str2;
Si vous affichez « str3 », le résultat sera « bienvenue utilisateur ».Ce que nous avons fait, c'est créer une concaténation de la valeur "accueillir" plus la variable "Nom d'utilisateur", après avoir indiqué un variable de chaîne videUne autre de ses utilisations est « toUpperCase() » y « toLowerCase() »Ces fonctions remplacent tous les caractères de la chaîne par des lettres majuscules et minuscules, respectivement. Elles sont également très utiles pour convertir des nombres décimaux en hexadécimal, octal ou binaire.
Nous utiliserons 26 comme exemple :
int num = 26; String hex = String(num, HEX); String bin = String(num, BIN); String oct = String(num, OCT); println(hex); println(bin); println(oct); L'affichage donnera le résultat suivant : 1A 11010 32
1A correspond à 26 en hexadécimal, tandis que 11010 est le résultat en binaire et 32 en octal.
Apprenez étape par étape comment utiliser une matrice ou un tableau lors de la programmation avec Arduino.
Les tableaux et les chaînes de caractères Ce sont des outils indispensables que vous devez apprendre à utiliser Si vous souhaitez programmer votre carte Arduino.
Pour vous aider à démarrer, voici quelques instructions de base :
Déclarer
Il est important Pour clarifier, pour utiliser des tableaux, la première chose à faire est d'accéder à l'indice du premier élément. avec le chiffre zéroNous pouvons ainsi l'interroger et lui attribuer des valeurs.
Nous pouvons les déclarer de l'une des manières suivantes :
int losEnteros[6]; //déclare un tableau de 6 variables de type int int losPins[] = {2, 4, 8, 3}; //déclare un tableau de 4 variables de type int float losSensores[5] = {2, 4, -8, 3.8, 2.1, 6}; //déclare un tableau de 6 variables de type float char mensaje[5] = "Salut"; //déclare un tableau de 5 éléments de type char char mensaje[6] = {'s','a','l','u','d','o'}; //déclare un tableau de 6 éléments de type char int mimatriz[5]; int Pins[] = {2, 4, 8, 3, 6}; int losValores[5] = {2, 4, -8, 3, 2};
Vous devez être conscient que Les tableaux de caractères nécessitent un caractère supplémentaire pour identifier le niveau du tableau..
Accéder à une matrice
La matrice, comme nous l'avons déjà dit, Il est indexé à partir de zéroPar conséquent, la première valeur se trouve à l'indice 0. D'après l'exemple, lesValeurs[0] sera égal à 2 et lesValeurs[1] Il y en aura 4Il faut donc être prudent lors de l'accès au tableau. Si l'on tente d'accéder à un élément au-delà de sa fin (en utilisant un indice inférieur à zéro ou supérieur à la taille déclarée), les emplacements mémoire utilisés seront affectés. à d'autres fins entraînera des erreurs.
Attribuer une valeur à un tableau
Pour assigner des valeurs à un tableau, on utilise l'opérateur d'affectation (=), comme le montre l'exemple suivant :
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
Récupérer une valeur à partir d'un tableau
Pour extraire une valeur spécifique d'une matrice spécifique, et conformément à l'exemple, il suffit d'utiliser la ligne :
x = losValores[4];
Liste des meilleurs projets Arduino avec des tableaux que vous pouvez réaliser pour vous entraîner
Maintenant que Savez-vous à quoi servent ces outils ?Le moment est venu de les mettre en pratique.
Pour vous aider, nous avons préparé ces trois projets qui vous permettront de vous entraîner et de mettre en pratique tout ce que vous avez appris dans cet article :
Jeu de mémoire
Il s'agit d'une application de jeu dans lequel nous devons mémoriser autant de chiffres que possible jusqu'à ce que nous ayons terminé le chargement du "tambours".
Concernant le matériel, nous aurons besoin de :
- Arduino Mega 2560
- Un affichage à 7 segments (semblable aux chiffres des calculatrices).
- Un clavier numérique Arduino de type 3 x 4
- sautoirs génériques
- Un mini écran de charge de batterie
Ensuite, nous les connectons entre eux comme suit :
- Connectez la première broche à gauche à la broche 8 de l'Arduino.Broches 8 à 2 de l'unité de contrôle Arduino Mega. Comme indiqué sur l'image.
- La l'affichage à sept segments connecte aux broches 35, 37, 39, 41, 47, 49 et 53.
- La Le mini-afficheur de batterie se connecte via des broches DIO à 9 et CLK à 10.
Concernant le logiciel, voici le code :
#inclure #inclure 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 ougasi [ 7 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 }; int jedan [ 7 ] = { 0 , 1 , 1 , 0 , 0 , 0 , 0 }; À 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 animal de compagnie [ 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 } // 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; } // fin de la fonction 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, la voiture fantastique ou la voiture enchantée
Si ces noms ne vous disent rien, ils parleront certainement à vos parents, voire à vos grands-parents. Il s'agit d'un code qui permet de faire fonctionner une série de LED. de la même manière que l'un des personnages principaux de cette série des années 80.
Nous aurons besoin:
- 6 LED
- 6 résistances de 220 ohms
- Carte Arduino UNO
- sautoirs génériques
Les LED sont connectées aux broches 2 à 7 à l'aide d'une résistance sur chaque cavalier. Nous vous montrerons également trois façons différentes de programmer cet effet visuel. Dans la première, nous utiliserons uniquement… « digitalWrite » (pinNum, HIGH / LOW) et « délai » (temps). Dans le second cas, nous procéderons par la construction du type "pour" qui fera la même chose, mais avec un code comportant moins de lignes.
Enfin, voici le code qui permettra d'obtenir cet effet plus facilement :
/* 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(){ // toutes les déclarations sont effectuées en une seule fois 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); } }
Horloge binaire
Un horloge binaire C'est un appareil qui permet de visualiser le temps. (qui est sexagésimal) dans une expression binaire composite, c'est-à-dire une expression à six chiffres (2 pour l'heure, 2 pour les minutes et 2 pour les secondes).
C'est très facile à faire ; pour commencer, nous aurons besoin de :
- 1 plaque d'essai
- 6 LED rouges
- 6 LED vertes
- 5 LED, jaunes
- 17 résistances de 330 ohms
- 17 cavaliers
- Arduino UNO
Avec tout ce que j'ai appris, Vous serez en mesure de déchiffrer tous les tableaux qui apparaissent dans le code nécessaire. pour faire fonctionner cette horloge.
Vérifier:
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); // Récupère le nombre d'éléments dans un tableau 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("Heures : "); print(hours); print(" Minutes : "); print(minutes); print(" Secondes : "); println(seconds); DisplaySeconds(); DisplayMinutes(); DisplayHours(); delay(1000); /* DisplaySeconds(); DisplayMinutes(); AfficherHeures() ;*/ } void AfficherSecondes() { for(int i = secSize - 1; i>= 0; i--) { int currentSecond = bitRead(seconds, i); digitalWrite(ledPinsSec[i], currentSecond); } } void AfficherMinutes() { for(int i = minSize - 1; i>= 0; i--) { int currentMinute = bitRead(minutes, i); digitalWrite(ledPinsMin[i], currentMinute); } } void AfficherHeures() { for(int i = hourSize - 1; i>= 0; i--) { int currentHour = bitRead(hours, i); digitalWrite(ledPinsHr[i], currentHour); } }


















