티스토리 뷰
// 터미널 창을 통해 값을 전달 하여 LED 제어
int ledPin = 12;
int incomingByte = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0) {
incomingByte = Serial.read();
Serial.print("incomingByte = ");
Serial.println(incomingByte);
if(incomingByte == '1') {
digitalWrite(ledPin, HIGH);
}else if(incomingByte == '0') {
digitalWrite(ledPin, LOW);
}
}
}
//serialEvent 사용
//하드웨어 interrupt -> 코드로 구현 시 해당 이벤트 사용 불가
int ledPin[] = {10, 11, 12};
int incomingByte = 0;
void setup() {
for(int i = 0; i < 3 ; i++) {
pinMode(ledPin[i], OUTPUT);
digitalWrite(ledPin[i], LOW);
}
Serial.begin(9600);
}
void loop() {
}
void serialEvent() {
incomingByte = Serial.read();
if(incomingByte >= 48 && incomingByte <= 53) { // 0~5
boolean ledFlag = incomingByte % 2 == 0 ? LOW : HIGH;
digitalWrite(ledPin[(incomingByte - 48) / 2], ledFlag);
}
}
//아누이노 2개 UART 통신
//전위차가 같도록 그라운드를 같이 사용한다.
// softwareserial include
// serial.read() 는 한번 읽고 난 버퍼는 비운다 주의!!
#include <softwareserial.h>
// SoftwareSerial(RXD PIN, TXD PIN)
SoftwareSerial SWSerial(2, 3);
const int MAX_DATA_LNEGTH = 5;
int count = 0;
byte getSerialData[MAX_DATA_LNEGTH];
void setup() {
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
Serial.begin(9600);
SWSerial.begin(9600);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
}
void loop() {
if(SWSerial.available() > 0) {
getSerialData[count] = SWSerial.read();
if(getSerialData[0] == 'A') count++;
if(count > 4) {
count = 0;
getSerialData[0] = 0;
if(getSerialData[4] == 'Z') {
getSerialData[4] = 0;
digitalWrite(10, getSerialData[1] - 48);
digitalWrite(11, getSerialData[2] - 48);
digitalWrite(12, getSerialData[3] - 48);
}
}
}
if(Serial.available() > 0) {
SWSerial.write(Serial.read());
}
}
'IT > Arduino' 카테고리의 다른 글
| 아두이노 교육3일차 CDS(조도센서)를 이용한 LED 제어 (0) | 2014.08.23 |
|---|---|
| 아두이노 교육2일차 아날로그 신호 제어 (0) | 2014.08.16 |
| 아두이노 교육2일차 FND(Flexible Numeric Display) 제어 (0) | 2014.08.16 |
| 아두이노 교육2일차 외부인터럽트 (0) | 2014.08.16 |
| 아두이노 교육1일차 스위치로 LED 점멸 (0) | 2014.08.09 |
댓글