Web経由でArduinoと通信するためのAndroidアプリケーションを作成しています。Arduinoはイーサネットシールドを介してWebサーバーを実行しています。コードを添付していますが、ここで説明しますので、私がやろうとしていることを理解してください。
Androidは、の形式でHTTPリクエストを送信しますhttp://192.168.1.148/?Lights=1
。Arduinoはリクエストを取得し、コマンドを実行して(この場合、いくつかのライトをオンにします)、文字列「Lights=On」を送信するだけでAndroidデバイスに応答します。Androidはボタンの色を変更して、コマンドが正常に実行されたことをユーザーに通知します。
Arduinoは命令を取得して実行し、応答を送信していますが、ボタンの色は変わりません。ボタンのテキストを受信した応答に変更するためのデバッグ行を追加したため、Androidデバイスが文字列を取得していることがわかります。Androidデバイスに関連するコードは次のとおりです。
((Button) v).setText(sb.toString()); //This works and the button text changes to "Lights=On".
//Test response and update button
if(sb.toString()=="Lights=On"){
v.getBackground().setColorFilter(0xFFFFFF00, PorterDuff.Mode.MULTIPLY);
Drawable d = lightOff.getBackground();
lightOff.invalidateDrawable(d);
d.clearColorFilter();
}
Arduinoコードは次のとおりです。
if(s=="Lights"){
switch(client.read()){
case '0':
digitalWrite(LightPin,0);
client.print("Lights=Off");
//debug
Serial.println("Lights=Off");
break;
case '1':
digitalWrite(LightPin,1);
client.print("Lights=On");
Serial.println("Lights=On");
break;
}
}
この質問に答えるためにさらにコードが必要な場合はお知らせください。