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


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


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


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


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




Posted by 살레시오
,

  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


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

Posted by 살레시오
,

  파이썬에서 사용자 폴더를 검색 경로에 추가시키기 위해서는 다음과 같이 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]

Posted by 살레시오
,