我正在为我的 Arduino 编写一个 C++ 程序库。该库用于 DTMF 解码器。在将两个检测到和验证的音调一起添加以返回相应的按钮时,我遇到了问题。
我两次调用下面的函数(它还没有完全完成,但你会希望得到我的逻辑)。如果我将值 R1 和 R2 初始化为 0,那么它们会在第二次调用时相互覆盖。如果我根本不初始化它们,我会收到运行时检查错误。
我花了 40 多个小时试图弄清楚这一点(我是一个非常基础的程序员!)。任何帮助将不胜感激!
int DTMF::validate(void)
{
int threshhold = 9000;
int i;
int x;
int y;
// int high[7];
for(i=0; i<7; i++)
{
if(magnitude[i] > threshhold)
{
return(i);
}
}
}
unsigned char DTMF::buttonPressed(void)
{
int validatedFreq = validate();
cout << "valid is returning: " << validatedFreq << endl;
int R1;
int R2;
switch(validatedFreq)
{
case 0:
R1=1;
cout << "DEBUG:This is case 1 R1 output: " << R1 << endl;
break;
case 1:
R1=2;
break;
case 2:
R1=3;
break;
case 3:
R2=4;
cout << "DEBUG:This is case 3 R2 output: " << R2 << endl;
break;
case 4:
R2=5;
break;
case 5:
R2=6;
break;
case 6:
R2=7;
break;
}
if(R1==1 && R2==4)
{
cout << "DEBUG:The value of R1 is " << R1 << " and the value of R2 is " << R2 << endl;
return(button[0]);
}
}