레이블이 모듈인 게시물을 표시합니다. 모든 게시물 표시
레이블이 모듈인 게시물을 표시합니다. 모든 게시물 표시

2015년 6월 4일 목요일

Adafruit의 5채널 터치 센서 모듈 AT42QT1070 간단 소개

 개인 프로젝트에서 사용하려고 주문한 Adafruit 5채널 터치 센서 모듈 AT42QT1070 이라는 모듈이 도착했다.

[그림 1] 센서 모듈 (제품 홈페이지)

사용법은 정말 간단한데 전원(1.8V~5.5V)을 연결한 후 입력 핀에 (전도성) 터치 패드를 연결하면 출력 핀에 터치 여부에 따라서 디지털 출력이 나오게 된다. I2C 통신 같은 기능 없이 이렇게만 사용할 수 있다. 도전 패드의 최소 크기는 6x6mm 이다.

 간단하게 VDD에 3.3V를 인가하고 GND도 연결하고 입력 쪽 핀들을 터치해 보니 출력쪽의 LED가 반응하는 것을 볼 수 있다. 각 출력에 LED가 달려 있어서 디지털 출력 신호를 눈으로도 확인할 수 있었다.

 이 모듈의 치명적인 단점은 한 번에 하나의 입력만 감지한다는 것이다. 즉, 동시에 여러 개의 터치를 처리하지 못한다. 여러 개를 터치해도 오직 하나의 출력만 나온다. 이것은 상당히 치명적인 단점이므로 프로젝트에서 사용할 때 이 부분을 고려해야 한다.


2015년 4월 29일 수요일

winPython 에서 초기에 로드되는 모듈을 조정하기

  winPython의 python 콘솔을 실행하면 pylab 이 기본적으로 import 되어서 함수들을 엄격하게 구분해서 사용하는 것이 무척 불편하다. pylab 을 사용하는 것은 파이썬 커뮤니티 안에서 권하지 않는다.

 파이썬 콘솔에서 백그라운드로 임포트되는 모듈들은 다음과 같이 'scientific'이라는 명령을 입력하면 상세한 내용을 확인할 수 있다.
-----------------------------------------------------------------------
>>> scientific

This is a standard Python interpreter with preloaded tools for scientific
computing and visualization. It tries to import the following modules:

>>> import numpy as np  # NumPy (multidimensional arrays, linear algebra, ...)
>>> import scipy as sp  # SciPy (signal and image processing library)
>>> import matplotlib as mpl         # Matplotlib (2D/3D plotting library)
>>> import matplotlib.pyplot as plt  # Matplotlib's pyplot: MATLAB-like syntax
>>> from pylab import *              # Matplotlib's pylab interface
>>> ion()                            # Turned on Matplotlib's interactive mode
>>> import guidata  # GUI generation for easy dataset editing and display

>>> import guiqwt                 # Efficient 2D data-plotting features
>>> import guiqwt.pyplot as plt_  # guiqwt's pyplot: MATLAB-like syntax
>>> plt_.ion()                    # Turned on guiqwt's interactive mode

Within Spyder, this interpreter also provides:
   * special commands (e.g. %ls, %pwd, %clear)
   * system commands, i.e. all commands starting with '!' are subprocessed
     (e.g. !dir on Windows or !ls on Linux, and so on)
-----------------------------------------------------------------------
 
파이썬 콘솔 기동시에 pylab을 import 하지 않으려면 다음과 같은 과정을 거쳐야 한다. 먼저 Tools > Preferences 의 Console 탭에서 Advanced settings 항목으로 들어간다.


여기서 Default PYTHONSTARTUP scrip 를 선택하면 파이썬의 기본적인 세팅으로 기동하는 것이다. 아예 아무런 모듈도 import하지 않고 시작하려면 이것을 체크하면 된다.

 과학계산 모듈을 초기에 import 하는 일은 scientific_startup.py 에 기록되어 있는데 아래 그림과 같이 pylab을 로딩하는 부분을 주석 처리하면 pylab 이 import 되는 것을 막을 수 있다.


추가적으로

              %ls (파일리스트)
              %pwd (현재 디렉토리)
              %clear

등의 명령이 사용가능함을 알 수 있다.

2015년 4월 24일 금요일

[00085] 폴더를 파이썬 모듈로 만들기

  파이썬에서 사용자 폴더를 검색 경로에 추가시키기 위해서는 다음과 같이 sys 모듈의 path 리스트에 이 경로를 추가해 주면 된다.

---------------------------------------------------------------------------
>>> import sys
>>> sys.path.append('d:/mydir') # 윈도는 'd:\\mydir'
---------------------------------------------------------------------------

그러면 만약 다음과 같이 모듈을 import 할 때

---------------------------------------------------------------------------
>>> import mymod
---------------------------------------------------------------------------

사용자 폴더 안에서도 mymod.py 파일이 있는지 검색해 보게 된다.
  그런데 검색 경로 안에 어떤 폴더가 있고 그 폴더 안에 __init__.py 파일이 있다면 이것은 그 폴더가 파이썬 모듈이라는 것을 표시하는 역할을 한다. 예를 들어 다음과 같이 spam폴더 안에 파일이 두 개가 있다고 가정하자.


    d:/ mydir / spam /__init__.py # 이 파일이 spam 폴더를 파이썬모듈로 만든다.
    d:/ mydir /spam / module.py

그리고 d:/mydir 이 경로로 잡혀있다고 가정한다. 그렇다면 spam 폴더는 파이썬 모듈로 간주되고 module.py는 하위모듈로 취급된다. 그래서 module.py 모듈파일을 다음과 같이 불러올 수 있다.

---------------------------------------------------------------------------
>>> import spam.module
---------------------------------------------------------------------------

또는

---------------------------------------------------------------------------
>>> from spam import module
---------------------------------------------------------------------------

즉, spam폴더 안에 __init__.py 파일이 있다면 spam 폴더는 모듈로 간주되고 module.py 는 서브모듈이 된다. 만약 __init__.py 파일을 지운다면 파이썬은 spam 폴더를 모듈로 취급하지 않으므로 module.py 도 더이상 서브모듈로 간주되지 않는다. 따라서 위의 명령어는 오류를 발생시킬 것이다.

이 __init__.py 은 그냥 빈 파일일 수도 있지만, 객체를 정의하거나 서브패키지의 특정 부분만을 선택하여 내보내거나 하는 코드를 가질 수도 있다. 만약 __init__.py 안의 내용을 접근하려면 다음과 같이 하면 된다.

---------------------------------------------------------------------------
>>> import spam
---------------------------------------------------------------------------
이렇게 하면 __init__.py 안에 정의된 객체들이 spam 모듈로 올라오게 된다. 주의할 점은 이렇게 spam 모듈을 임포트한다고 해서 module.py 가 자동으로 하위모듈로 임포트되는 것은 아니라는 것이다. spam이 임포트될 때 module 도 임포트되려면 __init__.py 안에 다음과 같이 명시해 주어야 한다.

---------------------------------------------------------------------------
# __init__.py 화일의 내용
from . import module
---------------------------------------------------------------------------

이렇게 하면 spam.module 로 접근할 수 있다.
[#00085]