전원 공급
여러가지 방법으로 아두이노에 전원을 공급할 수 있다.
1. USB 연결
USB를 연결하면 자동으로 전원이 공급된다. 아두이노데 코드를 업로드할 때에도 USB를 연결해야 하는데, 이 때에도 전원은 자동으로 공급된다. 그래서 업로드를 하면 그와 동시에 코드대로 동작하는 모습을 볼 수 있다.
2. DC 잭 연결
아두이노 우노(Uno)에는 DC 잭을 통해 전원을 공급받을 수 있는 단자가 있다. 여기에 DC 잭을 연결하면 아두이노에 전원을 공급할 수 있다. 공급 전압은 6~20V인데 7~12V를 권장한다고 한다. 보통 9V 또는 12V를 사용하는 것 같다.
위와 같이 건전지를 사용한 방식도 가능한 것 같다.
3. Vin 핀
Vin은 Voltage input의 약자라고 한다. V input 으로 이해하면 되는 듯 싶다. Vin으로 보드에 전원을 공급할 수 있다. Vin 주변의 5V, 3.3V 등으로도 전원을 공급할 수 있지만 정확한 전압을 공급해야 하고, 실제로 전원공급용보다는 출력용으로 더 많이 쓴다고 한다.
Vin 핀으로 보드의 전원을 가져올 수도 있다고 한다. DC 잭으로 외부 전원을 공급하고, 그 전원을 Vin 핀으로 직접 가져오는 식이다. 아두이노의 다른 5V 출력 핀과 다르게, 공급받은 전압을 그대로(실제로는 약간의 감소가 있지만) 가져와 사용할 수 있다고 한다. 아래 글 참고:
https://m.blog.naver.com/roboholic84/221468522044
[아두이노 강좌] 아두이노 vin핀에 대해 파헤쳐 보자!
안녕하세요~ 저번 시간에 이어 오늘은 아두이노 vin핀에 대하여 알아보는 시간을 가져보도록 하겠습니다! ...
blog.naver.com
브레드보드 사용법
브레드보드는 부품들을 쉽게 연결해주는 장치이다. 구멍들은 초록색 선 방향으로 서로 연결되어있고, 여기에 부품이나 선을 꼽아서 사용하게 된다. 브레드보드 안에는 초록색 방향으로 클립들이 위치하고 있어서, 여기에 선이나 부품들을 꽂아 넣으면 클립이 이걸 잡아서 서로를 연결해준다. 이를 통해 여러 부품들을 손쉽게 연결할 수 있다.
예제
회로
LED를 작동시키는 예제를 만들어 보았다.
LED는 다이오드의 특성상 저항을 직렬로 연결하여 사용하는 것이 정석이다. 저항을 연결하여 LED에 과전류가 흐르지 않도록 해야 한다. LED의 저항을 0으로 간주하여, 아래와 같이 계산할 수 있다.
내가 사용한 LED는 최소 3.0V, 최대 3.4V, 보통 3.2V의 전압으로 작동하고, 권장하는 전류의 값은 20mA이다. LED의 저항을 0으로 간주하고, 저항을 직렬로 연결하게 되면 회로의 전체 저항은 추가한 저항의 값 그 자체가 된다. 또한, 저항을 직렬로 연결한 상태에서 LED가 3.2V의 전압을 사용하게 되면, 저항은 남은 1.8V의 전압을 사용하게 된다. 이제, 저항의 값을 조절하여 회로의 전류를 결정할 수 있다. LED가 3.2V의 전압을 사용하는 상황에서 회로에 20mA의 전류를 흐르게 하려면 저항의 크기는 다음과 같다:
V = IR, 1.8V = 20mA x ?옴 = 0.02A, 필요 저항 = 1.8V / 0.02A = 90옴.
만약 90옴보다 작은 저항을 사용하게 되면, LED에 과전류가 흘러 타버릴 수 있다.
코드
기본적으로 C언어에 기반한 코드를 사용한다. Ardoino IDE를 설치하면 간편하고 직관적으로 사용해볼 수 있다.
void setup()
{
pinMode(10, OUTPUT);
}
void loop()
{
digitalWrite(10, HIGH);
delay(1000);
digitalWrite(10, LOW);
delay(1000);
}
아두이노의 코드는 크게 3가지 덩어리로 구분할 수 있다. setup을 하기 전에 여러 전처리를 하는 부분, 전원이 공급되었을 때 한 번 실행되는 setup, 전원이 공급되면 무한히 실행되는 loop이 있다.
setup에서는 어떤 핀을 출력으로 할지를 지정하고 있다. 아두이노의 출력은 기본적으로 digital 핀에서 이루어지므로, 10번 디지털 핀을 출력으로 사용하겠다는 의미이다. 이렇게 하면 digitalWrite를 통해 해당 핀으로 출력을 줄 수 있다.
loop에서는 10번 핀에 HIGH(1) 디지털 신호를 주었다가 1초(1000ms)를 대기하고, 다시 LOW(0) 디지털 신호로 바꾼 뒤 1초를 기다리기를 반복한다.
그런데 아래와 같이 아날로그 형태로 출력해볼 수도 있다.
int i = 0;
bool flag = true;
void setup()
{
pinMode(10, OUTPUT);
}
void loop()
{
analogWrite(10, i);
if (i == 255) {
flag = false;
} else if (i == 0) {
flag = true;
}
if (flag) {
i += 1;
} else {
i -= 1;
}
delay(1);
}
PWM(Pulse Width Modulation) 방식으로 아날로그 출력을 흉내낼 수 있다. 아두이노 Uno에서는 3, 5, 6, 9, 10, 11번에서 위와 같이 PWM을 사용할 수 있다. 0부터 255까지의 신호를 줄 수 있다.
Tinkercad
Tinkercad is a free, easy-to-use app for 3D design, electronics, and coding.
www.tinkercad.com
회로와 코드를 시뮬레이션할 수 있는 사이트가 있다.
3D 모델링할 때 사용하던 사이트였는데, 회로도 설계할 수 있다. 개꿀.