프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

Mbed-LED 제어하기

2018-12-27 10:51:48

개요

 

이번 튜토리얼에서 사용할 보드는 mbed로 ST microelectronics사의 STM32 Nucleo-F103RB입니다.

<ST microelectronics사의 STM32 Nucleo-F103RB보드>

 

 

 

 

국내에서 mbed는 아두이노에 비해 덜 알려져 있습니다.

그렇기에 유저층도 얇고 mbed에 대한 정보도 쉽사리 얻을 수 없는것이 사실입니다.

국내에 아두이노가 먼저 널리 퍼져서 사용되었기에 선점효과에 의해 mbed가 힘을 못쓰는 것이 아닌가 하는 개인적인 생각을 해봅니다.

 

하지만 해외에서는 이미 많은 유저층이 존재하고 mbed를 사용하는 다양한 코드와 라이브러리를 제작하여 올리고 있습니다.

 

 

 

 

 

 

mbed의 장점은 코드가 C와 거의 유사하기 때문에 일반 컴퓨터 전공 학생들은 아두이노와 달리 낯설지 않게 코드를 접할 수 있습니다.

그리고 MCU가 아두이노보다 성능이 좋은 ARM사의 칩을 사용하기 때문에 아두이노에서 돌리기 어려운 것들을 mbed에서 시도해 볼 수 있습니다.

 

마지막으로 튜토리얼에서 사용하는 STM32 Nucleo보드는 아두이노와 핀배열이 동일하기 때문에 선 연결은 아두이노를 사용하던 유저들도 낯설지 않게 연결해 볼 수 있습니다.

 

mbed의 특징 중 하나는 Web editor를 통해 코딩을 하는 점입니다. 그렇기 때문에 별다른 개발환경 설치가 필요하지 않습니다. 이 부분은 장점이 될 수도 있고 단점이 될 수도 있습니다. 사용자의 편의성에 맡겨야 할 듯 하네요.

 

 

 

 

필요한 사전 지식 

mbed 기초 - http://kocoafab.cc/make/view/535

 

 

 

 

필요한 부품 목록

NO 부품명 수량 상세 설명
1 mbed 1 STM32 Nucleo-F103RB
2 LED 1 단색 LED
3 330옴 저항 1  
3 브레드 보드 1  
4 점퍼 케이블    

 

부품명 mbed LED 330 옴 저항 브레드 보드 점퍼 케이블
부품 사진
 

 

 

 

 

하드웨어 making

 

 

 

 

 

 

소프트웨어 coding

 

#include "mbed.h"

DigitalOut myled(D3);

int main() {
    while(1) {
        myled = 1; // LED is ON
        wait(0.2); // 200 ms
        myled = 0; // LED is OFF
        wait(1.0); // 1 sec
    }
}

 

 

 

 

코드는 짧아서 간단해보이지만 아두이노를 주로 사용했던 유저라면 많이 낯설어보이는 코드입니다.

 

아두이노에서는 크게 Setup()과 loop()로 나누어 setup()에서는 1번 실행, loop()에서는 무한반복으로 사용했지만

mbed에서는 int main()을 기본으로 while()문을 통해 무한반복을 합니다.

while()문을 사용하지 않는다면 반복실행이 되지 않기 때문에 반복적인 작업을 하는 보드 특성상 코드에 while(1)은 항상 들어간다고 보면 됩니다.

 

 

mbed를 사용할때는 제일 처음에 #include "mbed.h"를 항상 선언합니다.

mbed.h에는 mbed를 사용할때 편리하게 쓸 수 있는 기본적인 명령어 모음을 제공합니다.

 

 

 

Blinky코드에서는 DigitalOut선언을 통해 D3번핀을 digital신호를 Output하는 핀으로 선언합니다.

DigitalOut myled(D3); //D3번핀을 사용하는 DigitalOut의 myled 선언

 

 

 

myled는 DigitalOut으로 선언하였기 때문에 0과 1의 값으로 제어 가능합니다.

myled Status
0 HIGH(3.3v)
1 LOW(0v)

 

 

 

아두이노에서는 delay()함수를 통해 코드의 흐름을 일시정지하였지만 mbed에서는 wait()함수를 사용합니다.

wait()함수도 delay()와 같은 동작을 하면 다만 차이가 있다면 기본 단위가 delay()처럼 ms가 아닌 sec단위입니다.

wait(0.2)는 0.2초 200ms를 중지합니다.

 

 

kocoafab

mbed, STM32, LED, 기타