micro:bit - L298N 이용 RC카 만들기(라디오통신)

OS/micro:bit 2019.01.05 23:54 Posted by 파란크리스마스

본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.


출처

L298N DC모터 드라이버 스테핑모터

아두이노나 라즈베리파이를 이용해서 RC카를 만들때 사용했던 L298N 모터 드라이버를 micro:bit로 RC카를 만들어 보았습니다.
L298N 모터 드라이버를 저는 좋아하는데, 좌우 모터를 각각 앞뒤로 회전 시킬 수 있고, 좌우 각각 모터의 회전 속도도 정할 수 있으며,
최대의 장점으로는 가격이 저렴하고, 관련 자료가 많아 구현이 어렵지 않습니다.

무선 송수신 방식

무선 송수신 방식은 처음에는 BLE를 이용해서 핸드폰으로 구현 하려고 했는데,C언어로 구현할때는 간단하던 것이
블럭코딩에서 BLE방식으로 문자열 주고 받는 예제를 찾을 수 없어서, 라이브러리를 만들까 햇지만, 작업량이 너무 많아져서 BLE방식은 포기하고 라디오 송수신 방식을 이용했습니다.

전면 LED 화면 끄기

확장 보드를 사용하면서 주의 해야 될 점은 전면 LED 화면을 끄지 않으면, LED 핀과 충돌하여 정상적으로 동작하지 않는 다는 점인데,
C 언어를 사용할때는 기본적으로 껴져 있는데, 블럭코딩에서는 기본적으로 활성화 되어 있으므로, LED를 사용하지 않는 다면 LED 화면을 비활성화 시켜두는 것이 오동작을 막을 수가 있습니다.

LED를 사용해야 한다면 LED 제어 핀번호와 충돌이 발생하지 않는지 확인 해보고 구현해야 됩니다.

RC카 송신기

송신기(RC카 컨트롤러)는 지니어스 엣지보드와 호환 되는 조이스틱을 이용했습니다.

RC카 수신기

실행 영상


마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
아이씨뱅큐 공식 카페 : http://cafe.naver.com/icbanq
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ

micro:bit - 초음파 거리센서(HC-SR04) 확장 라이브러리

OS/micro:bit 2018.12.08 17:13 Posted by 파란크리스마스

본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.


출처 : Steve136/microbit-ultrasonic: Example usage of a HC-SR04 Ultrasonic Sensor and the BBC Micro:Bit.
HCSR04 - Ultrasound Ranging Sensor module | Mbed

micro:bit - 초음파 거리센서(HC-SR04) 확장 라이브러리

micro:bit의 기본 함수로 구현하기 힘든 부분들은 확장 라이브러리로 제공이 되는데, 
초음파 거리센서(HC-SR04)를 단순하게 사용할 수 있도록 확장 라이브러리를 직접 만들어 보았습니다.

라이브러리의 사용은 제한이 없지만, 다른곳에 글을 올리는 경우 출처만 남겨주세요.

구현이 필요한 확장 라이브러리가 있으시면 댓글 남겨주시면 시간날때 만들어서 공개하겠습니다.

micro:bit - 초음파 거리센서(HC-SR04) 확장 라이브러리 사용하기

확장 라이브러리를 추가하기 위해서, [고급] 메뉴를 선택하여 [고급] 메뉴를 확장

확장된 메뉴에서 [확장] 메뉴를 선택하여 라이브러리 추가 화면으로 이동

