2016年

3月

24日

Arduino シリアル通信で4桁の時刻を受信処理

ArduinoにEthernet シールドを取り付けてシリアル通信で文字列情報の受信を考える

時刻を表示するために4桁ごとに受信しなければなりません。4桁ごとに受信できなければ、正しく「時時分分」の並びで表示することが出来ません。
スケッチではSerial.avaiable()関数を使い、4文字受信します。

このソースは、「シリアル通信 -第3回:PCアプリで通信」を参考にしています。

 

cr(\r) LF(\n) CR:0x0d、LF:0x0A

Arduinoスケッチ

//シリアル通信
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を読み込んだら文字列を受け取ったとして処理することとします。

 

目 次