์๋ฆฌ์ผํต์ ์ผ๋ก ํตํด ์ ์ก๋๋ ํ๋์ ํจํด ๋ฌธ์์ด์ ๋ํ ์ฒ๋ฆฌ์ ๋ํด ๋ค๋ค์ต๋๋ค. ๋ฌธ๋ ์๋์ด๋ ธ์ ์ฐ๊ฒฐ ๋ ์ฌ๋ฌ๊ฐ์ ๋ถํ์ ํต์ ์ ํตํด ์ ์ด๋ฅผ ํ ๊ฒฝ์ฐ์ ๋ํด ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋ฉด ์ข์์ง ๊ถ๊ธํด ์ง๋๊ตฐ์. ํ๋์ ํจํด ๋ฌธ์์ด์ ํตํด A๋ถํ์ ์ ์ดํ๋ค๋ฉด ๋๋ค๋ฅธ ํจํด๋ฌธ์์ด๋ก B๋ถํ์ ์ ์ดํ ์ผ์ด ์๊ธธ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ฌ๋ฌ๊ฐ์ ์๋ก ๋ค๋ฅธ ํจํด ๋ฌธ์์ด์ ์๋์ด๋ ธ์ฐ๋ ธ์์ ๋์์ ์ฒ๋ฆฌํ๊ณ ์ ํ ๋ ๊ธฐ์ด์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ฒ๋ฆฌํ๋ ์์์ฝ๋ฉ์ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
LED์ Servo Motor๋ฅผ ํต์ ์ ํตํด ์ ์ด๋ฅผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํ ๊น์.
LED(A๋ถํ)ํจํด ๋ฌธ์์ด : LED ํ์ด 13๋ฒ์ผ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ ํด ๋ด ์๋ค.
String inString = "a13,1" or "a13,0";
digitalWrite(13,1);
digitalWrite(13,0);
์ A ํจํด๋ฌธ์์ด์ ํตํด์ 13๋ฒ ํ์ HIGH(1) or LOW(0) ์ํ๋ฅผ ์ง์ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
Servo Motor(B๋ถํ)ํจํด ๋ฌธ์์ด" : Servo pin์ด 7๋ฒ์ผ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ ํด ๋ด ์๋ค.
String inString = "b90";
servo.write(90);
์ B ํจํด๋ฌธ์์ด์ ํตํด์ ๊ณ ์ Servo Motor ํ์ ํน์ ๊ฐ์ผ๋ก ํ์ ์ํฌ ์ ์๊ฒ ๋ฉ๋๋ค.
์๋ฅผ๋ค์ด, 2๊ฐ์ ํจํด ๋ฌธ์์ด์ ํต์ ์ ํตํด ์ ์ก๋๊ณ ์๋์ด๋ ธ๋ ์๋ก ๋ค๋ฅธ ๋ฌธ์์ด์ด ์ ๋ ฅ๋๋ฉด ํด๋น ๋ฌธ์์ด์ ๋ง์ ๋์์ ์ฒ๋ฆฌํ๋๋ก ํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํ ๊น์. ๋ฐ๋ก, ๋ฌธ์์ด์ ๋ถํดํ์ฌ ๋ถํ ํจํดํํ๋ฅผ ์ ํ๋ฌธ(switch)๋ฌธ์ผ๋ก ๋ถ๋ฆฌํด ๋ด๋ฉด ๋ฉ๋๋ค.
ํจํด ํํ๋ฅผ ์๊ธ์ ์ฒซ๋ฒ์งธ ์ํ๋ฒณ์ผ๋ก ์ง์ ํ๊ฒ ํ์ต๋๋ค. ์ฆ, a,b๋ก 2๊ฐ์ ๋ถํ์ ํจํด๋ถํ์ผ๋ก ๋ถ๋ฅ๊ฐ ๋ฉ๋๋ค.
a,b์ ๋ถํ ํจํด์ ์ ํ๋ฌธ์ ํตํด์ ํด๋น ๋ถํ์ ์ง์ ํ ์ ์์ต๋๋ค.
String inString = Serial.readStringUntil('\n');
char ch = inString.charAt(0); //๋ฌธ์์ด์์ ์ฒซ๋ฌธ์ ์ฝ๊ธฐ
switch(ch){
case 'a':
A๋ถํ ๋ฌธ์์ด ์ฝ๊ธฐ;
A๋ถํ LED๋์;
break;
case 'b':
B๋ถํ ๋ฌธ์์ด ์ฝ๊ธฐ;
B๋ถํ Servo Motor๋์;
break;
}
์๋ฅผ ๋ค์ด, ๋๊ฐ์ ๋ถํ a,b ๋ถํ๋ฅผ ์ ์ดํ๋ ๋ช ๋ น์ธ๋ฐ ์ค์ ๋ก ๋ญ๊ฐ๋ฅผ ๋ง๋ค ๋๋ ์ฌ๋ฌ๊ฐ ๋ถํ์ ํต์ ์์ ํตํด ์ ์ด ํ ๋๋ ์ฌ๋ฌ๊ฐ์ case๋ฅผ ๋ง๋ค๋ฉด ๋๊ฒ ์ฃ .
2๊ฐ ๋ถํ์ ์ฝ์ ๋๋ ์๋์ ๊ฐ์ด 2๊ฐ์ case๋ฅผ ์ดํด๋ด ์๋ค.
index_pin = inString.indexOf(',');
index_state = inString.length();
pin = inString.substring(1, index_pin).toInt();
state = inString.substring(index_pin+1,index_state).toInt();
index_servo = inString.length();
angle = inString.substring(1, index_servo).toInt();
void LedOutput(int pin, int state){
digitalWrite(pin, state);
}
void ServoOutput(int angle){
servo.write(angle);
}
์ฒ๋ฆฌ ๋์์ ๋ณด๋ฉด ๋จ์ํฉ๋๋ค. ์ค์ ๋ ์ข ๋ณต์กํ ์ ์ด ๋ช ๋ น์ผ๋ก ์ถ๋ ฅํจ์๋ฅผ ์ฝ๋ฉํ๊ฒ ์ฃ .
์ข ํฉํด๋ณด๋ฉด,
#include
Servo servo;
const byte servoPin = 7;
const byte redPin = 13;
const byte greenPin = 11;
const byte bluePin = 9;
int index_pin, index_state;
int pin, state;
int index_servo, angle;
void setup()
{
Serial.begin(9600);
pinMode(redPin,OUTPUT);
pinMode(greenPin,OUTPUT);
pinMode(bluePin,OUTPUT);
servo.attach(servoPin);
servo.write(0);
delay(1000);
}
void loop()
{
if(Serial.available()){
String inString = Serial.readStringUntil('\n');
char ch = inString.charAt(0);
switch(ch){
case 'a':
index_pin = inString.indexOf(',');
index_state = inString.length();
pin = inString.substring(1, index_pin).toInt();
state = inString.substring(index_pin+1,index_state).toInt();
LedOutput(pin,state);
break;
case 'b':
index_servo = inString.length();
angle = inString.substring(1, index_servo).toInt();
ServoOutput(angle);
break;
}
}
}
void LedOutput(int pin, int state){
digitalWrite(pin, state);
}
void ServoOutput(int angle){
servo.write(angle);
}
๋ถํ 2๊ฐ๋ฅผ ์๋ฆฌ์ผํต์ ์ ํตํด์ ์ ์ดํด ๋ณด๋ ๊ฐ๋จํ ์ฝ๋ฉ์ ๋๋ค. ์ฌ๋ฌ ๋ถํ์ ์ ์ดํ ๋๋ switch๋ฌธ์ ์ด์ฉํ์ฌ ์ฌ๋ฌ๊ฐ์ ํจํด ๋ฌธ์์ด์ ๋ํ ์ฒ๋ฆฌ ๋์์ ์ฝ๋ฉ์ ํํํ์๋ฉด ๋ค์์ ๋ถํ์ ์ ์ดํ ์ ์์ต๋๋ค.
์ ์ฝ๋ฉ์ด ์ค์ ๋ก ๋์ํ๋์ง ๊ฐ์์๋ฎฌ๋ ์ดํฐ๋ก ๋๋ ค ๋ณผ๊น์.
์ค๋น๋ฌผ : LED 3๊ฐ, ์ ํญ 220์ด 3๊ฐ, Servo Motor 1๊ฐ, ์๋์ด๋
ธ์ฐ๋
ธ
๋ด์ฉ : LED์ 13, 11, 9๋ฒ ํ์ ์ฐ๊ฒฐํ๊ณ Servo Motor์ 7๋ฒํ์ ์ฐ๊ฒฐํ์์ค.
LEDํ์ 12,11,10์ด๋ ๊ฒ ํ์
๋ ๋ฉ๋๋ค. ์ฌ์ค ํ๋ก๋์ ๋ฐฐ์ ์ ๊ฐ์์๋ฎฌ๋ ์ดํฐ์์ ๋์์ธํ ๋ ์ต์ํ ํ๊ธฐ ์ํด์ ํ์นธ์ฉ ๋์์ ์ฐ๊ฒฐํ๋ค์.
LED์ Servo Motor์ ๋ํ ๋ช ๋ น์ ์๋ฆฌ์ผ ํต์ ์ ํตํด ํจํด ๋ฌธ์์ด์ ์๋์ด๋ ธ์ ๋ณด๋ด๊ณ ๊ทธ ๋ช ๋ น๋ค์ ์๋์ด๋ ธ๊ฐ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ๊ฐ๋จํ ํ ์คํธ ํ์ต๋๋ค.
์ค๋์ ๋ค์์ ํจํด ๋ฌธ์์ด์ ๋ง๋ค๊ณ ๊ฐ ๋ฌธ์์ด์ ๋ง๋ ๋์์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ ์ดํด ๋ณด์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ด๋์๋ค๊ฐ ์ธ๊น์. ๊ฐ๋ น, ๋ค์ํ ๋ถํ๋ค์ ํต์ ์ ํตํด ํ๊บผ๋ฒ์ ์ ์ดํ ํ ๋ ์ ์ฉํฉ๋๋ค. ์ฆ, ๋ค์ํ ๋ช ๋ น์ ๋ฌธ์์ด๋ก ์๋์ด๋ ธ๋ก ์ ์ก์ ํ๊ฒ ๋๋ฉด ๊ฐ ๋ฌธ์์ด์ ๋ช ๋ น๋ค์ ์๋์ด๋ ธ๊ฐ ์๋ณํ๊ณ ํด๋น ๋ถํ์ ๋์ ๋ช ๋ น์ ๋ด๋ฆด ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์๋์ด๋ ธ๊ฐ ์น์๋ฒ์ ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ์์ํด ๋ด ์๋ค. ์น์๋ฒ์์๋ ์๋์ด๋ ธ๋ก "A ๋ชจํฐ๋ฅผ ๋๋ ค๋ผ!", "B ๋ถํ์ ์ ์์ ๊ณต๊ธํ๋ผ", "C ๋ถํ์ผ๋ก ์จ๋๋ฅผ ์ธก์ ํ์ฌ ์จ๋๋ฅผ ์๋ ค๋ฌ๋ผ!" ๋ฑ ๋ค์ํ ๋ช ๋ น์ ๋ด๋ฆฐ๋ค๊ณ ์์ํด ๋ด ์๋ค. ์๋์ด๋ ธ๋ ์ด๋ฐ ๋ค์ํ ๋ช ๋ น์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ ๊น์. ๋ฐ๋ก ์ค๋ ์๊ฐํ ๋ฐฉ์์ผ๋ก ๋ค์ํ ๋ช ๋ น ํจํด๋ฌธ์์ด๋ก ๋ณด๋ด์ค๊ณ ๊ทธ ๋ฌธ์์ด์ ์์์ ์ฝ๋ฉํ๋ ๋ฐฉ์์ผ๋ก switch๋ฌธ์ ํตํด์ ๋ถ๋ฅํ์ฌ ์ ํํ๋ค๋ฉด ์ํ๋ ๋์์ ์ํ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
๊ฐ๋จํ ์๋ฆฌ์ง๋ง ํ์ฉ๋ ๋ฉด์์ ๊ฝค ์ ์ฉํ๋๊น ์ฐธ๊ณ ํด ์ฃผ์ธ์.