arduino port manipulation

2018. 7. 20. 23:11HARDWARE/Arduino

Arduino의 기본 코드는 홈페이지에 너무나도 자세히 나와 있으므로 참고 하시기 바랍니다.

Arduino의 포트 설정의 다른 방법에 대해 알아보겠습니다. 보통 Arduino에서 핀의 입출력 상태를 설정할 때 pinMode( ) 라는 명령어를 사용합니다. 하지만 Arduino에서도 C언어나 어셈블리 처럼 DDR 명령어가 적용됩니다.
 
먼저 포트와 핀과의 관계에 대해 정리하면 다음과 같습니다.

B (digital pin 8 to 13)
C (analog input pins)
D (digital pins 0 to 7)

port B 에는 8~13핀, port C 에는 analog 핀, port D 에는 0~7핀 까지가 지정되어 있습니다. 

명령어는 다음과 같습니다.

DDRD - The Port D Data Direction Register - read/write
PORTD - The Port D Data Register - read/write
PIND - The Port D Input Pins Register - read only

1. DDR

void setup( ) 안에 

DDRD = B11111110;

라고 선언을 해주면 0번 pin 은 input, 1~7번 핀까지는 output 핀으로 선언한다는 뜻입니다. 앞에 B는 2진수(binary)로 선언한다는 의미입니다.

pinMode( 0,INPUT);
pinMode( 1,OUTPUT);
pinMode( 2,OUTPUT);
pinMode( 3,OUTPUT);
pinMode( 4,OUTPUT);
pinMode( 5,OUTPUT);
pinMode( 6,OUTPUT);
pinMode( 7,OUTPUT);

과 같은 의미가 되겠습니다.

2. PORT

다음은 void loop( ) 안에 

PORTD = B10101000

라고 명령어를 입력하면 0,1,2,4,6 핀은 LOW, 3,5,7 핀은 HIGH 상태가 됩니다. 

다시 말해

digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);

digitalWrite(7, HIGH);

과 같은 의미가 되겠습니다.

3. PIN

다음은 void loop( ) 안에 

a = PIND;

라고 선언을 해주면 port D에서 입력받은 상태를 숫자로 나타냅니다.

다음과 같이 입력이 들어와있다면 a는 4라는 숫자가 될 것입니다. 여러개의 센서를 사용하여 로직을 생성할때 굉장히 유용하게 쓰입니다.

[출처] Port manipulation|작성자 엠에스리


'HARDWARE > Arduino' 카테고리의 다른 글

아두이노 real-time structure  (0) 2018.07.20
arduino PWM 주파수 변경  (0) 2018.07.20
HC-06 블루투스 설정 / 문자열 전송  (0) 2018.07.20
l298n 모터 드라이버 가이드 참고 사이트  (0) 2018.07.20
serial 통신  (0) 2018.07.08