알리 익스프레스에서 3D 프린터를 구매하였다. 처음에는 옥션에서 판매하는 프린터봇을 구매하려고 했는데, 아무래도 수리를 하거나 업그레이드를 위한 파트를 교체하는 데 어려움이 있을 것 같고 인쇄물 크기가 만족스럽지 않아서 이런 험난한 길- 푸르사 멘델 조립-을 선택하게 되었다. 우선 제품의 신뢰성을 검증하기 위하여 상품평을 찾아보는데, 여러 나라에서 구매한 사용자들이 꽤 많은 피드백을 남겨 놓았고 그 것들을 종합해보면 다음과 같았다. - 배송 빠르다. - 베어링이 뻑뻑하다. - 안 맞는 부폼이 조금 있다. - 같이 제공되는 조립 설명 동영상은 중국어다. 하지만 보면서 쉽게 따라 할 수 있다. - 그래도 좋다. 전반적인 상품 피드백을 보면 프린터 조립에 어느 정도 수준 이상의 난이도가 필요하다는 것을 알 수..
FileObserver 안드로이드에서 제공하는 파일 모니터링을 위한 API 인 FileObserver 에 대하여 알아보겠다. FileObserver 는 안드로이드 내부에 접근할 수 있는 각각의 파일과 디렉토리의 접근이나 변경에 대한 이벤트를 비동기적으로 받아올 수 있다. 이 클래스는 리눅스 커널에서 제공하는 파일 감시 모듈인 inotify (클릭시 위키로 이동) 의 네이티브 API 들을 JNI 를 통해서 호출한다. FileObserver 를 사용하면 내부적으로 쓰레드 하나가 (static 으로)생성된다. 우선 기본 사용법에 대하여 알아보자. (참고 페이지 - 안드로이드 레퍼런스 : http://developer.android.com/reference/android/os/FileObserver.html) ..
아두이노 에서 사용하는 마이크로 컨트롤러는 작은 양의 RAM 공간을 갖고 있습니다. 아두이노 우노 에서 사용하는 ATmega328 계열은 고작2Kbyte 의 공간을 갖고 있으며 기본적으로 200에서 300byte 정도의 메모리가 소비되는 것을 볼 수 있었습니다. 스케치 코드를 짜면서 무분별한 변수 선언이나 지나친 메모리 할당은 아두이노 스케치가 오동작 할 수 있는 상황을 야기시킬 수 있기 때문에 코딩중 고심하게 만드는 부분중에 하나입니다. 심지어 메모리 누수(Memory leak) 버그가 발생하면 코딱지 만한 메모리 공간은 쓰레기로 가득 찰 것입니다. 다행히도 아두이노에 남아있는 메모리 사용량을 실시간으로 체크할 수 있는 방법이 존재합니다. 그리고 그것을 라이브러리로 쓰기 편하게 만들어 주신 분도 있습니..
우선 해외 사이트 중에 Attiny85 에 아두이노를 올리는 것에 대해 자세히 나와있는 아주 좋은 포스팅이 하나 있다.http://highlowtech.org/?p=1695 하지만, 이 포스팅을 보고 순서대로 따라해 보았지만 동작하지 않았다. 대략 원인은 위 포스팅에 나와있는 아두이노 우노 R2 에서는 잘 올라가지만 직접 테스트 해본 아두이노 우노 R3 에서는 문제가 발생하는 것으로 예상하고 있다. 물론 아두이노 (호환)나노, 아두이노 (호환)미니 에서도 동작하지 않았다. 위에 링크로 올린 http://highlowtech.org/?p=1695 에서는 아주 간단한 방법으로 부트로더도 올리고 Blink 예제도 올리고 있지만, 앞서 언급한대로 잘 되지 않으므로 정공법으로 부트로더를 올리고 스케치 프로그램을 ..
Exchanger 는 뜻 그대로 쓰레드상에서 두 개의 인스턴스를 교환해주는 역할을 한다. 만약 한쪽의 쓰레드에서만 교환 메소드를 호출한다면 다른쪽에서 교환 메소드를 호출하기 전까지 대기하고 있는데. 이 클래스는 java 의 gc 와 같은 동작에서 사용할 수 있다. 예를 들어 설명하면 다음과 같다. (이해를 돕기 위하여 '요청' 이라는 표현을 사용하였다. 정확히는 교환 대상이 되는 인스턴스 값을 인자로 하는 교환 메소드 호출이다.) 1. 데이터를 '스택에 쌓는 쓰레드' 와, '스택을 비우는 쓰레드' 가 있다. 이 두 개의 쓰레드에는 각각의 '스택' 이 있다. 2. 데이터를 '스택에 쌓는 쓰레드' 는 계속해서 데이터를 자신의 '스택' 에 추가한다. 이 동작을 반복하다 스택이 가득차면 '스택' 교환을 요청하고..
이전 포스팅 '저렴한 RGB LED(WS2812B) 구임/사용기' 라는 포스팅에서 WS2812B 에 대하여 잠깐 소개한적이 있다. 간단한 사용 방법에 대하여 소개를 하지 않아서 본격적으로 사용법에 대하여 소개를 하려고 한다. 우선 구입은 Aliexpress 와 같은 해외 사이트를 추천한다. 글을 올린 시간 기준으로 100개에 약 18달러정도 한다. (http://www.aliexpress.com/premium/WS2812B-100pcs-Heatsink.html?ltype=wholesale&d=y&origin=y&SearchText=WS2812B+100pcs+Heatsink&isPremium=y&initiative_id=SB_20141005041503&isViewCP=y&catId=) 뿐만 아니라 LED ..
우선 CRC 와 CRC CITT 에 대한 설명은 아래 두 사이트에서 볼 수 있다. CRC(cyclic redundancy check) 에 관한 설명, 위키 링크(클릭)CRC16-CITT 에 대한 설명과 코드 페이지 링크(클릭) 보통 구글링을 하면 나오는 CRC 코드는 CRC 값 계산을 위한 테이블을 미리 생성하거나 코드에 포함시키기 때문에 아두이노에 올리기에 부담스럽다. 아두이노 UNO 의 메모리 크기는 달랑 2Kbyte 밖에 안 되는데 CRC 값 계산을 위한 테이블은 이론상 512byte 씩이나 되기 때문이다. (실제로는 좀 더 작은 크기를 점유하고 있다.) SRAM을 직접 연결하거나 메모리 쉴드를 달면 조금 나아지겠지만, 일단 그냥 올리기에는 부담스러운 것이 사실이다. 그래서 인터넷 이곳 저곳에서 긁..
우선 AndroidManifest.xml 에서 액티비티를 설정할 때, 속성값으로 액티비티 활성화/비활성화 값을 줄 수 있다. 만약 액티비티 비활성화를 한다면, Context 내의 startActivity 메소드를 이용하여 비활성화 된 액티비티를 호출시 앱은 ActivityNotFoundException 을 발생시키고 크래쉬가 발생하게 된다. 또 런처에서 실행시키기 위하여 내부의 설정 앨리먼트 로 과 옵션을 지정해줬다고 해도 런처내에 액티비티의 아이콘이 표시되지 않는다. 그리고, 이 것을 Manifest 파일에서만이 아닌 코드상에서도 PackageManager 의 setComponentEnabledSetting 으로 제어할 수 있다. 사용법은 무지 간단한데, 만약 Activity 내부에서 호출한다면 다음과..
CyclicBarrier 를 사용하면 동시에 실행되는 쓰레드 내부 원하는 지점에서 대기를 걸어주고 모든 쓰레드가 대기 상태에 들어갔을때, 대기를 풀어주는 동작을 할 수 있다. 예를들어 설명하면 N 개의 쓰레드가 돌고 있다고 가정하고 CyclicBarrier 를 생성할 때 인자값으로 N 을 준다. 각각의 쓰레드 내에서 CyclicBarrier 의 await() 를 호출하고 호출 횟수가 N번에 도달했을 때, N개의 모든 쓰레드의 대기 상태가 해제된다. 아래 그림 참고. 설명이 조금 애매한데, 그냥 대충 보고 눈치것 이해하는 것이 좋다. CyclicBarrier를 활용한 예제코드:public class main { private final static int THREADS = 5; private static ..
만약 백그라운드에서 실행되고 있는 싱글 쓰레드가 종료되기를 기다리는 코드를 작성해야 한다면 당장 Thread 클래스의 join() 메소드 부터 떠올리게 될 것이다. 아래와 같이 말이다. 간단한 join() 사용예:Thread thread = new Thread() { @Override public void run() { System.out.println("start trhead."); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("end trhead."); } }; thread.start(); try { // 스레드가 끝날때 까지 대기한다. thread.join();..
이전에 알리 익스프레스에서 구입한 OLED 사용기(http://dev.re.kr/47)에서 OLED 제어에 대하여 간략하게 올린적이 있습니다만 그것보다 더 편리한 u8glib 사용에 대하여 정리해 보도록 하겠습니다. 좀 더 자세한 튜토리얼과 레퍼런스는 이 곳 https://code.google.com/p/u8glib/wiki/u8glib?tm=6 페이지 에서 확인 할 수 있습니다. 우선 제어하려고 하는 OLED 가 SPI 로 통신하는지 I2C 로 통신하는지부터 알아야 하며, 내장 컨트롤러에 대한 정보도 알아야 한다. OLED 를 판매하는 인터넷 쇼핑몰 페이지의 상세 정보나 데이터시트를 참고하거나, 모델명으로 구글링해보면 OLED 컨트롤러에 대한 정보를 얻을 수 있다. 지금 테스트 해보려는 OLED 는 아..
- Total
- Today
- Yesterday
- 개발
- ESP8266
- arduino
- 이더넷
- HC-06
- 칩두이노
- NeoPixel
- oled
- Java
- WS2812B
- 아두이노
- activity
- Cheapduino
- 부트로더
- 알리익스프레스
- ENC28J60
- noidemcu
- json
- 병렬 프로그래밍
- ATtiny85
- ndk
- Iot
- 안드로이드
- 침블락
- bluetooth
- 스마트 무드등
- 블루투스
- 가습기
- 안드로이드 개발
- Android
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |