ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 시리얼 함수
    아두이노 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까지 데이터를 읽어 드림


Designed by Tistory.