이번 실험은 버튼에 의한 URAT 통신을 이용한 원격제어 실험이다.

int pin_switch1 = 13;
int pin_switch2 = 12;
int pin_LED1 = 8;
boolean buttonState1=false;
boolean buttonState2=false;
boolean buttonState3=false;
boolean buttonSwitch1_State_old=false;
boolean buttonSwitch2_State_old=false;
void setup() {
Serial.begin(9600);
Serial.print("Sketch: "); Serial.println("__파일__");
Serial.print("Uploaded: "); Serial.println("__날짜__");
Serial.println(" ");
pinMode(pin_LED1, OUTPUT);
pinMode(pin_switch1, INPUT);
pinMode(pin_switch2, INPUT);
}
void loop() {
buttonState1=digitalRead(pin_switch1); delay(1);
buttonState2=digitalRead(pin_switch1);delay(1);
buttonState3=digitalRead(pin_switch1);delay(1);
if((buttonState1 == buttonState2)&& (buttonState1 == buttonState3)){
if (buttonState1 != buttonSwitch1_State_old){
buttonSwitch1_State_old = buttonState1;
if(buttonSwitch1_State_old == HIGH){
Serial.write(1);
}
else{
Serial.write(0);
}
}
}
buttonState1=digitalRead(pin_switch2); delay(1);
buttonState2=digitalRead(pin_switch2);delay(1);
buttonState3=digitalRead(pin_switch2);delay(1);
if((buttonState1 == buttonState2) && (buttonState1 == buttonState3)){
if (buttonState2 != buttonSwitch2_State_old){
buttonSwitch2_State_old = buttonState2;
if(buttonSwitch2_State_old == HIGH){
Serial.write(3);
}
else{
Serial.write(2);
}
}
}
}
digitalRead()함수를 이용하여 스위치 상태(HIGH 혹은 LOW)값을 읽어 들인다. 스위치의 상태가 이전과 다르다면 현재의 스위치 상태(buttonState1)를buttonSwitch1_State_old에 저장한다. 그리고buttonSwitch1_State_old가 HIGH이면 UART를 통해 1을 전송하며, 그렇지 않을 경우 0을 전송한다. 스위치 2에서는buttonState2와buttonSwitch2_State_old가 같지 않을 경우buttonState2를buttonSwitch2_State_old에 저장한다. 그리고buttonSwitch2_State_old가 HIGH일 경우 UART를 통해 3을 전송하며 그렇지 않을 경우 2를 전송한다.
int pin_LED1 = 13;
int pin_LED2 = 12;
int received_data = 5;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.print("Sketch: "); Serial.println("__파일__");
Serial.print("Uploaded: "); Serial.println("__날짜__");
Serial.println("START!! ");
pinMode(pin_LED1, OUTPUT);
pinMode(pin_LED2, OUTPUT);
}
void loop() {
if(Serial.available()){
received_data = Serial.read();
if(received_data == 0){
digitalWrite(pin_LED1,LOW);
Serial.println("Received Data 0");
}
if(received_data == 1){
digitalWrite(pin_LED1, HIGH);
Serial.println("Received Data 1");
}
if(received_data == 2){
digitalWrite(pin_LED2, LOW);
Serial.println("Received Data 2");
}
if(received_data == 3){
digitalWrite(pin_LED2, HIGH);
Serial.println("Received Data 3");
}
}
}
Serial.available()를 이용하여Serial버퍼에 데이터가 있으면Serial.read()함수를 이용하여 데이터를 읽은 후received_data에 저장한다.received_data가 1인 경우는 LED1를 ON시키며, 2인 경우 LED2를 ON 시킨다.

