求助解决Arduino代码中‘void value not ignored as it ought to be’报错
编译错误解决:void value not ignored as it ought to be
报错原因
第79行done = radio.read( received_data, num_received_data );的问题在于,你使用的RF24库中,radio.read()函数是**无返回值(void类型)**的,但你试图将它的返回结果赋值给布尔变量done,C++语法不允许这种操作,因此编译器抛出该错误。
解决方法
直接调用radio.read()读取数据,之后手动将done设置为true即可——因为进入这段逻辑的前提是radio.available()为真,说明有数据可以读取,读取操作会成功执行。
修改后的对应代码片段:
while (!done) { // 执行读取操作,无需接收返回值 radio.read(received_data, num_received_data); // 读取完成后设置done为true,退出循环 done = true; // 后续的PWM处理和逻辑保持不变... }
额外优化建议
原代码中while (!done)循环其实只需要执行一次读取操作就可以退出,因为每次loop()周期都会检查radio.available(),可以考虑去掉这个循环,简化逻辑:
if (radio.available()) { digitalWrite(SIGNAL, HIGH); radio.read(received_data, num_received_data); // 直接编写PWM处理和其他逻辑 ch1=(received_data[1]); ch1=ch1+3; CH1.write(ch1); // ... 其余处理代码 } else { digitalWrite(SIGNAL, LOW); }
内容的提问来源于stack exchange,提问作者Yasin Khoshab
相关产品推荐
相关产品推荐

