본문 바로가기

아두이노(arduino)

아두이노 가장 기본적인 예제 코드 / 회로도

아두이노를 이용한 간단한 코드 예제

아두이노를 이용해 많은 프로젝트들을 진행할 수있죠. 하지만 복잡한 프로젝트들도 간단한 프로젝트가 여럿이 모여야지 큰 프로젝트가 되겠죠?

 

오늘은 아두이노로 간단하게 제어하는 예제 코드들을 이용해 배우는 시간을 가져봅시다.

 

 

 

 

▶ LED 깜빡이기 / 예제코드

 

LED를 따로 연결해도 되지만 오늘은 아두이노에 내장되어있는 LED를 이용해 LED를 제어해보겠습니다.

아래 사진을 보시면 동그란 부분이 13번 핀에 연결된 LED인데 아래 코드를 이용해 해당 LED를 깜빡여보겠습니다.

 

 

 

const int LED_BUILTIN = 13

void setup() {

  pinMode(LED_BUILTIN, OUTPUT); // 내장 LED를 출력모드로 설정
}

void loop() {

  digitalWrite(LED_BUILTIN, HIGH); // 내장 LED를 켬
  delay(1000);                     // 1초 대기
  digitalWrite(LED_BUILTIN, LOW);  // 내장 LED를 끔
  delay(1000);                     // 1초 대기

}

 

 

 

 

 

 

▶ 버튼신호 화면에 출력하기 / 예제코드

 

브레드 보드를 이용하는것이 수월하겠지만 그림으로 보여드리는것이기에 브래드 보느는 생략하고 보여드립니다. 2번 핀을 연결해 버튼을 누를때와 누르지 않을때의 값이 다르게 표현되는 것을 확인하실 수 있습니다.

 

 

const int buttonPin = 2; // 버튼이 연결된 핀 번호

void setup() {
  pinMode(buttonPin, INPUT); // 버튼 핀을 입력 모드로 설정
  Serial.begin(9600);        // 시리얼 통신 시작
}

void loop() {
  int buttonState = digitalRead(buttonPin); // 버튼 상태 읽기
  Serial.println(buttonState);              // 상태를 시리얼 모니터에 출력
  delay(10);                                // 10ms 대기
}

 

 

 

 

 

 

 

▶가변저항의 정보 읽어서 시리얼 모니터에 출력 /  예제코드

 

가변저항의 양쪽은 음극 양극 바꿔도 상관없습니다. 가운데 신호선만 바로 꽂으시면 됩니다.

 

 

 

const int analogPin = A0; // 아날로그 입력 핀 번호

void setup() {
  Serial.begin(9600); // 시리얼 통신 시작
}

void loop() {
  int sensorValue = analogRead(analogPin); // 아날로그 값을 읽기
  Serial.println(sensorValue);             // 값을 시리얼 모니터에 출력
  delay(10);                               // 10ms 대기
}

 

 

 

 

 

▶ LED 밝기 천천히 밝아지고 천천히 어두워지기  / 아날로그 출력 / 예제코드

 

제일 처음 예제처럼 그냥 단순히 켜졌다 꺼졌다고 할 수있지만 이번에는 led가 천천히 어두워지고 밝아지고를 반복하는 코드를 작성해서 테스트 해보겠습니다.

저항의 위치도 음극 양극 원하는곳에 해도 상관은 없습니다.

 

ED 아날로그 출력은, 실제로는 아날로그가 아닌 디지털 PWM(Pulse Width Modulation) 방식을 사용해 밝기를 조절합니다. PWM은 전압을 빠르게 켜고 끄며, 이 과정에서 LED의 밝기를 인식적으로 아날로그처럼 조절할 수 있게 해줍니다. 이 방식으로 다양한 밝기를 쉽게 구현할 수 있어요.

 

 

const int ledPin = 9; // LED가 연결된 핀 번호

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

void loop() {
  for (int brightness = 0; brightness <= 255; brightness++) {
    analogWrite(ledPin, brightness); // LED 밝기 조절
    delay(5);                         // 5ms 대기
  }

  for (int brightness = 255; brightness >= 0; brightness--) {
    analogWrite(ledPin, brightness); // LED 밝기 조절
    delay(5);                         // 5ms 대기
  }
}

 

 

 

 

 

 

▶ 서보모터 원하는 각도로 움직이고 속도 제어해보기  / 예제코드

 

