[2023/09/03] First Start.
소나무 기운 , 전자제품 개발/생산
아두이노 핀 번호 부여방법 두가지.
아두이노에서 핀 번호를 부여하는 방법은 두 가지가 있습니다.
하나는 모듈의 물리적인 핀 번호를 사용하는 방법이고, 다른 하나는 아두이노 보드에 적힌 글씨에 따라 핀을 식별하는 방법입니다.
1. 모듈의 물리적인 핀 번호 사용: 이 방법은 아두이노 모듈의 실제 물리적인 핀 번호를 사용하여 각 핀을 제어합니다.
예를 들어, 아두이노 UNO 보드의 경우 디지털 입력/출력을 위한 14개의 디지털 핀과 아날로그 입력을 위한 6개의 아날로그 핀 등 총 20개의 GPIO(General Purpose Input/Output) 핀이 있습니다. 이러한 GPIO 핀들은 숫자로 표시되며, `digitalWrite()`와 `analogRead()` 함수 등으로 해당 번호를 사용하여 제어할 수 있습니다.
2. 적힌 글씨에 따른 IO10 등 사용: 일부 아두이노 보드는 각각의 GPIO 핀 옆에 해당하는 기능 이름(예: "IO10", "A0" 등)을 표시합니다. 이러한 이름은 해당 기능에 대한 약속된 명칭으로, 특정 용도로 예약되어 있는 경우가 많습니다. 예를 들어, "IO10"은 디지털 입출력(Digital I/O)용으로 예약되고, "A0"은 아날로그 입력용으로 예약되어 있습니다. 이런 경우에는 `digitalWrite()`와 `analogRead()` 함수 대신 해당 이름을 사용하여 제어할 수 있습니다.
즉, 어느 방식을 선택하느냐는 주로 개발자의 선호도와 프로젝트 요구사항에 달려있습니다.
일반적으로 초기 개발 단계에서는 모듈의 물리적인 핀 번호를 사용하여 개발하다가 필요에 따라 기능 이름을 활용할 수도 있습니다.
물리적인 핀 번호를 사용하는 예제
const int ledPin = 13; // LED가 연결된 물리적인 핀 번호
void setup() {
pinMode(ledPin, OUTPUT); // LED 핀을 출력으로 설정
}
void loop() {
digitalWrite(ledPin, HIGH); // LED 켜기
delay(1000); // 1초 대기
digitalWrite(ledPin, LOW); // LED 끄기
delay(1000); // 1초 대기
}
위의 예제에서는 아두이노 UNO의 디지털 핀 중 하나인 13번을 ledPin으로 정의하고, pinMode() 함수로 해당 핀을 출력으로 설정한 후에 digitalWrite() 함수로 LED를 켜고 끄는 동작을 반복합니다.
기능 이름을 사용하는 예제
const int buttonPin = A0; // 버튼이 연결된 기능 이름
void setup() {
pinMode(buttonPin, INPUT); // 버튼 핀을 입력으로 설정
}
void loop() {
int buttonState = analogRead(buttonPin); // 버튼 상태 읽기
if (buttonState > 512) { // 버튼이 눌렸는지 확인
digitalWrite(LED_BUILTIN, HIGH); // 내장 LED 켜기
} else {
digitalWrite(LED_BUILTIN, LOW); // 내장 LED 끄기
}
}
위의 예제에서는 아두이노 UNO의 아날로그 입력 중 하나인 A0를 buttonPin으로 정의하고, pinMode() 함수로 해당 핀을 입력으로 설정한 후에 analogRead() 함수로 버튼 상태를 읽어와서 조건문으로 처리합니다. 버튼이 눌려있으면 내장 LED가 켜지고 그렇지 않으면 꺼집니다. 여기서 내장 LED는 아두이노 UNO 보드에 기본적으로 탑재되어 있는 LED입니다.
마무리
위의 예제들은 간단한 입출력 동작만 보여주는 것이므로 전체 코드가 아니며, 실제 프로젝트에서는 추가적인 초기화 및 제어 로직 등이 필요할 수 있습니다.
참고문헌
틀린 부분이나 질문은 댓글 달아주세요.
즐거운 하루 보내세요. 감사합니다.
'Arduino' 카테고리의 다른 글
C, C++, ino 파일 서로 섞어 쓰기. (0) | 2023.02.26 |
---|---|
ESP8266, ESP32( S2, S3, C2, etc ) Series (0) | 2023.02.12 |
[M5Stack] ESP32 reset (software) 방법 (0) | 2021.06.16 |
[PlatformIO] PlatformIO가 궁금하다. (1) | 2021.01.24 |
[TB-I2C] IR 온도센서 (적외선) 사용하기 (0) | 2020.12.18 |
댓글