【发布时间】:2015-01-20 11:29:44
【问题描述】:
我在 Arduino IDE(基本上使用 C++)上编程,我在调用另一个函数时遇到了麻烦。部分代码如下:
unsigned long int deslocamento (char sentido, byte &cont, const int pino, unsigned long int posicaoA)
{
byte leitura;
unsigned int deltaposicao;
leitura = digitalRead(pino);
if ((leitura == HIGH) && (cont == 0))
{
cont = 1;
}
if ((leitura == LOW) && (cont == 1))
{
cont = 0;
deltaposicao++;
}
if (sentido == 'F')
{
posicaoA += deltaposicao;
}
else
{
posicaoA -= deltaposicao;
}
return posicaoA;
}
void zeramento (unsigned long int posicaoA)
{
byte pwm = 255;
char sentido = 'R';
byte fator;
fator = fatorcorrecaoP (pwm);
while (posicaoA != 0)
{
posicaoA = deslocamento (sentido, cont, pinencoder, posicaoA);
posicaoA -= fator;
comando (sentido, pwm);
}
}
在函数“void zeramento”上,我是否应该将函数“unsigned long int deslocamento”使用的所有输入(参数)声明为输入,或者有一个更简单和更短(或者在内存优化方面更有效)的方法去做?例如,我应该声明为“void zeramento(posicaoA, sentido, &cont, pinecoder)”吗?
感谢大家,如有任何问题,我们深表歉意。我是新来的,还在学习英语。
【问题讨论】:
-
我无法理解这个问题。
-
我省略了其余的代码,但我会尽力描述它。这是操作切割机的 ATMEGA 的代码。该机器有许多用户输入,如操作速度和长度。它到达确定的位置,然后返回。它还有许多其他功能,例如内存处理。两者中的第一个(“deslocamento”)根据移动方向、最后位置和编码器传感器的读数确定机器的实际位置。第二个仅在开始时执行,它的 for 将机器移动到零位置,基于打开时的位置。
-
为什么?由于 posicaoA 指的是最后一个位置,并且函数“deslocamento”根据覆盖的距离更新 posicaoA。
-
我注意到它是一个全局变量,尽量避免使用它们。
-
这不是一个好理由,将其作为参数传递。
标签: c++ c function arduino arduino-ide