2012-03-25 10 views
0

Arduinoのコードのコンパイルエラー:私は私のコードをコンパイルしようとしたとき、私はこのエラーを取得しています「割り当ての左オペランドとして必要な左辺値」

lvalue required as left operand of assignment.

コードは、アナログポートかかわらボタンで読んでいます。エラーが(無効(ループ)に)あるところである:私が持っている一番上に

while (count < 5){ 
    buttonPushed(analogPin) = tmp; 

     for (j = 0; j < 5; j++) { 
       while (tmp == 0) { tmp = buttonPushed(analogPin); }     //something wrong with the first half of this line! 

     if(sequence[j] == tmp){ 
         count ++; 
       } 

     else { 
      lcd.setCursor(0, 1); lcd.print("Wrong! Next round:");      delay(1000); 
         goto breakLoops; 
       } 

     } 
} 

breakLoops: 
elapsedTime = millis() - startTime; 

int tmp;

答えて

2
buttonPushed(analogPin) = tmp; 

この行は動作しません。 buttonPushedは関数であり、analogPinからのみ読み取ることができます。 Cの関数の結果に代入することはできません。何をしようとしているのか分かりませんが、代わりに別の変数を使用することになっていると思います。

2

あなたはこのラインを持っている:

 buttonPushed(analogPin) = tmp; 

あなたが代わりにしたいことがあります。代入演算子を使用した

 tmp = buttonPushed(analogPin); 

を、=オペレータの左側のオブジェクトが右側に値を取得します=オペレータであり、反対ではありません。

+0

おかげで法的になる場所にあり、次の自分の割り当てコードすることができます。それは完璧に働いたようです。 :-) – user1291351

+0

@ user1291351よろしくお願いします! – ouah

0

ここで問題となるのは、一時的な値/右辺値に割り当てようとしていることです。 Cの代入には左辺値が必要です。私はあなたのbuttonPushed関数のシグネチャは、ここbuttonPushed機能を割り当てるにしても意味がありません見つかったボタンのコピーを返して、基本的に以下の

int buttonPushed(int pin); 

です推測しています。実際のボタンとコピーを返すためには、ポインタを使う必要があります。

int* buttonPushed(int pin); 

は今、あなたはここで

int* pTemp = buttonPushed(analogPin); 
*pTemp = tmp; 

割り当てが左辺値であり、非常に多くのOuah

+0

私は、 'buttonPushed'はこの行のために' struct'を返すとは思わない:コードの中で 'tmp = buttonPushed(analogPin);'定義を変更することはできません。 – Ryan

+0

@minitechあなたは正しいと思われ、数値である可能性が高い – JaredPar

関連する問題