본문 바로가기

웹_프론트_백엔드/JAVA프레임윅기반_풀스택

2020.07.09

[Arduino 시작하기 전에 해야할 것들]

1. 팅커캐드(Tinkercad) 가입

 : https://www.tinkercad.com/ > 지금 가입 클릭

> 개인 계정 만들기

> 가입 후 로그인하면 아래의 그림처럼 화면이 뜸

 

 

2. 새 회로 작성

 : Circuits 클릭 > 새 회로 작성 클릭

> 회로 작성 페이지, 원하는 회로 작성하면 됨..!!

 

 

[Arduino 회로 작성하기]

1. 001_Hello_Arduino

 

 

2. 01_02 blink

// setup()과 loop 함수 이름은 변경하면 안된다, 
// 기본 설정되어 있는 이름임

// 최초(보드에 전원 연결시)에 단 한 번 실행되는 함수
void setup()
{
  // 13번 핀 출력.
  // 출력? 전기신호를 내보내겠다는 뜻
  pinMode(13, OUTPUT);
  
  // 아두이노가 Serial 통신 속도를 115200bps로 설정하게 함
  // 초당 115200 bit를 보내는 속도
  // 보통 문자 하나당 10bit 필요
  Serial.begin(115200);
               
}

// 계속해서 반복 순환하여 실행되는 함수
void loop()
{
  // 아두이노가 아래 문자열은 Serial 연결을 통해 PC로 출력
  Serial.println("Hello Arduino");
  
  digitalWrite(13, HIGH); // 13번 핀에 전류 흘러보내기
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(13, LOW); // 13번 핀에 전류 차단
  delay(1000); // Wait for 1000 millisecond(s)
}

 

 

3. 배선 
 : 아두이노는 전기로 작동하는 장치
   전기가 통할수 있도록 전선이 연결되어함 > 이 작업을 배선이라고 한다.


4. 배선은 어떻게 구성해야 할까?
 : 배선은 전류의 흐름을 고려해야 한다. 
   전류는 전원(5V)에서 접지(GND)로 흐른다(물이 위에서 아래로 흐르듯이 일정 방향으로 흐름)
   (전원은 전류가 발생하는 시작점, 접지는 전류가 빠져나가는 끝점)


5. 전류의 흐름이 지켜지지 않으면 단선, 단락 등의 문제 발생한다.

 

 

6. Copy of 03_02 배선

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

void loop()
{
  digitalWrite(13, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(13, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
}

 

 

7. 회로 설계시 가장 중요한 요소가 저항(Resistence)이다. 저항을 적절한 값으로 사용해야 회로가 정상 작동한다.

   저항값에 따라 LED 상태가 달라지는 이유는 전류를 방해하는 힘이기 때문이다. 


8. 옴의 법칙

1) 전압(V = Voltage), V = I * R
 : 전류가 흐를 때의 압력으로 단위는 V(볼트)이다.

 

2) 전류(I = Current), I = V / R
 : 전하가 이동하는 현상으로 단위는 A(암페어)이다.

 

3) 저항(R = Resistance), R = V / I 
 : 전기의 흐름을 방해하는 성질으로 단위는 Ω(옴)이다.

 

 

9. LED(발광 다이오드, Light Emitting Diode)

1) 특징

① LED의 에너지 효율 : LED는 형광등이나 백열전구 등에 비해 적은 에너지로 더 밝은 빛을 출력 가능
② 작고 강하며 긴 수명 : 필라멘트를 사용하지 않아 강한 충격에도 부셔지지 않으며, 수명이 길어 오래동안 사용 가능 
③ 다양한 색과 빛을 출력 : 만드는 재료와 전원 입력에 따라 여러가지 빛, 색 출력이 가능, 다양한 제품을 만들 수 있음 
④ 미적인 효과 : LED는 디지털 전기로 사용되기 때문에 밝기 조절이나 다양한 효과 등을 나타내기 쉬움

 

2) 소자

 : LED 소자는 보통 DC 2~3V에서 작동하며 다리가 긴쪽이 (+)극, 짧은쪽이 (-)극에 해당,
   입력전압이 낮으면 빛이 약하고, 높으면 소자가 타버려서 작동하지 않게 된다, 
   [긴 핀] 전원의 양극(VCC, 5V)
   [짧은 핀] 음극(GND, 0V)

 

 

10. 브레드보드(Bread board)
 : 납땜을 하지 않고도 시험용 회로를 구성할 수 있다.

 