검색창에 초음파 센서 Github 주소(https://github.com/bluexmas/pxt-ultrasonic-microbit)를 삽입하고, 검색(돋보기) 버튼 선택

검색된 초음파 센서 라이브러리 선택 (아이콘 작업을 했는데 아이콘이 나오지 않는데 이유를 알수가 없네요)

초음파 센서 라이브러리 함수 확인 ( 초기화 함수, 거리값을 가져오는 함수)

초음파 센서 함수 설정 - 첫번째 파라미터는 Trig핀, 두번째 파라미터는 Echo핀 설정

거리측정 값을 담을 변수 생성을 위해서 변수 메뉴에서 [변수 만들기...] 선택

변수 이름을 설정하고, [확인] 버튼 선택

거리 변수에 초음파 센서로 받은 거리값을 담고, LED 화면에서 거비 변수값을 출력

실행

OLED 거리값 출력 해보기

실행 결과


마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
아이씨뱅큐 공식 카페 : http://cafe.naver.com/icbanq
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ

본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.


OLED를 이용하여 온,습도,토양수분,기울기 센서의 값 표시하기

초기화

OLED 초기화, 변수 초기화

기울기 센서값 가져오기

습도센서 값 가져오기

아나로그 입력 값 가져오기

온도센서 값 가져오기

아나로그 입력 값을 가져와서 온도 계산

OLED 출력

완성된 코드

실행 결과


마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
아이씨뱅큐 공식 카페 : http://cafe.naver.com/icbanq
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ

micro:bit 지니어스키트 : OLED에 글씨 써보기

OS/micro:bit 2018.11.24 21:53 Posted by 파란크리스마스

 본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.

지니어스키트의 OLED를 이용해서 문자열 출력 예제를 만들어 보았습니다.

OLED를 사용하기 위해서 마이크로비트의 확장 라이브러리를 추가 하는 방법과 변수 사하는 방법을 배워보겠습니다.

OLED 확장 라이브러리 추가

[고급] -> [확장] 메뉴 선택

검색창에 oled-ssd1306 을 입력하고 [돋보기] 아이콘 선택하여 검색후, 검색된 목록에서 [oled-ssd1306]을 선택

추가된 [OLED] 메뉴 확인

OLED 확장 라이브러리 사용

초기화, 문자열 출력

[시작하면 실행] 블럭에 반듯이 OLED를 초기화해야 하고,, 예제로 문자열을 출력해보았습니다.

문자열 출력 예제 실행 결과

버튼를 이용하여 OLED에 글씨 써보기

간단하게 더하기 하는 예제를 만들어 보았습니다. 왼쪽(A) 버튼을 누르면 좌변의 값을 1증가하고, 오른쪽(B) 버튼을 누르면 우변의 값을 1증가해서 더해진 값을 OLED에 출력하는 예제입니다.

변수 만들기

[변수] 메뉴에서 [변수 만듥기] 메뉴 선택  

변수 이름을 입력하고 [확인] 버튼 선택

[변수] 메뉴를 선택하면 만들어진 변수 확인

완성된 코드

실행 결과


마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
아이씨뱅큐 공식 카페 : http://cafe.naver.com/icbanq
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ

micro:bit 지니어스키트 : 개봉기

OS/micro:bit 2018.11.18 22:09 Posted by 파란크리스마스

본 체험 제품은 아이씨뱅큐㈜ 에서 진행하는 무상 체험단 활동으로 작성한 것입니다.

마이크로비트에 관심이 많아서 여러가지 확장하려고 알아 보던중에 지니어스키트를 알게 되었는데,
이번 체험단에 당선되어서 지니어스키트를 얻게 되었습니다.

확장보드와 확장보드를 통해 각종 센서로 부터 입력 받은 값을 여러가지 아웃풋으로 보여 줄수 있고,
확장보드와 연결도 간단한 클립형태로 연결할 수 있어서 초등학생도 어렵지 않게 사용할 수 있도록 구성되어 있습니다. 


마이크로비트 지니어스키트 공식 구입처 : 아이씨뱅큐 http://www.icbanq.com/
아이씨뱅큐 공식 카페 : http://cafe.naver.com/icbanq
아이씨뱅큐 공식 블로그 : http://blog.naver.com/icbanq
마이크로비트 공식 카페 : http://cafe.naver.com/bbcmicro
나도메이커 유튜브 채널 : https://www.youtube.com/user/ICbanQ

무상체험단 모집(마이크로비트 지니어스키트)

OS/micro:bit 2018.10.31 01:22 Posted by 파란크리스마스


안녕하세요 ! :D
요즘 가장 핫한 오픈소스하드웨어는? 바로!
마이크로비트 라고 할 수 있죠!
마이크로비트를 더욱 더 다양하게 활용해볼 수 있는 <지니어스키트> 가 드디어 체험단을 진행하게 되었습니다.

이번에는 이전과 조금 다른 체험단 신청 방법으로 진행 될 예정인데요!

아래 순서로 진행해주시면 됩니다.

1. 나도메이커 카페 가입 : https://cafe.naver.com/icbanq
2. 마이크로비트 카페 가입 : https://cafe.naver.com/bbcmicro
3. 지금 보고 계시는 게시글을 SNS 에 스크랩 !
4. 체험단 신청서 작성!
5. 유튜브 '나도메이커' 채널 구독 시 당첨 확률 UPUP!!
체험단 신청하러 가기 ▶ https://goo.gl/Y1ByVP
유튜브 구독 하러 가기 ▶ https://goo.gl/tJ9Znc


micro:bit - Camera (LS-Y201) image writing to SD

OS/micro:bit 2018.06.17 13:02 Posted by 파란크리스마스

출처

Camera (LS-Y201)

micro:bit를 이용해서 카메라로 입력받은 이미지 데이터를 SD 메모리에 저장해보았습니다.

소스

//#include "MicroBit.h"
//#include "MicroBitSerial.h"
#include "Camera_LS_Y201.h"
#include "SDFileSystem.h"

#define DEBMSG      printf
#define NEWLINE()   printf("\r\n")
#define FILENAME    "/sd/IMG_%04d.jpg"

SDFileSystem sd(P0_21, P0_22, P0_23, P0_16, "sd"); // mosi, miso, sclk, cs
Camera_LS_Y201 cam1(P0_2, P0_3);
//MicroBitSerial serial(USBTX, USBRX);

typedef struct work {
    FILE *fp;
} work_t;
 
work_t work;
 
/**
 * Callback function for readJpegFileContent.
 *
 * @param buf A pointer to a buffer.
 * @param siz A size of the buffer.
 */
void callback_func(int done, int total, uint8_t *buf, size_t siz) {
    fwrite(buf, siz, 1, work.fp);
 
    static int n = 0;
    int tmp = done * 100 / total;
    if (n != tmp) {
        n = tmp;
        DEBMSG("Writing...: %3d%%", n);
        NEWLINE();
    }
}
 
/**
 * Capture.
 *
 * @param cam A pointer to a camera object.
 * @param filename The file name.
 *
 * @return Return 0 if it succeed.
 */
int capture(Camera_LS_Y201 *cam, char *filename) {
    /*
     * Take a picture.
     */
    if (cam->takePicture() != 0) {
        return -1;
    }
    DEBMSG("Captured.");
    NEWLINE();
 
    /*
     * Open file.
     */
    work.fp = fopen(filename, "wb");
    if (work.fp == NULL) {
        return -2;
    }
 
    /*
     * Read the content.
     */
    DEBMSG("%s", filename);
    NEWLINE();
    if (cam->readJpegFileContent(callback_func) != 0) {
        fclose(work.fp);
        return -3;
    }
    fclose(work.fp);
 
    /*
     * Stop taking pictures.
     */
    cam->stopTakingPictures();
 
    return 0;
}

int main() {
	  DEBMSG("Camera module");
	  NEWLINE();
	  DEBMSG("Resetting...");
	  NEWLINE();
	  wait(1);

	  if (cam1.reset() == 0) {
	      DEBMSG("Reset OK.");
	      NEWLINE();
	  } else {
	      DEBMSG("Reset fail.");
	      NEWLINE();
	      error("Reset fail.");
	  }
	  wait(1);

	  int cnt = 0;
	  while (1) {
	      char fname[64];
	      snprintf(fname, sizeof(fname) - 1, FILENAME, cnt);
	      int r = capture(&cam1, fname);
	      if (r == 0) {
	          DEBMSG("[%04d]:OK.", cnt);
	          NEWLINE();
	      } else {
	          DEBMSG("[%04d]:NG. (code=%d)", cnt, r);
	          NEWLINE();
	          error("Failure.");
	      }
	      cnt++;
	  }
}

HEX 파일

pulse-combined.zip

실행

yotta 설치

OS/micro:bit 2018.06.16 04:15 Posted by 파란크리스마스

출처

yotta 설치

python.exe -m pip install --upgrade pip==9.0.3
pip install --upgrade setuptools
pip install -I -U yotta

환경변수 설정 (run_yotta.bat c:\yotta 명령으로 설정 가능)

YOTTA_INSTALL_LOCATION=C:\yotta
YOTTA_PATH=;C:\yotta;C:\yotta\gcc\bin;C:\yotta\python;C:\yotta\python\Scripts;C:\yotta\cmake-3.4.0-rc3-win32-x86\bin;C:\yotta\git-scm\bin;C:\yotta\mercurial\bin;
PATH=C:\yotta;C:\yotta\python\;C:\yotta\python\Scripts;C:\yotta\cmake-3.4.0-rc3-win32-x86\bin;%PATH%

개발환경 만들기

D:\>run_yotta.bat
(workspace) D:\>mkdir pulse
(workspace) D:\>cd pulse
(workspace) D:\pulse>yotta init
(workspace) D:\pulse>yotta target bbc-microbit-classic-gcc
(workspace) D:\pulse>yotta install lancaster-university/microbit

main.cpp

#include "MicroBit.h" 
 
MicroBit uBit;  
 
int main() { 
  uBit.init(); 
  uBit.display.scroll("http://bluexmas.tistory.com"); 
  release_fiber(); 
}

빌드 - hex 파일 생성

(workspace) D:\pulse>yotta build

실행

pulse-combined.hex 파일 마이크로 비트에 복사

micro:bit - pxt 설치(오프라인 블럭 컴파일러 구축)

OS/micro:bit 2018.04.07 22:45 Posted by 파란크리스마스

출처

windows-build-tools 설치(관리자모드)

출처 : Thinker :: error MSB3428: Visual C++ 구성 요소 "VCBuild.exe"을(를) 로드할 수 ...

C:\WINDOWS\system32>npm install --global --production windows-build-tools

> windows-build-tools@3.0.1 postinstall C:\Users\bluesanta\AppData\Roaming\npm\node_modules\windows-build-tools
> node ./dist/index.js

Downloading BuildTools_Full.exe
[============================================>] 100.0% of 3.29 MB (3.29 MB/s)
Downloaded BuildTools_Full.exe. Saved to C:\Users\bluesanta\.windows-build-tools\BuildTools_Full.exe.

Starting installation...
Launched installers, now waiting for them to finish.
This will likely take some time - please be patient!

Status from the installers:
---------- Visual Studio Build Tools ----------
---------- Visual Studio Build Tools ----------
Successfully installed Visual Studio Build Tools.
------------------- Python --------------------
Python 2.7.15 is already installed, not installing again.

All done!

+ windows-build-tools@3.0.1
added 141 packages in 310.658s

pxt 관련 라이브러리 설치

D:\microbit>npm install -g jake
C:\Users\bluesanta\AppData\Roaming\npm\jake -> C:\Users\bluesanta\AppData\Roaming\npm\node_modules\jake\bin\cli.js
+ jake@8.0.16
added 13 packages in 2.485s

D:\microbit>npm install -g typings
npm WARN deprecated typings@2.1.1: Typings is deprecated in favor of NPM @types -- see README for more information
C:\Users\bluesanta\AppData\Roaming\npm\typings -> C:\Users\bluesanta\AppData\Roaming\npm\node_modules\typings\dist\bin.js
+ typings@2.1.1
added 183 packages in 12.988s

pxt 다운로드

D:\microbit>git clone https://github.com/microsoft/pxt
Cloning into 'pxt'...
remote: Counting objects: 52887, done.
remote: Compressing objects: 100% (424/424), done.
remote: Total 52887 (delta 311), reused 324 (delta 173), pack-reused 52279
Receiving objects: 100% (52887/52887), 131.47 MiB | 197.00 KiB/s, done.
Resolving deltas: 100% (37029/37029), done.

D:\microbit>cd pxt

D:\microbit\pxt>git checkout v0
Switched to a new branch 'v0'
Branch 'v0' set up to track remote branch 'v0' from 'origin'.

pxt 설치

D:\microbit\pxt>npm install npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}) added 115 packages in 12.661s D:\microbit\pxt>typings install D:\microbit\pxt>jake D:\microbit\pxt>cd ../ D:\microbit>

