Arduino 从字符到'的转换无效;uint8';

Arduino 从字符到'的转换无效;uint8';,arduino,Arduino,我使用shift out语句来驱动几个7段显示器(最后) 但我遇到了一个问题 我使用了#includelibary as来节省处理空间。 最后,我需要移动一个二进制数,将其输入reg,然后输入BCD,然后输入显示器: strcpy_P(buffer, (char*)pgm_read_word(&(Times[big]))); shiftOut(dataPin, clockPin, MSBFIRST, buffer); 在缓冲区中,将显示所选值(例如B00100011应显示23), 我

我使用shift out语句来驱动几个7段显示器(最后) 但我遇到了一个问题

我使用了
#include
libary as来节省处理空间。 最后,我需要移动一个二进制数,将其输入reg,然后输入BCD,然后输入显示器:

strcpy_P(buffer, (char*)pgm_read_word(&(Times[big])));

shiftOut(dataPin, clockPin, MSBFIRST, buffer);
在缓冲区中,将显示所选值(例如B00100011应显示23), 我的代码给了我

Invalid conversion from char to 'uint8_t'
突出显示shiftOut行

有什么想法吗?

这里的问题是需要一个字节(
uint8\t
)作为它的第四个参数(
)。传递的值是一个
char*
(可能声明为
prog\u char
数组)

要解决此问题,值的声明需要使用
prog\u uchar
,如下所示:

prog_uchar values[] PROGMEM = { (prog_uchar) B00100011, ... };

...

int valueIndex = ...; // Index of value in the values array
shiftOut(dataPin, clockPin, MSBFIRST, pgm_read_byte(&(values[valueIndex])));
这里的问题是需要一个字节(
uint8\t
)作为其第四个参数(
value
)。传递的值是一个
char*
(可能声明为
prog\u char
数组)

要解决此问题,值的声明需要使用
prog\u uchar
,如下所示:

prog_uchar values[] PROGMEM = { (prog_uchar) B00100011, ... };

...

int valueIndex = ...; // Index of value in the values array
shiftOut(dataPin, clockPin, MSBFIRST, pgm_read_byte(&(values[valueIndex])));


所有变量的类型是什么?什么是声明< > StuttOuts<代码>?尝试编译为C而不是C++。我在ARDUNO环境中这样做,所以它是C和C++的混合,而大变量是int,而缓冲区是一个字符数组,我已经确保它足够大,适合于需要为声明移位而发送的整个字符。我不知道你在说什么对不起你确定B00100011应该给你23吗?我想是35个二进制变量。你所有变量的类型是什么?什么是声明< > StuttOuts<代码>?尝试编译为C而不是C++。我在ARDUNO环境中这样做,所以它是C和C++的混合,而大变量是int,而缓冲区是一个字符数组,我已经确保它足够大,适合于需要为声明移位而发送的整个字符。我不知道你在说什么对不起你确定B00100011应该给你23吗?我想它是35个二进制的。我让它工作了,,,,,,有点我还没有完成代码,但由于你的帮助,这段代码中没有错误,,,如果我可以再问一个问题的话,,,我不得不稍微修改你的代码,去掉我的每个程序值[]PROGMEM={,,,,};现在我需要找到一种不同的方法来理解Shiftout函数,我正在尝试将二进制移位,而不是一个数字,,,有什么想法吗?你也许可以转换B001。。。到程序(更新如上)。如果你将你的新代码发布为gist(on),我会看一看。我已将文件代码放在gist网站中,这里是URL,我想感谢迄今为止的所有帮助,,,需要此作为我能看到的唯一其他工作方式更多的代码和几百条If语句:(再次感谢请原谅我说得太慢,但是我已经看过代码了,我不确定我是否理解您正在尝试做什么……您能否提供一些温度读数示例(可以从
recordings()
返回的浮点值以及您想要
shiftOut()的相应二进制值)
。从您发布的代码中,如果温度超过99度,您将读取超过
值的数组。此外,您在数组中有两次
00010001
(11)值,并且似乎缺少
00010000
(10).我已经开始工作了,,,,,我还没有完成代码,但是由于你的帮助,代码的这一部分没有错误,,,如果我可以再问一个问题的话,,,我不得不稍微修改一下你的代码,去掉每个程序值中的B[]PROGMEM={,,,,};条目,现在我需要找到一种不同的方法来理解Shiftout函数,我正在尝试将二进制移位,而不是一个数字,,,有什么想法吗?您可以将B001…转换为一个程序(更新如上)。如果您将新代码作为要点发布(on)我会看一看。我已经把文件代码放在gist网站上了这里是URL我想感谢到目前为止所有的帮助,,,需要这个作为我能看到的唯一的工作方式更多的代码和几百条if语句:(再次感谢请原谅我说得太慢,但是我已经看过代码了,我不确定我是否理解您正在尝试做什么……您能否提供一些温度读数示例(可以从
recordings()
返回的浮点值以及您想要
shiftOut()的相应二进制值)
。从您发布的代码中,如果温度超过99度,您将读取
数组。此外,您在数组中有两次
00010001
(11)值,并且似乎缺少
00010000
(10)。