arduino里面pow该怎么用,我这pow(2,0)=1,pow(2,1)=2都没问题,pow(2,2)就等于3了?幂大于3的都自减一?

在arduino上学习74HC595的用法,想拿电位器控制一排小灯,达到类似调音量的那种效果,写的如下的程序:
int in = 0;
int DS = 2;
int SH_CP = 3;
int ST_CP = 5;
int out;
int out1;

void setup()
{
Serial.begin(9600);
pinMode(DS, 1);
pinMode(SH_CP, 1);
pinMode(ST_CP, 1);
}

void loop()
{
out1 = analogRead(in);
out1 = map(out1, 0, 1023, 0, 8);
out = pow(2, out1) - 1;

digitalWrite(ST_CP, 0);
shiftOut(DS, SH_CP, LSBFIRST, out);
digitalWrite(ST_CP, 1);

Serial.print(out1);
Serial.print(" ");
Serial.println(out);
}

结果输出的out1和out的对应关系是
0 - 0(正确)
1 - 1(正确)
2 - 2(应该是3)
3 - 6(应该是7)
4 - 14(应该是15)
5 - 30(应该是31)
6 - 62(应该是63)
7 - 126(应该是127)

这个问题出的太诡异了,哪位帮忙看看怎么回事,谢谢!!

单独打印pow 的计算结果是对的,一加起来就会少个1,我也遇到过,应该是编译器或者arduino 库的问题,解决方法,左移或者重新pow
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-01-23
不清楚什么回事
不过如果是2的幂次用左移会更好
相似回答