pxt-microbit 설치

D:\microbit>git clone https://github.com/microsoft/pxt-microbit
D:\microbit>cd pxt-microbit
D:\microbit\pxt-microbit>npm install -g pxt
D:\microbit\pxt-microbit>npm install
D:\microbit\pxt-microbit>npm link ../pxt
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

added 115 packages in 21.441s
C:\server\node-v8.9.1-win-x64\node_modules\pxt-core -> D:\microbit\pxt
D:\microbit\pxt-microbit\node_modules\pxt-core -> C:\server\node-v8.9.1-win-x64\node_modules\pxt-core -> D:\microbit\pxt

pxt 서버 실행

(workspace) D:\>mkdir pxtsrc

(workspace) D:\>cd pxtsrc

(workspace) D:\pxtsrc>pxt target microbit
Installing pxt-microbit locally; don't worry about package.json warnings.

> keytar@4.2.1 install D:\pxtsrc\node_modules\keytar
> prebuild-install || node-gyp rebuild

prebuild-install info begin Prebuild-install version 2.5.1
prebuild-install info looking for local prebuild @ prebuilds\keytar-v4.2.1-node-v57-win32-x64.tar.gz
prebuild-install info looking for cached prebuild @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-atom-node-keytar-releases-download-v4.2.1-keytar-v4.2.1-node-v57-win32-x64.tar.gz
prebuild-install info found cached prebuild
prebuild-install info unpacking @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-atom-node-keytar-releases-download-v4.2.1-keytar-v4.2.1-node-v57-win32-x64.tar.gz
prebuild-install info unpack resolved to D:\pxtsrc\node_modules\keytar\build\Release\keytar.node
prebuild-install info unpack required D:\pxtsrc\node_modules\keytar\build\Release\keytar.node successfully
prebuild-install info install Successfully installed prebuilt binary!

