ArduinoにEthernet シールドを取り付けてシリアル通信で文字列情報の受信を考える
時刻を表示するために4桁ごとに受信しなければなりません。4桁ごとに受信できなければ、正しく「時時分分」の並びで表示することが出来ません。
スケッチではSerial.avaiable()関数を使い、4文字受信します。
このソースは、「シリアル通信 -第3回:PCアプリで通信」を参考にしています。
cr(\r) LF(\n) CR:0x0d、LF:0x0A
//シリアル通信
char str[5]="0000"; //数字4桁+終端
char buf;
int i;
//7セグメントLED
int num;
int numDisp[4]={0, 1, 2, 3};
//LEDに表示する数字
int numDigit; //表示桁
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available() == 4) { //数字4桁
for( i=0; i<4; i++ )
str[i] = Serial.read();
num = atoi(str);
}
}
Arduino側では\0を読み込むまではバッファに文字を加えていって、\0を読み込んだら文字列を受け取ったとして処理することとします。
コメントをお書きください