2013-01-22 44 views
0

我的代碼工作很好,並在串行監視器上給出輸出,直到我添加此功能 稱其停止發送到串行!該函數用輸入數組的絕對值填充結果數組。Arduino函數絕對數組?

#define INPUT_SIZE 800 

void vabs(double *vec,int vsize,double *result){ 
    int i; 
    for(i=0 ; i<vsize ; ++i) 
    result[i] = fabs(vec[i]); 
} 

double x1[INPUT_SIZE]; 
int x1size; 
double absX1[INPUT_SIZE]; 
int absX1size; 

double Process(int *inputArray,double *qrs){ 
    int i; 

    // Initialization 
    for(i=0 ; i<INPUT_SIZE ; ++i) 
    x1[i] = (double)inputArray[i]; 

    x1size = INPUT_SIZE; 
    // Cancellation DC drift and normalization 
    double meanValue = mean(x1,x1size); 
    minus(x1,x1size,meanValue); 

    Serial.println(x1[0]); 

// vabs(x1,x1size,absX1); // Uncomment this line will cause the problem! 
    absX1size = x1size; 
    *qrs = 5; 
    return 10; 
} 

的設置&環:

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

void loop(){ 
    // This array contains 800 values 
    int bArr[]= {59,259,259,250,250,250,83,83,...}; 
    double qrs = 0; 
    double heartRate = Process(bArr,&qrs); 
    delay(5000); 
} 

我使用的Arduino兆(Atmega1280),其中有閃存128 KB SRAM和8 KB。

+1

我懷疑你想'fabs'而不是'abs'。但不管怎樣,你能更具體地說明你的問題嗎?怎麼了? –

+0

aha ,,當我使用這個功能時,串口監視器不會打印任何東西! –

+0

abs - 整數。晶圓廠 - 浮動/雙打 –

回答

0

而不是fabs()嘗試(result[i] < 0 ? vec[i] * -1 : vec[i]),這會告訴你fabs()是否有問題。

注意,這裏似乎有很多不必要的代碼。我將假設這是因爲您刪除了其他部分以便在此處張貼。

+0

我試過這個,但有同樣的問題,沒有在串口監視器上! –

+0

你是否從'Serial.println(x1 [0])獲得輸出;'? –

+0

aha ,,從這個說法:) –