> node-hid@0.5.7 install D:\pxtsrc\node_modules\node-hid
> prebuild-install || node-gyp rebuild

prebuild-install info begin Prebuild-install version 2.5.1
prebuild-install info looking for local prebuild @ prebuilds\node-hid-v0.5.7-node-v57-win32-x64.tar.gz
prebuild-install info looking for cached prebuild @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-node-hid-node-hid-releases-download-v0.5.7-node-hid-v0.5.7-node-v57-win32-x64.tar.gz
prebuild-install info found cached prebuild
prebuild-install info unpacking @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-node-hid-node-hid-releases-download-v0.5.7-node-hid-v0.5.7-node-v57-win32-x64.tar.gz
prebuild-install info unpack resolved to D:\pxtsrc\node_modules\node-hid\build\Release\HID.node
prebuild-install info unpack required D:\pxtsrc\node_modules\node-hid\build\Release\HID.node successfully
prebuild-install info install Successfully installed prebuilt binary!

> serialport@6.1.1 install D:\pxtsrc\node_modules\serialport
> prebuild-install || node-gyp rebuild

prebuild-install info begin Prebuild-install version 2.5.1
prebuild-install info looking for local prebuild @ prebuilds\serialport-v6.1.1-node-v57-win32-x64.tar.gz
prebuild-install info looking for cached prebuild @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-node-serialport-node-serialport-releases-download-v6.1.1-serialport-v6.1.1-node-v57-win32-x64.tar.gz
prebuild-install info found cached prebuild
prebuild-install info unpacking @ C:\Users\bluesanta\AppData\Roaming\npm-cache\_prebuilds\https-github.com-node-serialport-node-serialport-releases-download-v6.1.1-serialport-v6.1.1-node-v57-win32-x64.tar.gz
prebuild-install info unpack resolved to D:\pxtsrc\node_modules\serialport\build\Release\serialport.node
prebuild-install info unpack required D:\pxtsrc\node_modules\serialport\build\Release\serialport.node successfully
prebuild-install info install Successfully installed prebuilt binary!
npm WARN saveError ENOENT: no such file or directory, open 'D:\pxtsrc\package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open 'D:\pxtsrc\package.json'
npm WARN pxtsrc No description
npm WARN pxtsrc No repository field.
npm WARN pxtsrc No README data
npm WARN pxtsrc No license field.

