이번엔 LED Shield, Switch Shield를 이용해서 입력, 출력에 대한 제어 실습을 해보려고 합니다.
이전 환경설정에 맞추어 준비해줍니다.
우선 LED Shield를 이용해서 디지털 출력을 해보겠습니다.
위의 그림과 같이 연결해주면 됩니다!
맞게 연결되었나 확인하기 위해서 1번 LED를 ON&OFF하는 간단한 실습을 진행해보았습니다.
void setup() {
// 5번 Digital Port를 디지털 출력으로 설정
pinMode(5, OUTPUT);
}
void loop() {
// digital port 5에 low 인가 -> ON
digitalWrite(5,0);
delay(1000);
// digital port 5에 high 인가 -> OFF
digitalWrite(5,1);
delay(1000);
while(false);
}
위와 같이 코드를 작성하고 컴파일-> 업로드 하면 !
1초 단위로 1번 LED가 깜빡이는것을 확인할 수 있습니다. ㅎㅎ....
이를 응용하면 원하는 순서대로 LED를 ON/OFF 시키는 등의 제어가 가능합니다.
아래 코드는 LED를 5->9->6->10->7->11->8->12의 순서로 ON시키는 코드입니다.
void setup() {
// digital port 5번부터 12번까지 디지털 출력으로 설정:
for(int i=5; i<13; i++){
pinMode(i, OUTPUT);
}
}
void loop() {
// default OFF 상태로 만들기
for(int i=5; i<13; i++){
digitalWrite(i, 1);
}
// 주어진 순서대로 on하기
int arr[8] = {5, 9, 6, 10, 7, 11, 8, 12};
for(int i=0; i<8; i++) {
digitalWrite(arr[i], 0);
delay(500);
}
}
이번에는 Switch Shield를 이용해서 digital 신호의 0,1을 받아보겠습니다.
위의 LED shield와 같은 방법으로 연결!
void setup() {
Serial.begin(9600);
// 5 port를 input mode로
pinMode(5, INPUT);
}
void loop() {
if (digitalRead(5) == LOW) {
Serial.println("Button 1 is on");
}
delay(200);
}
1번 스위치 누를때마다 맞게 출력된다.
마찬가지로 응용가능. ,
void setup() {
Serial.begin(9600);
// 5~12 port를 input mode로
for (int i=5; i<13; i++) {
pinMode(i, INPUT);
}
}
void loop() {
for (int i=5; i<13; i++) {
if (digitalRead(i) == LOW) {
Serial.print("Button ");
Serial.print(i-4);
Serial.println(" is on");
}
}
delay(200);
}
delay(200)을 한 이유는 스위치 누르는 시간 동안 모두 루프를 돌아서 적당히 0.2초 정도의 delay를 줬습니다.
앞으로 LED & Switch Shield, 7-Segment Shield 등 다양한 실드로 실습해보겠습니다,,
뚝딱뚝딱 만드니까 진짜 공대생된거같고,, 마치 논리회로 듣던 2학년때로 돌아간 것 같아서 즐거운 아두이노 시간 ,,~