从char到'uint8_t'的转换无效

时间:2013-01-02 13:46:32

标签: arduino

我正在使用移出声明驱动一些7段显示(最后) 但是我遇到了一个问题。

我使用了#include <avr/pgmspace.h> libary来节省处理空间。 在它结束时,我需要将一个二进制数转移到一个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行

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这里的问题是shiftOut期望一个字节(uint8_t)作为其第四个参数(value)。传递的值是char*(可能被声明为prog_char数组)。

要解决此问题,值的声明需要使用prog_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])));