+ pxt-microbit@0.14.30
added 384 packages in 15.705s
Installed PXT/microbit. To start server run:
    pxt serve

(workspace) D:\pxtsrc>pxt serve
Using target PXT/microbit with build engine yotta
  Target dir:   D:\pxtsrc\node_modules\pxt-microbit
  PXT Core dir: D:\pxtsrc\node_modules\pxt-core
Invalid accessToken format, expecting something like 'https://example.com/?access_token=0abcd.XXXX'
Going to D:\pxtsrc\node_modules\pxt-microbit
No sim/tsconfig.json; assuming npm installed package
Starting server in D:\pxtsrc\node_modules\pxt-microbit
With pxt core at D:\pxtsrc\node_modules\pxt-core
starting local ws server at 3233...
serial: monitoring ports...
---------------------------------------------

To launch the editor, open this URL:
http://localhost:3232/#local_token=452b727d-6d77-4d83-98d5-0bdab305f72e&wsport=3233

---------------------------------------------
opening http://localhost:3232/#local_token=452b727d-6d77-4d83-98d5-0bdab305f72e&wsport=3233

프로젝트 생성

D:\pxtsrc\projects>mkdir pxt-ultrasonic-microbit

D:\pxtsrc\projects>cd pxt-ultrasonic-microbit

