📜  Arduino阵列

📅  最后修改于: 2020-12-27 09:34:09             🧑  作者: Mango

Arduino阵列

什么是数组?

数组被定义为允许将多个值以简单方式分组在一起的数据结构。这是一种易于访问的方法。

数组通常是根据数据类型(例如integer,reals, 字符和boolean)构建的。它指的是相似数据元素的有限数量(n)的命名列表。

连续数字集通常代表数组中的元素,它们是0、1、2、3、4、5、6,.. n。

例如,如果一个由5个元素组成的数组的名称为AR,则将如下所示引用这些元素:

AR[0], AR[1], AR[2], AR[3], and AR[4]    

Arduino中的阵列

Arduino中的数组使用整数数据类型声明。

它也定义为变量的集合,它是通过索引号获取的。

该数组表示为:

我们可以根据自己的选择指定任何名称。数组名称是元素的单独名称。

数组声明

可以在Arduino中声明数组的不同方法,如下所示:

  • 我们可以在不指定大小的情况下声明数组。

例如,

int myarray[ ] = { 1, 4, 6, 7 } ;
  • 我们可以在不初始化其元素的情况下声明数组。

例如,

int myarray[ 5];
  • 我们可以通过初始化大小和元素来声明数组。
int myarray[ 8] = { 1, 4, 7, 9, 3, 2 , 4};

阵列的特征

  • 数组的元素可以是字符,负数等。

例如,

int myarray[ 4 ] = { 1, -3, 4};
char myarray[ 6] =  " Hi " ;
  • 数组的大小不应小于元素的数量。例如,

int myarray [5] = {1,4,6,7};可以写成int myarray [8] = {1,4,6,7};

但是,不能将其写为int myarray [2] = {1,4,6,7};

让我们看一个例子。

考虑一下Arduino IDE中的以下代码。

让我们将数组指定为:int myarray [5] = {1,4,6,7};

该代码将成功编译,如下所示:

现在,如果我们将数组指定为:int myarray [2] = {1,4,6,7};

该代码将显示错误,如下所示:

  • 指定char类型时,元素总数应为(n-1),其中n是数组的大小。这是因为需要一个元素才能在数组中保存空字符。

例如,

让我们将数组指定为char abc [8] =“ Arduino”;

在Arduino中访问数组

Arduino中的数组的索引为零。这意味着该数组的第一个元素的索引为0。例如,

myvalue[0] = = 1, myvalue[1] = = 2, . . . . 

范例1:

让我们以6个元素组成的数组(ARarduino )。数组的元素如下所示:

ARarduino [0],ARarduino [1],ARarduino [2],ARarduino [3],ARarduino [4],

ARarduino [5]。

数组的最后一个元素是ARarduino [5]。

数组的最后一个元素为n-1,其中n是声明的数组大小。

考虑下面的代码。

ARarduino[6] = { 1, 4, 7, 6, 11, 15};
// ARarduino[4] contains value 11
// ARarduino[5] contains value 15
//ARarduino[6] is invalid

数组上的算术运算

让我们了解数组上进行的操作。

示例1:求和

我们还可以计算数组中元素的总和。

让我们考虑一个包含4个元素的数组(AR)。元素是: AR [0],AR [1],AR [2]AR [3]。

要计算前两个元素的总和:

Serial.print( AR[0] + AR[1] );

将打印分配给数组中元素的值的总和。

示例2:划分

我们将分配给元素AR [4]的值除以2。结果值将分配给变量“ z”。考虑下面的代码:

z = AR[4]  / 2;
Serial.println ( x );

结果将被打印。

在将值分配给数组时,我们需要小心。索引号大于数组的大小可能会产生无效的数据。此类数据将保存到随机存储器位置,这可能会导致程序故障或难以发现的错误。

注意:C++不会检查声明的数组的合法绑定大小,而JAVA和BASIC会检查。

将值分配给数组的语法指定为:

myArray[0] = 5; 
// we can assign any value depending on the requirements.

从数组中检索值的语法指定为:

项目示例:我们还将在基本项目中讨论使用阵列点亮LED的项目->使用阵列闪烁各种LED

循环数组

我们还可以在循环内使用数组。对于数组的每个元素,循环计数器都充当该数组的索引元素。

让我们看一个例子。

在此示例中,将打印串行端口上的元素。

代码如下:

for (byte i = 0; i < 6; i = i + +)  // here, i++ can also be written as i+1
 {
  Serial.println(myArray[i]);
}

程式码范例

让我们通过一些例子来了解数组。

示例1:打印所有元素的总和

考虑下面的代码:

const int sizeOFarray = 5; // constant variable indicating size of array
int b[sizeOFarray] = {10, 20, 30, 40, 50}; // five values initialized to five elements of an array
int sum = 0;

void setup () 
{
Serial.begin(9600);
}
void loop () 
{
   // sum of array b
   for ( int i = 0; i < sizeOFarray; i++ )
      sum += b[ i ];  // here, sum = sum + b[i]
   Serial.print('Sum of total elements of an array:') ;
   Serial.print(sum) ;  // It will print the sum of all elements of an array
}

输出量

Sum of total elements of an array: 150

在上面的代码中,我们使用了const变量。编译器将内存保留在Arduino Variables 。

示例1:数组元素的平均值

考虑下面的代码:

const int sizeOFarray = 5; // constant variable indicating size of array
int b[sizeOFarray] = {10, 30, 40, 55, 65}; // five values initialized to five elements of an array
int sum = 0;
int average = 0;

void setup () 
{
Serial.begin(9600);
}
void loop () {
   // sum of array b
   for ( int i = 0; i < sizeOFarray; i++ )
      sum += b[ i ];  // here, sum = sum + b[i]
      average = sum/5;
   Serial.print('Average of the elements of the array:') ;
   Serial.println(average) ;  // It will print the average of all elements of an array
   // there are 5 elements. So, the average will be divided by 5.
}

输出量

Average of the elements of the array: 
40