연구노트/아두이노 강좌

04장 디지털과 아날로그(digitalWrite/digitalRead, analogWrite/analogRead)

생존형수동개발자 2020. 12. 1. 01:04

디지털(Digital)

아두이노 우노의 디지털 핀 영역

  • 아날로그의 연속적인 실수가 아닌, 특정한 최소 단위를 갖는 이산적인 수치를 이용하여 처리하는 방법
  • 1(켜짐) 0(꺼짐)과 같이 1/0으로 이산적인 수치
  • 디지털 핀
    • 아두이노 우노에서는 DIGITAL 0~13까지 적혀있는 핀이 있는데 이 이 부분이 디지털 핀 영역이다.
    • 디지털핀을 input 또는 output으로 사용가능(Digital In / Digital out)

디지털 핀 초기화(pinMode)

  • 디지털 핀을 사용하려면 무조건 초기화를 해주고 사용해야 함.
pinMode(핀번호, 입/출력);

//13번 핀을 입력으로 설정
pinMode(13, INPUT);	//INPUT 대신 0 사용가능

//13번 핀을 출력으로 설정
pinMode(13, OUTPUT); //OUtPUT 대신 1 사용가능

디지털 핀 출력(digitalWrite)

HIGH LOW의 차이

  • HIGH / 1 = 5V 
  • LOW / 0 = 0V
  • LED의 회로가 위의 사진과 같이 연결되어 있다면 HIGH에서 LED의 불이 들어오고 LOW에서 불이 꺼진다.
digitalWrite(핀번호, H/L);

//13번 핀에 디지털 신호 High를 보낸다.
digitalWrite(13, HIGH); // HIGH 또는 1

//13번 핀에 디지털 신호 LOW를 보낸다.
digitalWrite(13, LOW); // LOW 또는 0

디지털 핀 입력(digitalRead)

스위치의 역할

  • 5V와 13번핀을 스위치로 연결하였을 때 스위치를 누르면 5V가 13번 핀으로 흐르게 되고 누르지 않는다면 13번 핀은 0V값을 가지게 된다.
  • digitalRead는 이런 스위치에 따른 HIGH / LOW 값을 읽을 수 있다.
//읽은 신호값을 저장할 변수
int a;
//13번 핀의 디지털 신호 읽기
a = digitalRead(13);
//a에는 HIGH 또는 LOW의 값이 들어가게 된다.

플로팅 현상

  • 디지털 핀을 입력으로 설정하면 입력 핀 주위에 아주 작은 전류가 흐르기 때문에 디지털 핀의 값이 HIGH / LOW에서 왔다갔다 하는 현상
  • 해결방법으로 전압을 LOW 또는 HIGH로 고정시켜줘야 한다.
    • 풀다운(Pull Down) : 전압을 LOW에 고정, 저항을 GND 쪽으로 연결
    • 풀업(Pull Up) : 전압을 HIGH에 고정, 저항을 VCC쪽으로 연결

풀업과 풀다운

아날로그

아두이노 우노 아날로그 핀 영역

  • 연속적으로 변하는 물리량(전압의 세기, 소리의 세기 등...), 연속적인 실수 형태로 나타낼 수 있다.
  • 아날로그 핀
    • A0~A5가 아날로그 핀 영역이다.
    • 전압의 크기를 읽을 때 사용
    • 아두이노 우노에서 아날로그 출력 핀을 디지털 핀 영역에 존재한다.
    • [~번호] 모양의 핀이 아날로그 출력(PWM)을 할 수 있는 핀이다.(0~5V)

아날로그 출력(analogWrite)

아날로그 출력

  • 아날로그 신호를 출력할 때 사용한다.
  • 0(0v)~255(5V) 출력 값으로 가능
//11번핀의 전압을 0V로 설정
analogWrite(11, 0);

//11번핀의 전압을 5V로 설정
analogWrite(11, 255);

//11번핀의 전압을 2.5로 설정
analogWrite(11, 127);

아날로그 입력(analogRead)

  • 아날로그의 신호 값을 읽는다.
  • 값은 0(0V)~1023(5V)까지 받을 수 있다.
//아날로그 신호 입력 값을 저장할 변수
int a;
//A0핀의 아날로그신호 값을 저장
a = analogRead(A0);
// a : 0(0V) ~ 1,023(5V)