D:\pxtsrc\projects\pxt-ultrasonic-microbit>pxt init
Using target PXT/microbit with build engine yotta
  Target dir:   D:\pxtsrc\node_modules\pxt-microbit
  PXT Core dir: D:\pxtsrc\node_modules\pxt-core
Invalid accessToken format, expecting something like 'https://example.com/?access_token=0abcd.XXXX'
name [ultrasonic-microbit]:
description []:
license [MIT]:
skipping download of local pkg: file:.
Package initialized.
Try 'pxt add' to add optional features.

D:\pxtsrc\projects\pxt-ultrasonic-microbit>code .

빌드

micro:bit - 라인 트레이서(Line Trace Sensor)

OS/micro:bit 2018.03.18 17:01 Posted by 파란크리스마스

출처 : Motor Driver Board for the BBC micro:bit - V2 | Kitronik
Blog Yamasho: Delphi 10.2.2:Bleで Microbitと通信する。
googlesamples/android-BluetoothLeGatt - GitHub
ButtonService - micro:bit runtime
microbit-samples/source/examples/bluetooth-services/main.cpp - GitHub
https://github.com/lancaster-university/microbit-dal/issues/337
Advanced - micro:bit runtime - GitHub Pages
Send/Receive Data Using BLE and MBED | BBC:Microbit - Instructables

micro:bit - 라인 트레이서(Line Trace Sensor)

라인트레이서 센서와 초음파 거리센서(HC-SR04)를 이용해서 라인을 따라서 가면서 장애물이 있으면 멈추는 RC카를 구현했습니다.

소스

#include "MicroBit.h"
#include "MicroBitSerial.h"
#include "hcsr04.h"

