匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

arduino micro について



void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.println(Serial.available());
}

上記のようなプログラムをarduino microとarduino UNOに書き込み、
シリアルモニタで文字を打ち表示させると、
microの方は0 1で動作が停止してしまう。
対しUNOの方は0から63まで表示される。
どういうことなの…
改善案はあるの…?

回答の条件
  • 1人50回まで
  • 13歳以上
  • 登録:2017/03/20 00:25:11
  • 終了:2017/03/20 16:14:50

ベストアンサー

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2017/03/20 01:08:29

Serial.available() は
arduinoの受信バッファに溜まっている文字の数を返す関数です

受信バッファには上限があり,その上限が micro は1で,UNOは63ということでしょう.つまり microは最大2文字, UNOは64文字までなら受信バッファに保存できる,ということになります


とりあえず 受信バッファに溜まっている文字は read を呼べば取り出せるので
以下のようにプログラムすれば数字が増えたり減ったりするはずです

void loop()
{
Serial.println(Serial.available());
Serial.read() ;
}
他5件のコメントを見る
匿名回答1号

a=0 の位置を if (a>=2)の末尾に移動させると,
プログラムが読みやすくなると思います

	    Serial.write('L');
	    Serial.write('R');
	    if(Serial.available())
	    {
		c[a]=Serial.read();
		a++;
	    }
	    if(a>=2)
	    {
		if(c[0]=='A'){
		    if(c[1]=='A')
		    {PL=c[2];}}

		if(c[0]=='D'){
		    if(c[1]=='D')
		    {PR=c[2];}}
		a=0;  /* ここに a=0 を移動 */
	    } 

これで while (a<3) のループが不要になります

2017/03/21 14:47:08
匿名質問者

1人で物事を済ませようとすると無駄な行動をやってることがありますね。
ありがとうございます。

2017/03/22 22:38:52

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません