[디지털 입출력 관련 함수]

 

setup()과 loop()에 관련된 설명은 다른 페이지에서 하고 있는 관계로 쓰지 않았습니다.

 

* pinMode()

 

  - 아두니오의 디지털 핀을 입력(INPUT)을 감지하기 위해 쓸것인지 출력(OUTPUT)으로 쓸 것인지 사용하기 전에 알려주는 역할

 

  - 간단하게 말하면, 디지털 핀의 모드 설정하는 함수(초기화 함수)

 

  - LED와 같은 경우 OUTPUT으로 주로 설정하고, 스위치와 같은 경우 INPUT으로 주로 설정

 

  - 사용법 : pinMode( 핀_번호, 모드) - 핀_번호 : 디지털 핀의 번호(아두이노 상), 모드 : INPUT & OUTPUT 중 설정

 

  - 위 함수는 setup() 함수에서 초기화할 때 사용됨.

 

 

* digitalWrite()

 

  - 디지털 출력을 제어하는 함수

 

  - 사용법 : digitalWrite(핀_번호, 출력_상태) - 핀_번호 : 디지털 핀 번호, 모드 : HIGH & LOW 중 설정

 

  - 아두이노 내부에서는 1, 0 숫자와 HIGH, LOW를 동일시함.

 

  - 프로그램 내에서  '1' 은 TRUE(참), '0' 은 FALSE(거짓)을 의미하고, 회로 상에서 HIGH는 5V(ON) 상태를 의미하고, LOW는 0V(OFF) 상태를 의미함.

 

 

* delay()

 

  - 시간을 지연시켜주는 함수

 

  - 사용법 : delay(시간) - 시간 : ms(1/1000)의 단위

 

  - 시간을 ms 단위로 계산하여 계산된 시간만큼 쉬게 함.

 

 

* digitalRead()

 

  - 디지털 입력 감지

 

  - 사용법 : digitalRead(핀_번호)

 

  - 해당 핀_번호의 입력 상태를 체크해서 HIGH 또는 LOW의 값을 반환함.

 

[스케치 프로그래밍 함수]

 

* setup()

 

  - 아두이노에 전원을 넣어주면 가장 먼저 실행하는 함수

 

  - 가장 먼저 작업 수행

 

  - 한 번만 실행

 

  - 세팅에 필요한 작업들(초기화하는 작업)을 수행하기에 적합

 

 

* loop()

 

  - 아두이노에 전원이 넣어져 있을 때 무한 반복 호출

    (아두이노가 종료되거나 리셋될 때까지 반복)

 

  - 계속적으로 반복해야 하는 작업들 수행

 

  - 사용자 정의 함수 호출

 

 

* 사용자 정의 함수

 

  - 출력할_데이터_타입 함수_이름(입력할_데이터_타입) {  처리할 내용   } 의 형식으로 작성

 

  - 출력할_데이터_타입(함수 종료시 내보낼 자료의 형태, 자료형), 입력할_데이터_타입(함수 실행에 필요한 데이터 타입과 데이터)

 

  - 작성 위치는 setup() 과 loop() 함수 바깥에서 작성

[Bluetooth를 이용한 LED 켜기]

 

* Bluetooth & LED 회로

 

 

 

* Bluetooth 소스

#include<SoftwareSerial.h> 

int TxPin = 2;
int RxPin = 3;
int ledPin = 13;
SoftwareSerial BTSerial(TxPin, RxPin);

void setup() {
  BTSerial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (BTSerial.available()) {
    char cmd = (char)BTSerial.read();

    if (cmd == '1')
      digitalWrite(ledPin, HIGH);
    else
      digitalWrite(ledPin, LOW);
  }
}

 

* Bluetooth로 LED 제어하기

 

1. 안드로이드 Play스토어에서 "bluetooth controller"를 검색하고 "블루투스 컨트롤" 어플을 설치한다.

 

 

2. 어플에서 ① 장치 검색하여 장치와 연결

               ② 키설정에 들어가서 [키이름, 데이터 설정]을 입력하고 OK를 누른다. (키이름과 데이터 설정에는 각각 [켜기, 1],[끄기, 0]을 입력)

               ③ 그 후에 켜기 버튼과 끄기 버튼을 눌러 LED가 켜지고 꺼지는 것을 확인한다.

 

              

 

 

[초음파센서로 삼색 LED 출력하기]

 

* 초음파 회로도

 

 

* 초음파센서 소스

 

#define TRIG 2
#define ECHO 3
#define RED 11
#define GREEN 10
#define BLUE 9

void setup() {
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
}

void loop() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);

  long distance = pulseIn(ECHO, HIGH)/58.2;

  analogWrite(RED, 0);
  analogWrite(GREEN, 0);
  analogWrite(BLUE, 0);

  if(distance < 10)
    analogWrite(RED, 255);
  else if(distance < 20)
    analogWrite(GREEN, 255);
  else
    analogWrite(BLUE, 255);

  delay(100);
}

 

[LCD 출력하기]

 

* LCD 회로도 1

 

 

* LCD 회로도 2

 

 

* LCD 소스

#include<LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5,  4, 3, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.print("hello, world!");
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print(millis()/1000);
}

 

[Switch를 이용한 LED 제어하기]

 

* Switch와 LED 제어

 

 

* 소스

int b = 7;
int led = 12;
int led2 = 13;

void setup(){
  pinMode(b, INPUT);
  pinMode(led, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop() {
  if(digitalRead(b) == HIGH) {
    	digitalWrite(led, HIGH);
      	digitalWrite(led2, LOW);
      	delay(500);
      	digitalWrite(led, LOW);
      	digitalWrite(led2, HIGH);
      	delay(500);
    	digitalWrite(led2, LOW);
  }
}

 

 

* 스위치 구조

 

 

 - 위의 그림과 회로와 같이 푸시버튼의 구조는 왼쪽 위(1), 왼쪽 아래(2), 오른쪽 위(3), 오른쪽 아래(4)를 기준으로 1번과 2번, 3번과 4번이 연결되어 있는 형태 (푸시버튼의 모델마다 회로는 다를 수 있음)

 

  - 사용할 때는 서로 떨어진 다리를 이용하여 사용함. (1번과 3번, 1번과 4번, 2번과 3번, 2번과 4번)

 

  - 회로의 연결시 버튼이 5V와 GND 모두에 연결되어 쇼트 상황이 나올 수 있어서 저항을 사용하여 풀다운 역할을 하게 함.

 

    = 풀다운 저항 : 버튼이 눌리지 않았을 때 회로를 낮은 상태(GND, 0V)로 묶어주는 저항

  

    = 풀업 저항 : 풀다운 저항과 반대로 버튼이 눌리지 않았을 때 회로를 높은 상태(HIGH, 5V)로 묶어주는 저항

[LED 제어하기]

 

* LED 회로도(브레드보드)

 

 

* LED 소스

int led = 7;

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  digitalWrite(led, HIGH);
  delay(500);
  digitalWrite(led, LOW);
  delay(500);
}

 

-> LED를 제어할 핀 번호를 전역변수를 지정하고, setup() 함수에서 pinMode() 메소드로 핀번호의 입출력을 출력형태로 설정합니다.

-> loop() 함수에서 digitalWrite()를 이용하여 LED를 ON, OFF로 번갈아가며 출력합니다.

-> delay()를 이용하여 잠시 프로그램을 기다리게 합니다.

+ Recent posts