1. 틴커캐드(Tinkercad)시작하기
틴커캐드(Tinkercad)사이트에 접속하여 가입/로그인을 진행한다.
로그인을 하면 계정의 대시보드로 이동하며, “디자인”의 “만들기“ 버튼을 클릭한다.
아두이노를 사용하기 위해 “회로“를 클릭한다.
2. 아두이노 시뮬레이션 시작하기
우측 부품 목록에서 아두이노 우노“Arduino Uno R3”를 클릭 또는 중앙으로 드래그하여 설치한다.
아두이노를 설치하면 기본코드가 작성된다. 우측 상단 ”코드“를 클릭한다.
위 보이는 화면은 기본 코드의 블록형태 모습이며, 블록이 아닌 문자형태로 코딩하기 위해 “블록”을 클릭한다.
“문자”를 클릭한다.
주의사항이 표시되며, 블록으로 알고리즘을 짜다가 문자(코드)형태로 변경할경우 그동안의 변경사항이 모두 손실된다는 것을 의미한다.
이는 반대의 경우에도 해당되며, 문자형태로 코딩을 하다가 블록형태로 변경할 경우 모두 손실된다.
아두이노를 설치한 순간 작성된 기본코드이며 실행은 우측 상단 “시뮬레이션 시작”버튼을 클릭하면 시뮬레이션이 실행된다.
아두이노의 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. 브레드보드 이용하기
브레드보드를 이용하기 위해 우측 부품목록에서 브레드보드, LED, 저항을 이용하여 아래와 같이 회로를 완성한다.
위 사진은 아두이노의 8번핀을 LED의 양극과 연결하였으며, LED의 음극과 저항 – GND(그라운드)를 연결하였다.
이후 아래 코드를 작성한다.
void setup()
{
pinMode(8, OUTPUT);
}void loop()
{
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(8, LOW);
delay(1000);
}
코드는 예제코드와 동일하지만 핀 번호를 아두이노 내부의 LED(13)가 아닌 8번핀을 사용한다.
시뮬레이션 결과는 다음과 같다.
아두이노의 8번핀과 연결된 LED의 양극이 HIGH상태가 되면 불이 켜지고, 1초의 대기 후 LOW상태로 되며 불이 꺼지고 다시 1초의 대기 후 loop()함수를 반복한다.
LED에 저항을 연결한 이유는 높은 전압으로 인해 LED의 파손이 있을 수 있기 때문이다. 이는 실제 환경에서도 동일하게 LED에 저항을 연결해 주어야 안전하게 실험이 가능하다.
틴커캐드 환경에서도 LED에 저항 없이 너무 많은 전압이 인가될 경우 파손되는 모양이 보이기도 한다.