아두이노

시리얼 함수

봄산 2016. 10. 3. 17:14

1.Serial.Write()


-사용법: Serial.write(param), Serial.write(byte형 배열, 길이)

-파라미터:byte형 데이터, byte형 배열,


예제 코드


void setup()

{


  /* add setup code here */

Serial.begin(9600);


}


void loop()

{


  /* add main program code here */


const uint8_t temp[5] = { '1','2','3','4','5' };

Serial.write(1);

delay(500);

Serial.write(49);

delay(500);

Serial.print(1);

delay(500);

Serial.write('a');

delay(500);

//Serial.write(temp, 5);

//delay(500);

//Serial.print(temp, 5);

//Serial.write("12345");

//delay(500);

Serial.write('\n');

delay(500);


}


Serial.write(1)-----> 이상한 값 출력

Serial.print(1)-------> 1출력

Serial.write는 파라미터늘 그대로 전송하지만 Serial.print는 파라미터를 아스키코드로 변경해서 전송


결론적으로 Serial.write는 시리얼모니터에 데이터를 전송하는데 사용하지 않고 블루투스 통신 같은 곳에 직접 데이터를 전송할때 많이

사용


______________________________________________________________________________________________________________


2.Serial.end()


Serial.begin과 대비 되는 함수로  디지털 0,1번 핀이 시리얼통신 용으로 사용되지 못하게 합니다.

 


3.Serial.parseInt()


-압력 받은 값이 숫자인 경우 Long타입의 숫자로 변환하고 숫자가 아닌경우 0을 반환


예제코드


void setup() {

  // put your setup code here, to run once:

  Serial.begin(9600);


}


void loop() {

  // put your main code here, to run repeatedly:

  if(Serial.available()){

    long value1 = Serial.parseInt();

    long value2 = Serial.parseInt();


    Serial.print("valus1:");

    Serial.println(value1);

    Serial.print("valus2:");

    Serial.println(value2);

    Serial.print("value1+value2=");

    Serial.println(value1+value2);

    

  }


}


4.Serial.parseFloat()


Serial.p[aresInt와 같은 역할을 하는데 차이점은 부동소수점 값을 입력 받음


5.Serial.readBytes(buffer,length)


-buffer: 입력 받은 데이터를 저장할 버퍼

-length:입력받을 문자열 길이


리턴값:읽어온 데이터 길이 bytes


예제

void setup()

{


Serial.begin(9600);


}


void loop()

{


char temp[100];

if (Serial.available()) {


byte leng = Serial.readBytes(temp, 100);


Serial.print("input data:");

Serial.println(leng);


for (int i = 0; i < leng; i++) {

Serial.print(temp[i]);


}

Serial.println();

}




}


6.Serial.readBytesUntil(char,buffer,length)


 -char:종료 문자열

-buffer:입력받은 문자열을 저장할 공간

-length:입력 받을 문자열 크기


예제소스 코드


void setup()

{


Serial.begin(9600);


}


void loop()

{


char temp[100];

if (Serial.available()) {


byte leng = Serial.readBytesUntil(',',temp, 20);


Serial.print("input data:");

Serial.println(leng);

String data;

for (int i = 0; i < leng; i++) {

//Serial.print(temp[i]);


data += temp[i];

}


Serial.println(data);

}




}



7.Serial.setTimeout()

 -Serial.setTimeout(time);

-time:설정된 밀리미초 타임아웃 시간


기본적으로 1000ms으로 설정되어 있음. 데이터 값 수신을 대기하는 시간


8.Serial.find()


-Serial.find(target)

-target:검색할 string문자열


반환값: 수신데이터 중 타겟 값이 있으면 true, 없으면 false


void setup()

{


Serial.begin(9600);


}



void loop()

{

 String temp=" ";

while (Serial.available())

{

if (Serial.find("H")) {


                 temp=Serial.readString();

}

else {


temp = "no data";

}


Serial.print("Temp Value=");

Serial.println(temp);

}





9.Serial.readString()


시리얼 버퍼로 부터 문자열을 읽어서 리턴, Serial.Read()는 1문자 반환;


10.Serial.readStringUntil(Terminator);

 -터미네이터 문자가 나올때 까지 문자열을 버퍼에서 읽어 드린다.




11.Serial.findUntil(target,terminater)

  -target부터 terminater까지 데이터를 읽어 드림