서보모터 제어는 아두이노를 사용해 간편하게 할 수 있습니다. 각도를 설정하여 정확한 위치로 회전시킬 수 있죠. 아두이노의 PWM 핀에 연결하고, 전용 라이브러리(Servo.h)를 사용해 각도를 지정하면 손쉽게 원하는 방향으로 서보모터를 제어할 수 있어요. 이를 활용해 다양한 프로젝트를 구현할 수 있습니다.

 

 

 

 

#include <Servo.h> // 서보 라이브러리 포함

Servo myservo; // 서보 객체 생성
int servoPin = 9; // 서보 모터가 연결된 핀 번호

void setup() {
  myservo.attach(servoPin); // 서보 핀을 설정
}

void loop() {
  for (int pos = 0; pos <= 180; pos += 1) { // 0도에서 180도까지
    myservo.write(pos); // 서보 모터 각도 설정
    delay(15); // 약간의 지연
  }
  for (int pos = 180; pos >= 0; pos -= 1) { // 180도에서 0도까지
    myservo.write(pos); // 서보 모터 각도 설정
    delay(15); // 약간의 지연
  }
}

 

 

 

 

 

 

 

▶ 초음파 거리를 이용해 거리 측정해보기  / 예제코드

초음파 센서를 이용한 코드는 거리 측정에 사용됩니다. 트리거 핀에서 초음파를 발사한 후, 에코 핀에서 반사된 신호를 받아 시간을 측정해요. 이 시간을 이용해 거리를 계산하며, 아두이노를 통해 실시간으로 객체와의 거리를 파악할 수 있습니다. 이를 통해 로봇이나 장애물 감지 시스템 등에 활용할 수 있어요.

 

 

 

 

 

const int trigPin = 2; // 트리거 핀 번호 설정
const int echoPin = 3; // 에코 핀 번호 설정

void setup() {
  pinMode(trigPin, OUTPUT); // 트리거 핀을 출력 모드로 설정
  pinMode(echoPin, INPUT); // 에코 핀을 입력 모드로 설정
  Serial.begin(9600); // 시리얼 통신 시작
}

void loop() {
  digitalWrite(trigPin, LOW); // 트리거 핀을 LOW로 설정
  delayMicroseconds(2); // 2 마이크로초 대기
  digitalWrite(trigPin, HIGH); // 트리거 핀을 HIGH로 설정
  delayMicroseconds(10); // 10 마이크로초 대기
  digitalWrite(trigPin, LOW); // 트리거 핀을 다시 LOW로 설정

  long duration = pulseIn(echoPin, HIGH); // 에코 핀에서 HIGH 시간 측정
  float distance = duration * 0.0344 / 2; // 거리 계산 (시간 x 속도 / 2)

  Serial.print("Distance: "); // 거리 출력
  Serial.print(distance);
  Serial.println(" cm");
  delay(1000); // 1초 대기
}

 

 

 

 

 

▶ 온습도 센서 이용해서 온습도 측정해보기  / 예제코드

온습도 센서는 주변 환경의 온도와 습도를 측정하는 데 사용됩니다. DHT11, DHT22와 같은 센서들이 널리 사용되며, 아두이노와 연결해 쉽게 데이터를 얻을 수 있습니다. 이를 통해 실내 기후 모니터링, 스마트 홈 오토메이션 등 다양한 프로젝트를 구현하고, 생활 환경을 개선할 수 있습니다.

 

 

생김세가 조금 다를 수도 있는데 구매하신 온습도 센서의 페이지에 회로도가 나와있을겁니다. 보통 5v, gnd연결하시고 나머지 핀하나를 신호핀에 연결하시면 됩니다.

 

 

 

 

#include <DHT.h> // DHT 라이브러리 포함

#define DHTPIN 2 // DHT 센서가 연결된 핀 번호
#define DHTTYPE DHT11 // DHT 타입 (DHT11 또는 DHT22)

DHT dht(DHTPIN, DHTTYPE); // DHT 객체 생성

void setup() {
  Serial.begin(9600);
  dht.begin(); // DHT 센서 초기화
}

void loop() {
  float humidity = dht.readHumidity(); // 습도 읽기
  float temperature = dht.readTemperature(); // 온도 읽기 (섭씨)

  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" *C");

  delay(2000); // 2초 대기
}