1

シフト アウト ステートメントを使用して (最終的に) いくつかの 7 セグ ディスプレイを駆動していますが、問題が発生しています。

#include <avr/pgmspace.h>処理用のスペースを節約するためにライブラリを使用しました。最後に、バイナリ番号を reg に、次に BCD に、次にディスプレイにフィードするために shiftOut する必要があります。

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

shiftOut(dataPin, clockPin, MSBFIRST, buffer);

バッファの場所に選択した値が入ります(たとえば、B00100011は23を表示するはずです)、私のコードは私に与えます

Invalid conversion from char to 'uint8_t'

shiftOut 行が強調表示された状態

何か案は?

4

1 に答える 1

1

ここでの問題は、4 番目の引数 ( ) としてshiftOutバイト ( ) を想定していることです。渡された値は(おそらく配列として宣言されている) です。uint8_tvaluechar*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])));
于 2013-01-02T20:58:01.573 に答える