如何处理Arduino返回

时间:2012-10-25 11:37:07

标签: arduino

对于不得不提出这个问题我感到非常愚蠢,但我如何使用返回值呢?

例如,我有这段代码:

int x = 0;

void setup(){
  Serial.begin(9600);
}

void loop(){
  int y = calc(x);
  Serial.println(y);

  delay(500);
}

int calc(int nmbr){
 int i = nmbr + 1;
 return i; 
}

如何让x上升?基本上,我想看到它分为0,1,2,3,4,5等等 我知道这很容易使用for(),但我想知道如何使用返回值,而不是如何创建计数器。

解决方案可能非常简单,当我看到它时,我会看到它,但过去30分钟我一直在看我的屏幕而且我完全坚持这个。

4 个答案:

答案 0 :(得分:2)

您没有更改x,而是要更改另一个变量nmbr,因为您按值传递了x,这是x的副本,您可以通过引用传递它,或者因为x是全局的,您可以这样做:

int calc() {
 return x++;
}

但实际上,你应该只使用for循环:)

int x;
for (x=0; x<10; x++) {
  Serial.println(x);
}

答案 1 :(得分:1)

Mux的答案很好。我会添加更多品种。首先,只需将函数返回值分配回x

loop() {
    x = calc( x );
    Serial.println( x );
}

其次,使用call-by-reference,将指针传递给x而不是x的值。

void loop() {
    int y = calc( &x );
    Serial.println( y );
}

int calc( int *nmbr ) {
    *nmbr++;
}

阅读"The C Programming Language"来掌握语言及其可能性,这对你有好处。祝你好运: - )

干杯,

答案 2 :(得分:0)

尝试:

int y = 0;

void setup(){
  Serial.begin(9600);
}

void loop(){
  y = calc(y);
  Serial.println(y);

  delay(500);
}

int calc(int nmbr){
 int i = nmbr + 1;
 return i; 
}

答案 3 :(得分:0)

您可以使用Declare static int。

,而不是声明为int
#include <stdio.h>


void func() {
    static int x = 0; // x is initialized only once across three calls of func() and x will get incremented three 
                          //times after all the three calls. i.e x will be 2 finally
    printf("%d\n", x); // outputs the value of x
    x = x + 1;
}

int main() { //int argc, char *argv[] inside the main is optional in the particular program
    func(); // prints 0
    func(); // prints 1
    func(); // prints 2
    return 0;
}