11. [폐쇄 회로] Closed Circuit, 전류가 흐르는 회로 
     [개방회로] Open circuit, 전류가 흐르지 않는 회로
     [단락회로] Short Circuit, 전원과 접지가 직접 연결된 회로, 발열, 화재 상황

 

 

12. 06_01 푸시버튼

 : 푸시 버튼을 누를때는 LED가 켜지고, 푸시 버튼을 떼면 LED에 전류가 흐르지 않는다.

void setup()
{
  Serial.begin(9600);	// 직렬통신 초기화 9600pbs
  
  pinMode(8, OUTPUT);	// 8번 디지털 핀을 출력 모드로 설정
  pinMode(7, INPUT);	// 7번 디지털 핀을 입력 모드로 설정 
}

void loop()
{
  int readValue = digitalRead(7); // 7번 입력 핀의 값을 읽어 변수 저장
  Serial.println(readValue);	  // 입력값 출력(직렬 모니터)
  
  // 입력값에 따라 LED 출력
  if(readValue == HIGH){	// 푸시 버튼이 눌리면
  	digitalWrite(8, HIGH);
  } else {
  	digitalWrite(8, LOW);
  }
}

 

 

13. 플로팅 현상(Floating)
 : HIGH값 또는 LOW 값 중 명확하게 한쪽을 정학하지 못해 값이 계속 바뀌는 현상(붕 떠있는 현상)

 

 

14. 핀에 직접 연결하면 핀에 보낼 신호를 원하는 대로 조절할 수 없다.  
     [그래서] 저항과 같이 연결 > 저항을 어디에 연결하느냐에 따라 종류가 나뉜다.

1) 풀업(pull-up)저항

 : 저항을 전원선에 연결,

   버튼을 누를때에만 전원 공급을 멈추고 싶을때,

   공장 등에서 위험 상황에서 장치를 멈추는 응급버튼 > 눌리면 멈추는 장치 > 풀업 저항

void setup()
{
  Serial.begin(9600);	// 직렬통신 초기화 9600pbs
  
  pinMode(8, OUTPUT);	// 8번 디지털 핀을 출력 모드로 설정
  pinMode(7, INPUT_PULLUP);	// 내부 풀업 저항을 사용하도록 설정 
}

void loop()
{
  int readValue = digitalRead(7); // 7번 입력 핀의 값을 읽어 변수 저장
  Serial.println(readValue);	  // 입력값 출력(직렬 모니터)
  
  // 풀업 저항을 사용하므로 푸시 버튼을 누르지 않는 상태가 HIGH
  
  // 입력값에 따라 LED 출력
  if(readValue == HIGH){	// 푸시 버튼이 눌리면
  	digitalWrite(8, LOW);
  } else {
  	digitalWrite(8, HIGH);
  }
}

 

2) 풀다운(pull-down)저항

 : 저항을 접지선에 연결,

   버튼을 누를때에만 전원을 공급하고 싶을때,
   선풍기, 전등 > 눌리면 동작하는 장치 > 풀다운 저항 사용

 

 

15. 06_03 슬라이드 스위치

void setup()
{
  Serial.begin(9600);	// 직렬 통신

  pinMode(8, OUTPUT);	// 8번 디지털핀, 출력, LED
  pinMode(7, INPUT);	// 7번 디지털핀, 입력모드22
}

void loop()
{
  int readValue = digitalRead(7);
  Serial.println(readValue);
  
  if(readValue == HIGH) {	// 슬라이드 스위치 켜지면
  	digitalWrite(8, HIGH);	// LED 점등(신호)
  } else {
    digitalWrite(8, LOW);	// LED 소등(LOW)
  }
}

 

 

16. 06_04 PIR 센서

void setup()
{
  Serial.begin(9600);
  
  pinMode(8, OUTPUT);	// LED 출력
  pinMode(7, INPUT);	// PIN 입력
}

void loop()
{
  int readValue = digitalRead(7);	// PIR센서 입력값
  Serial.println(readValue);
  
  if(readValue == HIGH) {	// PIR, 모션 센서
    digitalWrite(8, HIGH);
  } else {
  	digitalWrite(8, LOW);
  }
}

'웹_프론트_백엔드 > JAVA프레임윅기반_풀스택' 카테고리의 다른 글

2020.07.13  (0) 2020.07.13
2020.07.10  (0) 2020.07.10
2020.07.08  (0) 2020.07.08
애플리케이션_테스트 시험(제출 코드와 풀이)  (0) 2020.07.07
2020.07.07  (0) 2020.07.07