//MicroBit uBit;
MicroBitSerial serial(USBTX, USBRX);
HCSR04 usensor(P0_0, P0_30); // P0_0 TRIGGER P0_30 ECHO
unsigned int dist;

//
// P0_1, P0_26, P0_17 성공 - line
// P0_18, P0_20, P0_3, P0_16 - moter

//AnalogIn ain(P0_3);
DigitalIn LINE_T1(P0_1);
DigitalIn LINE_T2(P0_23);
DigitalIn LINE_T3(P0_21);
DigitalIn LINE_T4(P0_22);

int main() {
	//uBit.init();
	//uBit.display.scroll("init", 70);
	serial.printf("init : \r\n");
	 
	while(1) {
		usensor.start();
		wait_ms(500);
		dist = usensor.get_dist_cm();
		serial.printf("-------------------------\r\n d:%d\r\n", dist);
		
		/*
		float x = ain.read();
		int aa = (int)(x *  1000);
		serial.printf("%d \r\n", aa);
		*/

		serial.printf("1:%d - ", LINE_T1.read());
		serial.printf("2:%d - ", LINE_T2.read());
		serial.printf("3:%d - ", LINE_T3.read());

		if (LINE_T4 == 1) {
			serial.printf("4:1\r\n");
		} else {
			serial.printf("4:0\r\n");
		}
	}
}

콘솔 로그

소스 - micro:bit - RC Car - Line Trace Sensor

source.zip

#include "MicroBit.h"
#include "MicroBitSerial.h"
#include "hcsr04.h"

MicroBit uBit;
//MicroBitSerial serial(USBTX, USBRX);
HCSR04 usensor(P0_3, P0_2); // P0_0 TRIGGER P0_30 ECHO
unsigned int dist;

//
// P0_1, P0_26, P0_17 성공 - line
// P0_18, P0_20, P0_3, P0_16 - moter

//AnalogIn ain(P0_3);
DigitalIn LINE_T1(P0_1);
DigitalIn LINE_T2(P0_23);
DigitalIn LINE_T3(P0_21);
DigitalIn LINE_T4(P0_22);

#define MOTER_LOW            0
#define MOTER_HIGH           0.32 // 스피드 - 0 ~ 1 | 최대속도 = 1
 
PwmOut moter_right_front(P0_18);    //12 - right
PwmOut moter_right_back(P0_20);     //8
PwmOut moter_left_front(P0_3);      //16 - left
PwmOut moter_left_back(P0_16);          //0
 
//모터A,B 정회전
void bothMotorStart()
{
  moter_right_front = MOTER_HIGH;
  moter_right_back = MOTER_LOW;
  moter_left_front = MOTER_HIGH;
  moter_left_back = MOTER_LOW;
}
  
//모터A,B 역회전
void bothMotorBack()
{
  moter_right_front = MOTER_LOW;
  moter_right_back = MOTER_HIGH;
  moter_left_front = MOTER_LOW;
  moter_left_back = MOTER_HIGH;
}
    
//모터A,B Stop
void stopAllMotor()
{
  moter_right_front = MOTER_LOW;
  moter_right_back = MOTER_LOW;
  moter_left_front = MOTER_LOW;
  moter_left_back = MOTER_LOW;
}
    
//모터A 역회전, 모터B 정회전
void turnLeft()
{
  moter_right_front = MOTER_LOW;
  moter_right_back = MOTER_HIGH;
  moter_left_front = MOTER_HIGH;
  moter_left_back = MOTER_LOW;
}
    
//모터A 정회전, 모터B 역회전
void turnRight()
{
  moter_right_front = MOTER_HIGH;
  moter_right_back = MOTER_LOW;
  moter_left_front = MOTER_LOW;
  moter_left_back = MOTER_HIGH;
}
    
//모터A 정회전, 모터B Stop
void motorA_Rotation()
{
  moter_right_front = MOTER_HIGH;
  moter_right_back = MOTER_LOW;
  moter_left_front = MOTER_LOW;
  moter_left_back = MOTER_LOW;
}
    
