아두이노[1]
아두이노
개요
오픈 소스 하드웨어 및 소프트웨어 플랫폼
- 전자 기기를 제어하고 프로토타이핑하는 데 사용되는 마이크로컨트롤러 기반의 플랫폼.
- 간단한 디지털 및 아날로그 입력 및 출력을 제공하여 센서와 액추에이터를 연결하고 다양한 프로젝트를 구현.
- Arduino IDE(통합 개발 환경) 소프트웨어를 통해 프로그램 코드를 작성하고 업로드. (C/C++ 기반)
- 아두이노 보드는 주로 ATmega 시리즈와 같은 마이크로컨트롤러 칩을 사용합니다.
- 보드에는 디지털 핀과 아날로그 핀이 있으며, 이러한 핀들을 사용하여 다양한 센서, 스위치, LED, 모터 등과 같은 외부 장치를 연결할 수 있습니다. 또한, 아두이노 보드에는 전원 공급을 위한 USB 포트나 외부 전원 소스를 연결할 수 있는 커넥터도 제공됩니다.
- 로봇 제어, 자동화 시스템, 스마트 홈 장치, IoT(사물 인터넷) 프로젝트등에 사용될 수 있습니다.
각부명칭

Autodesk Thinkercad로 실습
[홈페이지]
https://www.tinkercad.com/things/e0bXK2RrDsY-ingenious-crift/editel?tenant=circuits
Login | Tinkercad
www.tinkercad.com
[홈페이지 -> 내 디자인 -> 만들기-> 회로 선택]
# 드래그앤드롭 -> 필요한 요소를 선택한다.
[Arduino를 사용하여 3개의 LED를 순차적으로 제어하고, "hello_world"를 시리얼 모니터에 출력]
아두이노 배선

코드 작성
// 녹색 LED 핀 번호를 12로 정의합니다.
int green = 12;
// 노란색 LED 핀 번호를 10으로 정의합니다.
int yellow = 10;
// 빨간색 LED 핀 번호를 8로 정의합니다.
int red = 8;
// setup() 함수는 초기 설정을 수행하는 함수입니다.
void setup() {
// 시리얼 통신을 9600 bps로 설정합니다.
Serial.begin(9600);
// 녹색 LED 핀을 출력으로 설정합니다.
pinMode(green, OUTPUT);
// 노란색 LED 핀을 출력으로 설정합니다.
pinMode(yellow, OUTPUT);
// 빨간색 LED 핀을 출력으로 설정합니다.
pinMode(red, OUTPUT);
}
// loop() 함수는 반복적으로 실행되는 함수입니다.
void loop() {
// 녹색 LED를 켭니다.
digitalWrite(green, HIGH);
// 노란색 LED를 끕니다.
digitalWrite(yellow, LOW);
// 빨간색 LED를 끕니다.
digitalWrite(red, LOW);
// 1초 동안 대기합니다.
delay(1000);
// 녹색 LED를 끕니다.
digitalWrite(green, LOW);
// 노란색 LED를 켭니다.
digitalWrite(yellow, HIGH);
// 빨간색 LED를 끕니다.
digitalWrite(red, LOW);
// 1초 동안 대기합니다.
delay(1000);
// 녹색 LED를 끕니다.
digitalWrite(green, LOW);
// 노란색 LED를 끕니다.
digitalWrite(yellow, LOW);
// 빨간색 LED를 켭니다.
digitalWrite(red, HIGH);
// 1초 동안 대기합니다.
delay(1000);
// 시리얼 모니터에 "hello_world"를 출력합니다.
Serial.print("hello_world");
}
Arduino – Turn LED ON and OFF With Button
# 버튼으로 LED를 제어해보자
https://roboticsbackend.com/arduino-turn-led-on-and-off-with-button/
[아두이노 배선]

[코드작성]
# 버튼의 상태에 따라 LED가 켜지거나 꺼지게 됩니다.
// LED 핀 번호를 8로 정의합니다.
#define LED_PIN 8
// 버튼 핀 번호를 7로 정의합니다.
#define BUTTON_PIN 7
// setup() 함수는 초기 설정을 수행하는 함수입니다.
void setup() {
// LED 핀을 출력으로 설정합니다.
pinMode(LED_PIN, OUTPUT);
// 버튼 핀을 입력으로 설정합니다.
pinMode(BUTTON_PIN, INPUT);
}
// loop() 함수는 반복적으로 실행되는 함수입니다.
void loop() {
// 만약 버튼 핀에서 HIGH(1) 신호를 읽어오면,
if (digitalRead(BUTTON_PIN) == HIGH) {
// LED 핀에 HIGH(1) 신호를 출력하여 LED를 켭니다.
digitalWrite(LED_PIN, HIGH);
}
else {
// 그렇지 않으면 LED 핀에 LOW(0) 신호를 출력하여 LED를 끕니다.
digitalWrite(LED_PIN, LOW);
}
}
버튼의 상태에 따라 LED가 켜지거나 꺼지게 됩니다.
아두이노 IDE
IDE설치
https://www.arduino.cc/en/software
아두이노 IDE에 코드 import
# thinkcad에서 작업한 코드를 다운로드.

# 아두이노 IDE -> file -> 파일 open
# 포트설정 필요하면 아두이노 연결.
# 아두이노 업로드시 verify-> upload 진행.
[Proximity (GP2Y0A21YK ) distance Sensor with Arduino]
해당 사이트를 참고한다.
https://theorycircuit.com/proximity-gp2y0a21yk-distance-sensor-with-arduino/
아두이노 센서
피에조 부저 - 소리
https://blog.naver.com/darknisia/221233388266
https://www.tinkercad.com/things/jgTD2aEfgdR-shiny-kup-krunk/editel?tenant=circuits
적외선 센서
https://blog.naver.com/PostView.naver?blogId=eduino&logNo=222065945459&categoryNo=0&parentCategoryNo=0
[아두이노 배선]

[코드 작성]
# [참고] https://www.tinkercad.com/things/h6g2XRZ1NJI-smooth-robo/editel?tenant=circuits
# Arduino를 사용하여 거리 값을 측정하고, 측정된 값을 시리얼 모니터를 통해 출력
int distance = 0; //Cm로 계산된 거리값을 저장해두기위해 변수를 선언합니다.
void setup() {
Serial.begin(9600); //거리값을 PC모니터로 쉽게 확인하기위해 시리얼통신을 선언해줍니다.
}
void loop() {
int volt = map(analogRead(A0), 0, 1023, 0, 5000);
/*
거리값을 cm로 변환해주기 쉽게 하기위해서
map 함수를 사용해서 데이터값을 변환후 volt 변수에 넣어 줍니다.
*/
distance = (27.61 / (volt - 0.1696)) * 1000;
/*
거리값을 cm로 변환하는 계산공식 입니다.
변환된 cm값을 distance 변수에 저장합니다.
*/
Serial.print(distance); //거리값을 시리얼모니터로 출력해줍니다.
Serial.println(" cm");
Serial.println(" ");
delay(500);
}
토양센서
[아두이노 배선]

[코드 작성]
const int AirValue = 620; //you need to replace this value with Value_1
const int WaterValue = 310; //you need to replace this value with Value_2
int soilMoistureValue = 0;
int soilmoisturepercent=0;
void setup() {
Serial.begin(9600); // open serial port, set the baud rate to 9600 bps
}
void loop() {
soilMoistureValue = analogRead(A0); //put Sensor insert into soil
Serial.print("아날로그 값 : ");
Serial.println(soilMoistureValue);
soilmoisturepercent = map(soilMoistureValue, AirValue, WaterValue, 0, 100);
Serial.print("습도 : ");
if(soilmoisturepercent >= 100)
{
Serial.println("100 %");
}
else if(soilmoisturepercent <=0)
{
Serial.println("0 %");
}
else if(soilmoisturepercent >0 && soilmoisturepercent < 100)
{
Serial.print(soilmoisturepercent);
Serial.println("%");
}
delay(2000);
}
온습도 센서
https://projecthub.arduino.cc/arcaegecengiz/using-dht11-12f621
[아두이노 배선]

[코드 작성]
#include <dht11.h>
#define DHT11PIN 4 //핀 설정 변경가능하므로 다른 핀도 해보기
dht11 DHT11;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println();
int chk = DHT11.read(DHT11PIN);
Serial.print("Humidity (%): ");
Serial.println((float)DHT11.humidity, 2);
Serial.print("Temperature (C): ");
Serial.println((float)DHT11.temperature, 2);
delay(2000);
}
리모컨 HOW TO SET UP AN IR REMOTE AND RECEIVER ON AN ARDUINO
https://www.circuitbasics.com/arduino-ir-remote-receiver-tutorial/
[참고 사이트]
[참고1 - 아두이노&라즈베리파이] https://www.circuitbasics.com/arduino/