匿名質問者

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回まで
  • 登録:
  • 終了:2017/03/20 16:14:50

ベストアンサー

匿名回答1号 No.1

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

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

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

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

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

回答リクエストを送信したユーザーはいません