아두이노에서 시리얼 모니터를 이용하면 프로그램(스케치) 실행 중간중간에 변수값 변화나 실행과정을 출력하여 볼수 있습니다. 이를이용하면 디버깅이 좀더 쉬워집니다.

 

스케치는 툴메뉴에서 시리얼 모니터를 통해서 실행하거나우측상단의 시리얼 모니터 버튼을 이용하여 실행할 수 있습니다.

 


시리얼 모니터에 텍스트 출력하기

[예제]

void setup() {
  Serial.begin(9600);

  Serial.write("Hello");
}

void loop() {
    
}

▶ begin() 함수는 시리얼 통신을 열고, 시리얼 통신의 속도를 지정하게됩니다. 예제에서 입력한 9600은 9600bps를 뜻하고, 이는 초당 9600bit를 전송한다는 뜻입니다. 따라서 프로그램에서의 통신속도와 시리얼모니터의 통신속도를 같게 맞춰야합니다.

▶ write()함수는 해당 문자열을 입력하게됩니다.

 

[결과]

시리얼 모니터에 write()함수에서 작성한 Hello가 출력된것을 확인할 수 있습니다. 이때 우측하단의 9600보드레이트를 통해 프로그램과 전송속도를 맞춘것 또한 확인 할 수있습니다.

 

[예제]

void setup() {
  Serial.begin(9600);

  Serial.write(65);
}

void loop() {
    
}

▶write() 함수는 에 숫자를 입력하면 해당 숫자의 아스키 값이 출력됩니다. 예제에서 65에 해당하는 아스키값은 A이므로 65가 아닌 A가 출격되는 것입니다.

 

[결과]

 

[예제]

void setup() {
  Serial.begin(9600);

  Serial.print(65);
}

void loop() {
    
}

▶print() 함수에 숫자를 입력하면 write()함수와는 다르게 그 값을 그냥 출력하게 됩니다. 즉 그 값을 출력하고 싶다면 print문을 사용해야합니다.

 

[결과]

[예제]

void setup() {
  Serial.begin(9600);

  Serial.println("Hi!!");
  Serial.print("OK\n");
  Serial.print("Good^^");
}

void loop() {
    
}

▶println() 함수는 문자열을 출력하고 줄바꿈을 합니다. 즉 해당함수 출력후 다음에 출력되는 내용은 다음 줄에 출력하게 됩니다. 줄바꿈을 하는 다른 방법은 문자열 마지막에 \n을 입력하는 것입니다.

 

[결과]

 


시리얼 모니터에서 입력한 값을 아두이노로 보내기

[예제]

void setup() {
     Serial.begin(9600);
}

void loop() {
     if (Serial.available()) {
          int r = Serial.read();
          Serial.println(r);
     }
}

▶available() 함수는 현재 시리얼 통신에 값이 있는지 없는지 확인하는 함수로 값이있다면 True를 반환합니다.

▶read()함수는 시리얼 모니터에서 입력한 겂을 읽어오게됩니다.

 

 

 

[결과]

입력란에 abc를 입력하고 전송을 클릭하면 아래와 같은 결과가 나옵니다.

만약 println을 사용하지 않고 write()함수를 사용하게 된다면 아스키값인 abc가 그대로 출력해볼수 있습니다. 이때 변수 r의 형은 byte로 변경해 줘야합니다.

 


serialEvent () 함수 사용하기

[예제]

String inputString="";
boolean stringComplete = false;

void setup() {
     Serial.begin(9600);
     inputString.reserve(200);
}

void loop() {
     if (stringComplete) {
          Serial.println(inputString);
          inputString="";
          stringComplete=false;
     }
}

void serialEvent() {
     while(Serial.available()) {
          char inChar=(char)Serial.read(); 
          inputString += inChar;
          if(inChar=='\n') {
                stringComplete = true;
          }
     }
}

▶serialEvent() 를 사용하는 예제입니다. 시리얼에 값이 생성되는 이벤트가 발생되면 serialEvent()함수가 호출됩니다.

 

[결과]

입력란에 abc를 입력하고 전송을 클릭하면 아래와 같은 결과가 나옵니다.

 

 

DC모터는 보통 자동차바퀴나 드론날개를 회전하는데 사용합니다.

 


L9110S 모터 드라이브

DC모터를 제어할때 모터드라이브를 사용하면 보다 쉽게 제어가 가능합니다. 여기서는 L9110S 모터 드라이브를 사용하도록 하겠습니다.

 

L9110S 모터 드라이브


한개의 모터 제어하기

[회로구성]

 

[프로그램(스케치)]

void setup() {
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
}

void loop() {
  // 앞으로 회전
  analogWrite(5,255);
  analogWrite(6,0);
  delay(1000);
    
    
    // 뒤로 회전
  analogWrite(5,0);
  analogWrite(6,255);
  delay(1000);
    
    // 정지
  analogWrite(5,0);
  analogWrite(6,0);
  delay(1000);
}

이 프로그램은 모토를 앞으로 1초동안 회전하고 뒤로 1초동안 회전하후 1초동안 멈추게 됩니다.

[실행결과 동영상]

 

 

+ Recent posts