아두이노(Arduino)
아두이노는 마이크로컨트롤러를 사용하여 만들어진 개발 보드입니다. 이 보드를 활용하면 단순한 로봇, 온도계, 습도계, 조명 제어, 모터 제어, 스마트 홈 등 다양한 제어 장치를 쉽고 간단하게 개발할 수 있는 환경을 제공합니다. 아두이노는 회로가 오픈소스로 공개되어 있어 누구나 보드를 만들 수 있습니다.
이제 아두이노의 기초를 자세히 알아보겠습니다:
- 아두이노 보드: 아두이노 프로젝트를 시작하기 위해서는 아두이노 보드가 필요합니다. 가장 기본적인 보드는 아두이노 우노(Uno)입니다. 이 보드에는 중요한 부품인 ATmega328p 마이크로컨트롤러가 내장되어 있습니다. 이 마이크로컨트롤러는 작고 네모난 아이로, 컴퓨터의 CPU와 비슷한 역할을 합니다. 마이크로컨트롤러는 컴퓨터의 CPU보다 한정된 기능을 수행하며, 하나의 IC로 집적된 반도체 소자입니다.
- 데이터 핀: 아두이노 보드에는 여러 개의 데이터 핀이 있습니다. 이 핀들은 마이크로컨트롤러의 다리에 연결되어 있으며, 외부 장치를 연결하여 동작시킬 수 있습니다. 예를 들어 LED, 스피커, 센서 등을 이 핀에 연결하여 프로젝트를 구현할 수 있습니다.
- 리셋 스위치: 아두이노 보드에는 리셋 스위치가 있습니다. 이 스위치를 누르면 보드를 리셋하여 처음부터 동작하게 할 수 있습니다.
- USB 커넥터: 아두이노 보드를 컴퓨터에 연결하기 위해 USB 커넥터를 사용합니다. 이 커넥터를 통해 아두이노가 동작하게 됩니다. 주의할 점은 일반적인 USB 커넥터와는 다른 종류의 커넥터를 사용한다는 점입니다. 만약 없다면 프린터의 USB 선을 잠시 빌려도 괜찮습니다.

