[아두이노, Tinkercad] 틴커캐드(Tinkercad) 아두이노 시뮬레이션 시작하기(아두이노 LED켜기)

1. 틴커캐드(Tinkercad)시작하기

틴커캐드(Tinkercad)사이트에 접속하여 가입/로그인을 진행한다.

[tinkercade]

로그인을 하면 계정의 대시보드로 이동하며, “디자인”의 “만들기“ 버튼을 클릭한다.

[tinkercade2]

아두이노를 사용하기 위해 “회로“를 클릭한다.

 

2. 아두이노 시뮬레이션 시작하기

[tinkercade3]

우측 부품 목록에서 아두이노 우노“Arduino Uno R3”를 클릭 또는 중앙으로 드래그하여 설치한다.

[tinkercade4]

아두이노를 설치하면 기본코드가 작성된다. 우측 상단 ”코드“를 클릭한다.

[tinkercade5]

위 보이는 화면은 기본 코드의 블록형태 모습이며, 블록이 아닌 문자형태로 코딩하기 위해 “블록”을 클릭한다.

[tinkercade6]

“문자”를 클릭한다.

[tinkercade7]

주의사항이 표시되며, 블록으로 알고리즘을 짜다가 문자(코드)형태로 변경할경우 그동안의 변경사항이 모두 손실된다는 것을 의미한다.

이는 반대의 경우에도 해당되며, 문자형태로 코딩을 하다가 블록형태로 변경할 경우 모두 손실된다.

[tinkercade8]

아두이노를 설치한 순간 작성된 기본코드이며 실행은 우측 상단 “시뮬레이션 시작”버튼을 클릭하면 시뮬레이션이 실행된다.

[tinkercade9]  [tinkercade10]

아두이노의 L(LED)부분이 1초(1000ms)간격으로 깜빡 거리는 것을 볼 수 있다.

시뮬레이션중에는 회로를 수정할 수 없기 때문에 시뮬레이션이 끝나면 중지를 눌러야 한다.

 

3. 아두이노 코드 구성

아두이노의 코드 구성은 다음과 같다.

void setup()
{

~~~

}

void loop()
{

~~~

}

3. 1. setup()

setup()함수는 아두이노가 최초 실행 될 때 1번만 실행된다.

보통 pinMode(Pin_num, Pin_Mode)와 같이 핀의 INPUT, OUTPUT을 설정하거나,

int LED_pin = 6;과 같이 변수를 선언한다.

3. 2. loop()

loop()함수는 아두이노의 클럭주파수에 따라 계속 반복하는 함수이다. 모든 함수를 실행한 후 다시 반복한다.

보통 digitalWrite()와 digitalRead()같이 핀의 값을 제어하거나 if(조건문), for(반복문), 사용자 정의 함수 등 C/Cpp에서 사용가능한 문법을 사용한다.

 

4. 예제코드

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

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

틴커캐드의 예제코드이며 코드 내용은 다음과 같다.

pinMode(LED_BUILTIN, OUTPUT);

pinMode(핀번호, INPUT | OUTPUT)은 해당 핀을 인풋(INPUT) 또는 아웃풋(OUTPUT)으로 설정하는 코드이다. “LED_BUILTIN”은 아두이노 보드 내부에서 13으로 선언되어있다.

digitalWrite(LED_BUILTIN, HIGH);

digitalWrite(핀번호, HIGH | LOW)는 해당 핀을 HIGH(1) 또는 LOW(0)으로 설정하는 코드이다. 아두이노 보드 내부 LED(13)은 HIGH상태일때 불이 켜지며, LOW상태에서 불이 꺼진다.

delay(1000);

dealy()는 코드의 진행을 잠시 대기하는 코드이다. 괄호 안의 숫자는 ms단위이며 delay(1000)은 1000ms=1s를 대기하는 함수이다.

종합적으로 예제 코드는 setup()함수에서 LED_BUILTIN(13)핀을 OUTPUT상태로 설정하며, loop()함수에서 LED_BUILTIN(13)핀을 HIGH상태로 만들어 불을 키고, 1초를 기다렸다가 LED_BUILTIN(13)피늘 LOW상태로 만들어 불을 끄고 1초를 기다리는 함수이다.

loop()의 코드가 모두 실행 완료되면 자동으로 loop()의 코드를 처음부터 다시 실행한다.

 

 

5. 브레드보드 이용하기

[tinkercad_led]

브레드보드를 이용하기 위해 우측 부품목록에서 브레드보드, LED, 저항을 이용하여 아래와 같이 회로를 완성한다.

[tinkercad_led2]

위 사진은 아두이노의 8번핀을 LED의 양극과 연결하였으며, LED의 음극과 저항 – GND(그라운드)를 연결하였다.

이후 아래 코드를 작성한다.

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

void loop()
{
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(8, LOW);
delay(1000);
}

코드는 예제코드와 동일하지만 핀 번호를 아두이노 내부의 LED(13)가 아닌 8번핀을 사용한다.

시뮬레이션 결과는 다음과 같다.

[tinkercad_led3]   [tinkercad_led4]

아두이노의 8번핀과 연결된 LED의 양극이 HIGH상태가 되면 불이 켜지고, 1초의 대기 후 LOW상태로 되며 불이 꺼지고 다시 1초의 대기 후 loop()함수를 반복한다.

LED에 저항을 연결한 이유는 높은 전압으로 인해 LED의 파손이 있을 수 있기 때문이다. 이는 실제 환경에서도 동일하게 LED에 저항을 연결해 주어야 안전하게 실험이 가능하다.

틴커캐드 환경에서도 LED에 저항 없이 너무 많은 전압이 인가될 경우 파손되는 모양이 보이기도 한다.

 

Leave a Comment