//모터A Stop, 모터B 정회전
void motorB_Rotation()
{
  moter_right_front = MOTER_LOW;
  moter_right_back = MOTER_LOW;
  moter_left_front = MOTER_HIGH;
  moter_left_back = MOTER_LOW;
}
    
//모터A 역회전, 모터B Stop
void motorA_Reverse()
{
  moter_right_front = MOTER_LOW;
  moter_right_back = MOTER_HIGH;
  moter_left_front = MOTER_LOW;
  moter_left_back = MOTER_LOW;
}
    
//모터A Stop, 모터B 역회전
void motorB_Reverse()
{
  moter_right_front = MOTER_LOW;
  moter_right_back = MOTER_LOW;
  moter_left_front = MOTER_LOW;
  moter_left_back = MOTER_HIGH;
}

int main() {
	uBit.init();
	uBit.display.scroll("init", 70);
	uBit.serial.printf("init : \r\n");
	 
	while(1) {
		usensor.start();
		wait_ms(50);
		dist = usensor.get_dist_cm();
		uBit.serial.printf("-------------------------\r\n d:%d\r\n", dist);
		uBit.serial.printf("%d, %d, %d, %d\r\n", LINE_T1.read(),LINE_T2.read(),LINE_T3.read(),LINE_T4.read());

		if (dist <= 10) {
			stopAllMotor();
		} else {
			if (LINE_T2 == 1 || LINE_T3 == 1) {
				bothMotorStart();
			} else if (LINE_T1 == 1) {
				turnRight();
			} else if (LINE_T4 == 1) {
				turnLeft();
			} else {
				bothMotorStart();
			}
		}

	}
}

micro:bit - RC Car - Line Trace Sensor

micro:bit - 초음파 거리센서(HC-SR04)

OS/micro:bit 2018.03.15 00:18 Posted by 파란크리스마스

출처 : Steve136/microbit-ultrasonic: Example usage of a HC-SR04 Ultrasonic Sensor and the BBC Micro:Bit.
HCSR04 - Ultrasound Ranging Sensor module | Mbed

micro:bit - 초음파 거리센서(HC-SR04)

 

소스

#include "MicroBit.h"
#include "hcsr04.h"

MicroBit uBit;
HCSR04 usensor(P0_3, P0_2); // TRIGGER, ECHO
unsigned int dist;

int main() {
	uBit.init();
	uBit.display.scroll("init", 70);
	
	while(1) {
		usensor.start();
		wait_ms(500); 
		dist = usensor.get_dist_cm();
		
		char buf[100];
		sprintf (buf, "d:%d", dist);
		uBit.display.scroll(buf, 70);
		wait(1.0); // 1 sec  
	}
}

micro:bit - SD Card File 생성 및 쓰기

OS/micro:bit 2018.02.25 20:56 Posted by 파란크리스마스

출처 : SD Card File System - Cookbook | Mbed
FATFileSystem - FATFileSystem | Mbed

micro:bit - SD Card File 생성 및 쓰기

SD Card File System와 FATFileSystem 라이브러리를 사용해서 micro:bit에서 마이크로 SD에 파일 쓰기 예제를 만들어 보았습니다.
Microsoft Block용 라이브러리인 pxt-microsd-microbit도 공개 되어 있으니 참고 하세요.

소스

#include "MicroBit.h"
#include "SDFileSystem.h"

MicroBit uBit;

SDFileSystem sd(P0_21, P0_22, P0_23, P0_16, "sd"); // mosi, miso, sclk, cs

int main() {
	//uBit.init();
	
	//디렉토리 생성
	//mkdir("/sd/mydir", 0777);
	
	// 파일 열기
	FILE *fp = fopen("/sd/microbit.txt", "w");
	if(fp == NULL) {
		error("Could not open file for write\n");
	}
	// 파일 쓰기
	fprintf(fp, "Hello World!\n");
	// 파일 닫기
	fclose(fp);
}