- 아두이노 프로젝트 시작하기
- 아두이노 보드 선택:
- 가장 기본적인 보드로는 아두이노 우노(Uno)를 추천합니다. 이 보드는 초보자에게 적합하며, 다양한 프로젝트를 구현할 수 있습니다.
- 아두이노 IDE 설치:
- 아두이노 IDE (통합 개발 환경)를 다운로드하고 설치하세요. 이 IDE를 사용하여 아두이노 코드를 작성하고 업로드할 수 있습니다. 다운로드 링크
- USB 케이블 연결:
- 아두이노 보드를 컴퓨터에 연결하세요. USB 케이블을 사용하여 아두이노와 컴퓨터를 연결합니다.
- 간단한 예제 실행:
- 아두이노 IDE를 실행하고, 예제 코드 중 하나를 열어보세요. 예를 들어 “Blink” 예제는 LED를 깜빡이게 하는 간단한 프로그램입니다.
- 보드와 포트를 설정한 후, 코드를 업로드하세요. LED가 깜빡이는 것을 확인할 수 있을 것입니다.
- 센서와 모듈 연결:
- 다양한 센서와 모듈을 아두이노 보드에 연결하여 실험해보세요. 예를 들어 온도 센서, 조도 센서, 초음파 센서 등을 활용할 수 있습니다.
- 자신만의 프로젝트 시작:
- 아두이노를 활용하여 자신만의 프로젝트를 시작해보세요. 불이 깜빡이는 LED 조명, 온도 및 습도 측정 장치, 로봇 등 다양한 프로젝트를 만들 수 있습니다.
- 자료와 커뮤니티 활용:
- 아두이노 프로젝트에 관한 자료와 튜토리얼을 찾아보세요. 아두이노 커뮤니티는 도움이 될 수 있는 곳입니다. 아두이노 공식 포럼(https://forum.arduino.cc/)
Arduino Forum
Topics about Arduino boards, shields and kits
forum.arduino.cc
- 간단한 프로젝트
- LED 깜빡이기 (Blink):
- 가장 기본적인 예제로, LED를 깜빡이게 하는 프로그램을 작성해보세요. 이것은 아두이노의 기능을 확인하는 좋은 시작점입니다.
- 온도 및 습도 측정:
- DHT11 또는 DHT22 센서를 사용하여 주변 환경의 온도와 습도를 측정하는 프로젝트를 만들어보세요.
- 거리 측정:
- 초음파 센서를 활용하여 물체와의 거리를 측정하는 프로젝트를 시도해보세요. 이것은 로봇, 자동 문 개폐 시스템 등에 유용합니다.
- 무선 통신:
- 블루투스 모듈을 사용하여 스마트폰과 아두이노 간에 데이터를 주고받는 프로젝트를 만들어보세요. 예를 들어 스마트폰 앱을 통해 LED를 제어하는 것이 가능합니다.
- 자동 Beware of Dog 표시:
- 초음파 센서를 사용하여 사람이 다가올 때 LED로 “Beware of Dog” 표시를 하는 프로젝트를 시도해보세요.
- 스마트 화분:
- 토양 습도 센서를 사용하여 식물의 습도를 측정하고, 스마트폰 앱을 통해 알림을 받는 화분을 만들어보세요.
- 아두이노와 웹 연동:
- 아두이노를 웹 서버로 사용하여 웹 페이지에서 LED를 제어하는 프로젝트를 시도해보세요.
* Blink 예시
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
- 버튼으로 불 끄고 키기! (https://projecthub.arduino.cc/SBR/working-with-an-led-and-a-push-button-d34b17)
Working with an LED and a Push Button
This project demonstrates the use of a push button to operate an LED.
projecthub.arduino.cc

* 버튼을 눌렀을 때 LED가 켜짐
const int BUTTON = 2;
const int LED = 3;
int BUTTONstate = 0;
void setup()
{
pinMode(BUTTON, INPUT);
pinMode(LED, OUTPUT);
}
void loop()
{
BUTTONstate = digitalRead(BUTTON);
if (BUTTONstate == HIGH)
{
digitalWrite(LED, HIGH);
}
else{
digitalWrite(LED, LOW);
}
}
* 버튼을 누르면 LED가 꺼짐 (반대)
const int BUTTON = 2;
const int LED = 3;
int BUTTONstate = 0;
void setup()
{
pinMode(BUTTON, INPUT);
pinMode(LED, OUTPUT);
}
void loop()
{
BUTTONstate = digitalRead(BUTTON);
if (BUTTONstate == HIGH)
{
digitalWrite(LED, LOW);
}
else{
digitalWrite(LED, HIGH);
}
}
- 선풍기 (출처: https://make.e4ds.com/make/learn_project_view.asp?idx=88)
e4ds make
make.e4ds.com

int motorPin = 9;
int prevEnd = 127;
void setup(void)
{
pinMode(motorPin, OUTPUT);
randomSeed(analogRead(0));
Serial.begin(9600);
}
void loop(void)
{
//motorOnThenOff();
//motorOnThenOffWithSpeed();
//motorAcceleration();
prevEnd = naturalWind(prevEnd);
}
void motorOnThenOff()
{
digitalWrite(motorPin, HIGH);
delay(3000);
digitalWrite(motorPin, LOW);
delay(3000);
}
void motorOnThenOffWithSpeed()
{
analogWrite(motorPin, 200);
delay(3000);
analogWrite(motorPin, 50);
delay(3000);
}
void motorAcceleration()
{
for(int i = 0; i <= 255; i++)
{
analogWrite(motorPin, i);
delay(25);
}
for(int i = 255; i >= 0; i--)
{
analogWrite(motorPin, i);
delay(25);
}
delay(5000);
}
int naturalWind(int prevEnd)
{
int newSpeed = random(0,256);
Serial.print("Start: ");
Serial.println(prevEnd);
Serial.print("End: ");
Serial.println(newSpeed);
if( newSpeed > prevEnd )
{
for(int i = prevEnd; i <= newSpeed; i++)
{
analogWrite(motorPin, i);
delay(25);
}
}else{
for(int i = prevEnd; i >= newSpeed; i--)
{
analogWrite(motorPin, i);
delay(25);
}
}
return newSpeed;
}
- setup() 함수:
- motorPin을 출력으로 설정합니다.
- randomSeed(analogRead(0));는 무작위 숫자를 생성하기 위해 아날로그 핀 값을 사용합니다.
- 시리얼 통신을 초기화합니다.
- loop() 함수:
- naturalWind(prevEnd); 함수를 호출합니다.
- motorOnThenOff() 함수:
- 모터를 켜고 3초 동안 유지한 다음 끕니다.
- motorOnThenOffWithSpeed() 함수:
- 모터를 200의 속도로 켜고 3초 동안 유지한 다음 50의 속도로 끕니다.
- motorAcceleration() 함수:
- 모터 속도를 0에서 255까지 빠르게 증가시키고 다시 감소시킵니다.
- naturalWind(int prevEnd) 함수:
- 이전 속도(prevEnd)와 새로운 속도(newSpeed)를 비교하여 모터 속도를 부드럽게 조절합니다.
- 새로운 속도가 이전 속도보다 크면 증가시키고, 작으면 감소시킵니다.
- 새로운 속도를 반환합니다.
- 초음파 센서로 거리계산 (출처: https://projecthub.arduino.cc/Isaac100/getting-started-with-the-hc-sr04-ultrasonic-sensor-7cabe1 )
Getting Started with the HC-SR04 Ultrasonic sensor
A basic introduction to the low cost and accurate HC-SR04!
projecthub.arduino.cc

const int trigPin = 9;
const int echoPin = 10;
float duration, distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration*.0343)/2;
Serial.print("Distance: ");
Serial.println(distance);
delay(100);
}
ACTIVE BUZZER WITH ARDUINO UNO R3
ACTIVE BUZZER WITH ARDUINO UNO R3: You can use a buzzer whenever you want to make some noise.
www.instructables.com

int buzzer = 12;//the pin of the active buzzer
void setup()
{
pinMode(buzzer,OUTPUT);//initialize the buzzer pin as an output
}
void loop()
{
unsigned char i;
while(1)
{
//output an frequency
for(i=0;i<80;i++)
{
digitalWrite(buzzer,HIGH);
delay(1);//wait for 1ms
digitalWrite(buzzer,LOW);
delay(1);//wait for 1ms
}
//output another frequency
for(i=0;i<100;i++)
{
digitalWrite(buzzer,HIGH);
delay(2);//wait for 2ms
digitalWrite(buzzer,LOW);
delay(2);//wait for 2ms
}
}
}
Arduino - Ultrasonic Sensor HC-SR04 With Buzzer
Arduino - Ultrasonic Sensor HC-SR04 With Buzzer: Description: In this Arduino Tutorial we will learn how the HC-SR04 Ultrasonic Sensor works and how to use it with Buzzer and LED.
www.instructables.com
// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
const int buzzer = 11;
const int ledPin = 13;
// defines variables
long duration;
int distance;
int safetyDistance;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(buzzer, OUTPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // Starts the serial communication
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
safetyDistance = distance;
if (safetyDistance <= 5){
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(buzzer, LOW);
digitalWrite(ledPin, LOW);
}
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
}

06-2 조도센서(Photoresistor) 사용하기
## **조도센서 소개** 조도센서(Photoresistor)는 빛의 세기에 따라 저항 값이 변하는 전자부품입니다. 빛이 많이 들어오면 저항이 작아지고 적게 들어오면 저항이 커…
wikidocs.net

void setup()
{
pinMode(13, OUTPUT); // 디지털 13번핀을 출력모드로 설정
Serial.begin(9500);
}
void loop()
{
int readValue = analogRead(A0);
Serial.println(readValue);
if(readValue > 1000) // 실행 환경에 따라 조정
digitalWrite(13, HIGH); // 빛이 어두우면 LED를 킨다.
else
digitalWrite(13, LOW); // 빛이 밝으면 LED를 끈다.
}
* 기기가 없다면 시뮬레이터를 이용할 수 도 있다.(해당 교재: https://wikidocs.net/book/2655 )
아두이노 시뮬레이터
이 책은 아두이노를 처음 접해보는 독자들과 프로그래밍을 한 번도 해 본적이 없는 사람들을 대상으로 합니다. 아두이노를 알아가는데 필요한 전문적인 용어들을 알기 쉽게 풀어서 쓰려고…
wikidocs.net
'AIoT' 카테고리의 다른 글
AIoT 정규 60일차 - Git (0) | 2024.04.04 |
---|---|
AIoT 정규 59일차 (1) | 2024.04.03 |
AIoT 정규 57일차 (0) | 2024.04.02 |
AIoT 정규 56일차 (0) | 2024.03.29 |
AIoT 정규 55일차 (0) | 2024.03.28 |