공부중

[Arduino] PIN 출력 실습 본문

프로그래밍/Arduino

[Arduino] PIN 출력 실습

복습 2025. 1. 22. 01:17
728x90

 

 

1. 아두이노 내장 13번 PIN LED 출력 

 

#define LED_PIN 13  // LED가 연결된 핀 번호

void setup() {
  pinMode(LED_PIN, OUTPUT);  // LED 핀을 출력 모드로 설정
}

void loop() {
  digitalWrite(LED_PIN, HIGH);  // LED 켜기
  delay(1000);                  // 1초 대기
  digitalWrite(LED_PIN, LOW);   // LED 끄기
  delay(1000);                  // 1초 대기
}

 

딜레이안에 있는 숫자는 ms 단위이다. 

 

13번 led가 켜지기는 하지만 13번 pin 출력이기 때문에 led를 연결해도 출력되는걸 확인할 수 있다. 

 



 

 

 

 

2. pin 출력 

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

void loop() {
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);
    digitalWrite(7, HIGH);
    delay(1000);
    
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);
    delay(1000);
}

 

 

 

 

 

 

 

 

 

3. LED 출력 예제 

// • 시리얼 모니터 입력으로 LED 를 제어하는 프로그램 작성
//     시리얼 통신으로 1 을 보내면 첫번째 LED 가 켜짐
//     숫자 1~4 를 보내서 LED 4 개를 제어
//     숫자 5 를 보내면 4 개 다 켜지게 함
//     숫자 0을 보내면 모든 LED 끔.

 

 

 
#define PIN1 4  // LED가 연결된 핀 번호
#define PIN2 5  // LED가 연결된 핀 번호
#define PIN3 6  // LED가 연결된 핀 번호
#define PIN4 7  // LED가 연결된 핀 번호

void setup() {
  // put your setup code here, to run once:
  pinMode(PIN1, OUTPUT);
  pinMode(PIN2, OUTPUT);
  pinMode(PIN3, OUTPUT);
  pinMode(PIN4, OUTPUT);

  // 시리얼 통신 초기화
  Serial.begin(9600);

}

void loop() {
  // put your main code here, to run repeatedly:
  if (Serial.available() > 0) {
    char data = Serial.read();

    if (data == '1') {
      digitalWrite(PIN1, HIGH);
    }

    if (data == '2') {
      digitalWrite(PIN2, HIGH);
    }

    if (data == '3') {
      digitalWrite(PIN3, HIGH);
    }

    if (data == '4') {
      digitalWrite(PIN4, HIGH);
    }

    if (data == '5') {
      digitalWrite(PIN1, HIGH);
      digitalWrite(PIN2, HIGH);
      digitalWrite(PIN3, HIGH);
      digitalWrite(PIN4, HIGH);
    }


    if (data == '0') {
      digitalWrite(PIN1, LOW);
      digitalWrite(PIN2, LOW);
      digitalWrite(PIN3, LOW);
      digitalWrite(PIN4, LOW);

    }
  }
 
    
}

 

 

 

 

* 실수들 정리 

- Serial.read()는 ASCII 값을 반환합니다. 따라서 숫자 1, 2, 3 등과 비교하려면 문자 '1', '2', '3' 등으로 비교해야 합니다.

- data 변수를 if (Serial.available() > 0) 블록 안에서 선언했기 때문에, 그 외의 조건문에서는 접근할 수 없습니다. 전역 변수로 선언하거나, loop 함수 안에서 범위를 확장해야 합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90