Arrays Arduino Uno/OSEPP Uno是否有足够的内存来创建伺服阵列?

Arrays Arduino Uno/OSEPP Uno是否有足够的内存来创建伺服阵列?,arrays,arduino,arduino-uno,servo,Arrays,Arduino,Arduino Uno,Servo,我非常不擅长编码(我知道基本知识),我正试图在Arduino中创建一个伺服阵列,通过串行处理进行控制。我模模糊糊地记得一些关于Arduino微控制器的事情,它们的内存非常有限,所以我不确定创建一个伺服对象阵列是否可行。以下是我目前掌握的代码: #include <Servo.h> Servo[] servos = new Servo[6]; //holds the servo objects int[] servoPos = {90,112,149,45,75,8}; //hol

我非常不擅长编码(我知道基本知识),我正试图在Arduino中创建一个伺服阵列,通过串行处理进行控制。我模模糊糊地记得一些关于Arduino微控制器的事情,它们的内存非常有限,所以我不确定创建一个伺服对象阵列是否可行。以下是我目前掌握的代码:

#include <Servo.h>

Servo[] servos = new Servo[6]; //holds the servo objects

int[] servoPos = {90,112,149,45,75,8}; //holds the current position of each servo

char serialVal; //store the serialValue received from serial

void setup()
{
  for(int i = 0; i < servos.length; i++) //attach servos to pins
  {
    servos[i].attach(i+8);
  }

  Serial.begin(115200); //initialize serial
}
#包括
伺服[]伺服=新伺服[6]//保存伺服对象
int[]servoPos={90112149,45,75,8}//保持每个伺服的当前位置
字符序列//存储从serial接收的serialValue
无效设置()
{
对于(int i=0;i
Arduino Uno板是否能够支持此阵列,并像在Java中一样使用它?在此之前,我一直在分别创建每个对象,这是非常低效和耗时的键入和读取


另外,如果有任何东西会阻止代码执行,请告诉我。非常感谢您的帮助。

我的建议是启动您的Arduino IDE并尝试一下。首先,您会发现代码中存在一些问题:

您的数组语法不正确。例如:

int[] servoPos = {90,112,149,45,75,8}; //holds the current position of each servo
应写明:

int servoPos[] = {90,112,149,45,75,8}; //holds the current position of each servo
我猜这个
servos.length
是Java的东西?相反,您应该通过以下方式确定该值:

sizeof(servos) / sizeof(servos[0])
编译完成后,您将在Arduino IDE窗口底部的黑色控制台窗口中看到一条消息:

草图使用2408字节(7%)的程序存储空间。最大值为32256字节。 全局变量使用242字节(11%)的动态内存,局部变量使用1806字节。最大值为2048字节

这会让你对内存使用有一些了解。要在运行时检查可用内存,我使用此库:

那么长度是sizeof(servos)还是sizeof(servos[0])?伺服数组的语法是否也必须更改?@JasonChen
sizeof(servos)
是以字节为单位的
servos
数组的大小,
sizeof(servos[0])
是以字节为单位的一个元素的大小。所以必须将数组的大小除以元素的大小才能得到元素的数量。然而,有可能得到。而且伺服阵列的语法也必须更改。
伺服
阵列应该是:
伺服伺服[6]。这将创建6个元素的数组,并调用默认构造函数作为基础语言是C++。