반응형

라즈베리파이#16 State Diagram 구현 실습

▶ 회로 구성 : 


▶ 개요 


희망하는 GPIO의 출력을 State Diagram으로 도식화 해서 이를 다시 프로그래밍을 통해  하드웨어적으로 구현 해보도록 하자. 

( 이전글 참조  :  #15 LED SOS 신호와 동기신호 실습 )





▶ 실습절차 

저항과 LED, 준비하고 위 도면과 같이 연결한다.  

(LED1 → GPIO 18번 핀 연결  / LED2 → GPIO 23번 핀 연결)

(LED 극성에 주의 : 리드선이 긴 쪽이 '+'  ,  짧은 쪽이 '-' 이다)

1. 부품 : 220Ω x 2 ,  LED x 2



▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.




▶ 코드설명 

【 GPIO 신호를 타이밍 차트로 분석하여 구현하기 


 - 위 신호를 분석 해보면 아래와 같은 4개의 패턴이 순서대로 반복 되는 것을 확인 할 수 있다.



-위 타이밍 차트를 분석해보면 패턴 S1 S2 S3 S4 의 패턴이 순서 대로 이어지고 있고, 3개 패턴의 delay가 나온 후 전체 반복되는 것을 확인 할 수 있다.

-S1패턴 →  ‘True’ , ’ False
-S2패턴 →  True, ’ True
-S3패턴 →  False, ’ True
-S4패턴 →  False, ’ False
-delay패턴 → S4뒤에S4패턴과 같은 패턴 3번 반복(delay)

-위 타이밍 차트에서 한 눈금당 0.2초 씩 계산함.
- 각 상태(State) 별로 def (definition:정의 함수) 형태로 만들어 사용한다



▶ 실행 결과 


아래 영상은 위 프로그램을 두 번 연속 실행 시킨 영상이다. 




ED On Off 실습 with Python

반응형
반응형

 

라즈베리Pi라즈베리Pi 리눅스(Linux) 명령어 정리

 

라즈베리파이에서(현재 라즈비안 OS) 주로 사용되는 주요 리눅스 명령어에 대한 정리입니다.

▶ OS 시동 및 기본 명령어

   ~$ sudo reboot (라즈베리파이 재시작)

   ~$ sudo shutdown -h now (라즈베리파이 즉시 종료)

   ~$ sudo raspi-config (라즈베리파이 설정화면 띄우기)

   ~$ sudo su (관리자권한 모드:'sudo' 없이 실행가능, 'exit' 유저모드)

 

▶ OS 및 프로그램 update & upgrade :    

   ~$ sudo apt-get update (설치된 프로그램 업데이트 내역 확인)

   ~$ sudo apt-get upgrade (확인된 업데이트가 있을 경우 upgrade)

   ~$ sudo apt-get dist-upgrade (필요한 세부내역까지 모두 업데이트)

 

▶ 프로그램 설치 : 

   ~$ sudo apt-get install 프로그램명

 

▶ 프로그램 삭제 : 

   ~$ sudo apt-get remove 프로그램명

   ~$ sudo apt-get remove --purge 프로그램명(셋업file까지 삭제)

   ~$ sudo apt-get autoremove (사용 안하는 프로그램 자동삭제)

   ~$ sudo apt-get remove 프로그램명

 

▶ 프로그램 설치 : 

   ~$ sudo apt-get install 프로그램명

   

▶ 화면 캡쳐 ( scrot ) : 

   ~$ scrot -d 5   (delay time 5초 뒤 캡쳐)   

   ~$ scrot -c     (d 옵션과 함께 사용하여 캡쳐 count down 표시해줌)   

   ~$ scrot -u      (현재 활성화 창 캡쳐) 

   ~$ scrot -u -b  또는 -ub (현재 활성화 창의 보더-테두리까지 캡쳐) 

 (사용 예 : scrot -d 3 -ub  : 3초 뒤 활성창을 테두리 포함하여 캡쳐)

 (캡쳐 된 파일의 저장 위치 :  home 디렉토리의 pi 폴더, png파일로 저장)

 

   ~$ scrot -cd 5    (5초의 카운트 다운과 함께, 라즈비안 화면 메뉴 등 전체 캡쳐에 용이) 

   ~$ scrot -ucd 5    (5초의 카운트 다운과 함께, 마우스로 선택한 활성윈도우창 화면 만 캡쳐해줌. ) 

 

 

▶ 디스크 용량 확인 ( df ) : 

   ~$ df        ( 1byte 단위)

   ~$ df -h    ( G, M 등의 단위로 정렬해서 보여 줌)

 

주요 Linux 명령어 : 

1)  디렉토리(.... 위치) 관련 명령어
~$ pwd    →   현재의 작업 디렉토리(위치) 알려줌 
 /            → 루트 디렉토리
 .   또는 ./      →  현재 디렉토리  
..   또는 ../      →   상위(부모) 디렉토리
~/        → 유저의 홈 디렉토리
../../      →  부모의 부모 디렉토리

2) touch 명령어
- 비어있는 (용량 0) 파일을 생성함
ex)  ~$ touch  filename.c

3) 파일 이동(옮기기) 명령어  :  mv
ex)  ~$ mv filename.c  ..    (filename.c 파일을 상위 폴더로 이동 시켜라) 
아래 예시는 현재 위치( . ) 에 있는 filename.c 파일을 상위 폴더로 이동시킨 후,  다시 현재 위치로 옮겨오는 예시를 보입니다. 

아래 예시처럼 mv (이동) 명령어를 이용해 같은 위치에 이동시키며 파일 이름을 바꿀 수 있습니다.

4) rm   :  파일 삭제 명령어 
ex) rm new.c    :  new.c 파일을 삭제함

5) mkdir : 디렉토리(폴더) 만들기 
ex)  mkdir pump   :  pump 디렉토리를 생성함,    
또는  한 번에 두 개 또는 여려개의 디렉토리를 생성할 수 있습니다.  
ex)  mkdir pump  pumpkin  :  두 개의 디렉토리를 한 번에 생성함.

그리고, '~$ cd pu' 까지 입력한 상태에서 탭키를 한 번 입력하면, 해당 문장으로 시작되는 디렉토리 중 알파벳 순으로 제일 처음 나오는 폴더의 이름으로 자동 입력시켜주며,  탭키를 이어서 두 번더 입력할 경우,  동일한 문장으로 시작되는 폴더가 있을 경우 모두 보여 줍니다.  (위 이미지 참조)

6) echo 명령어  :   텍스트(문자열)을 바로 보여주는 명령어이며,  디렉션 '>' 을 사용하면 해당 문자열을 파일 형태로 저장시킬 수 있습니다. 
또한, ' cat '명령어는  해당 파일의 내용을 보여줍니다. (아래 이미지)

여기서, 기존 파일에 내용을 추가하려면 이중 디렉션('>>')을 사용하면 됩니다. (아래 이미지)
ex)  echo "i love kimchi" >> food 

 -  디렉션('>') 은  특정 리눅스 명령으로 인한 결과을 화면 대신 파일로 저장시킬 수 있습니다. 
 ex)  ~$ ls -la  > ls_Output 라고 명령하면  ls -la의 결과를 화면 대신, 'ls_Output'이라는 파일로 저장시켜 줍니다. 

 

7)   less 명령어  :   내용이 긴 파일을 한 페이지 단위로 멈춤(보여줍니다) .  
 ex )  less  ls_Output  ↵
 화면에 한 페이지 단위로 멈출 때,  키보드를 누르거나  화살표 키로 다음 페이지로 넘길 수 있습니다.
 마지막 페이지에서 빠져나갈 때는  ' : q '   로 입력 합니다.

8)   gcc 컴파일러 실행  :   C언어로 코딩된 코드를 gcc 컴파일러를 이용하여 컴파일 하고, 실행 시키는 리눅스 명령어 입니다.
 ~$  gcc  hello.c   ↵    #    hello.c 파일을 gcc 컴파일러로 컴파일 하여  디스플레이를 통해 볼 수 있는 결과물 ( a.out )을 생성함
 ~$  ./a.out     ↵         #  화면에 a.out  의 내용을 출력함ㅜ
 

 

 Vim 편집기 관련 사용법 및 명령어 : 

1)   Vim 편집기 설치  :   Vim 편집기는 라즈베리파이에서 코딩을 가장 간편히 할 수 있는 편집기여서 익혀두면 좋은데요,  원래 유닉스 버전에서 유명한 단순 편집기인 Vi를  1991년 Bram Moolenaar 라는 개발자가 개선된(improved) 형태의 편집기를 발표하였는데  그게 바로 Vim 입니다. 
이후, 리눅스 진영에서 Vim 편집기를 현재까지 많이 애용하게 되었습니다. 

물론, IDE 형태의 제대로 된 메뉴를 갖추고 좀더 사용하기 편하고 강력한 기능의 코딩 편집툴도 있지만, 경우에 따라서는 어쩔수 없이 텍스트 기반의 리눅스 터미널 화면에서 처리해야 하는 상황이 분명히 존재하는데 이 때 사용하기 제격인 Vim 편집기의 사용방법은 분명 익혀둘 필요가 있습니다. 

 - 설치 명령어 :   ~$ sudo  apt-get  install vim

1
~$ sudo  apt-get  install vim
cs

  (설치 중간 질문에  'y' 키 눌러주세요)

- Vim 에디터 환경설정 :  Vim 에디터 설치하게 되면,  글자색을 입혀주는 기능이나 좌측에 코딩의 편의를 위한 숫자를 넣어 줄 수 있는데요,  그냥 단순하게 명령어를 사용해서는 환경설정이 저장되지 않아 다음번 Vim을 오픈할 때는 다시 원래대로 돌아간 상태로 로딩되는데요, 
vimrc 라는 환경설정 파일을 만들어 옵션을 입력하여 저장하면 해결됩니다. 
리눅스 파일중에 이름앞에 ' . '(점)이 붙은 파일들은 숨김파일 표시인데요,  환경설정 파일을 숨김파일 형태인 ' .vimrc '로 해서 만들어 주면 됩니다.   그 외에 문법규칙, 환경 변수 등록, 에디터 테마 등을 설정해 둘 수 있습니다.

1
2
~$ cd
~$ vim .vimrc
cs

 먼저,  .vimrc 파일은 홈 디렉토리로 이동해서 설치해야 함으로,  cd  ↵   입력하면 홈디렉토리로 이동하게 되며,  vim  .vimrc  를 입력해서  아래와 같은 내용을 추가해 주면 됩니다. 
vim 에디터 편집화면에서  내용입력시 ' Insert ' 키는 키보드 ' i

1
2
syntax on
set number
cs

  1. 코드에 다른 색을 구분 표시 해주는 설정은  " syntax on " 라고 입력합니다.  
  2. 코드 옆에 숫자 표시를 해주는 설정은  " set number "  입니다. 
입력 완료 후에는  'ESC'키를 한 번 눌러주고  콜론 ' : ' 키를 누룬 후 ,  저장과 빠져나가기 ' wq '  엔터 하면 됩니다.  →   : wq

 아래 모습은 설정 전과 후의 모습입니다. 

.vimrc 환경설정 적용 전 모습
.vimrc 환경설정 적용 후 모습

만약  단순 명령어로 바로 적용할 수는 있지만,  환경설정 파일을 만들지 않고 하게 되면,  리셋되어 있어,  파일을 열때 마다 적용해야 하는 불편함이 있게 됩니다.

- 화면 이동,   Vim 편집화면에서,  처음 Insert 키를 입력하지 않았을 때,  키보드 화살표 키처럼 이동할 수 있는 키가  상-하는 K - J  ,   좌-우는  H - L  키 입니다.

 

 -  vim 파일 편집 화면 속에서,  Insert 등의 편집 모드가 아닌(ESC 된 상태) 상태에서 특정 라인으로 이동 하고 싶다면,   예를 들어 10번 라인,   숫자 '10' 입력후 대문자 'G' 키를 입력하면 됩니다. 
그리고, 해당 라인 끝으로 이동하려면,  '$' 입력하면 되고,  해당 라인 맨 앞으로 이동하려면,  '^' 입력 하면 됩니다.   그리고,  소문자 'w'  키를 계속 누르면 단어 단위로 이동 할 수 있습니다.   여기서  단어 단위 앞쪽으로 이동하고 싶다면 소문자 'b' 키를 누르면 됩니다.

1. 복사

vim에서 복사는 일반모드에서 y 또는 yy 명령을 사용해서 합니다. y는 '뽑아내다' 라는 뜻을 가진 yank 에서 따온 것이죠. 일반모드에서 사용되는 대부분의 명령들은 반복수를 지정할 수 있습니다. 
예를 들어 5yy 이렇게 입력하면 현재 행 기준 5행을 복사하는 것이죠. 

 명령어  설명
 y  레지스터에 복사. 
 yy  현재 행을 레지스터에 복사.
 :y
 Y


2. 붙여넣기

복사 또는 잘라내기로 레지스터에 저장한 내용을 일반모드에서 p 키를 이용해서 붙여넣을 수 있습니다.

 명령어  설명
 p  현재 행에 붙여넣기.  개행 문자가 포함된 경우에는 현재 행의 아래에 붙여넣기.
 :pu
 P  현재 행의 위쪽에 붙여넣기.

 

3. 삭제 (잘라내기)

일반적인 문서 편집기에서 내용을 삭제할 때는 키보드의 Delete 키를 사용하는데, vim 에서도 마찬가지로 입력모드에서 Delete 키를 이용해서 삭제할 수 있습니다. 일반모드에서 x 키를 이용해서 한글자씩 삭제할 수도 있습니다. 
그런데 실제로는 vim에서 삭제를 한다기 보다는 잘라내기를 수행하게 됩니다.

 명령어  설명
 x  커서에 위치한 문자 삭제.
 dd  현재 행 삭제
 :d
 D  현재 컬럼 위치에서 현재 행의 끝부분 까지 삭제  
 d$
 J  아래 행을 현재 행의 끝에 붙임 (아래 행의 앞부분 공백은 제거됨)

 

4. 실행취소

vim에서는 매우 강력한 실행취소 기능을 제공합니다. 일반모드에서 u 명령을 통해 직전 명령을 취소할 수 있는데요. u 명령을 계속해서 사용하면 해당 문서를 처음 열었던 상태까지 돌아갈 수 있습니다. 이 상태에서 Ctrl+R 명령으로 최근 상태까지 다시 복귀가 가능하기 때문에 편집하다가 실수로 잘못 편집하거나 이전 상태를 확인하고 다시 편집하려고 할 때 유용하게 사용할 수 있습니다. 

 명령어  설명
 u  undo 기능. 바로 직전 명령 취소. (이전 상태로 돌아감)
 Ctrl+R  redo 기능. 바로 직전에 취소했던(undo) 명령 되돌림.

 

gcc 컴파일 관련 명령어 2 : 

1)  컴파일 하기 ①
~$ gcc 파일명.c
~$ gcc hello.c

2)  컴파일 하기 ②
~$ gcc 소스_파일.c  -o  실행_파일
~$ gcc hello.c  -o  hello.out      또는 확장자 생략가능

3)  실행 하기
~$ ./a.out    또는
~$ ./hello.out

4)  컴파일과 실행 동시에하기
~$ gcc ./hello.c  &&  ./a.out

5)  디버그 정보 넣기
~$ gcc  -g  hello.c 
~$ a.out     hello.c

~$ a.out  hello.c

-g 옵션은 디버그 관련된 정보를 a.out 넣어주는 역할을 함.

 

6)  디버그 (Debug)
~$ gdb  a.out    (또는 gdb -q a.out)
~~~~~~

 

(gdb)  disassemble  main   (또는 disas main)  ( main() 함수의 어셈블리 명령어가 나옴 )
0x08034002f  .....
.......

(list 명령어)    ( 코드의 리스트를 보여줌)


(gdb) list
#include <stdio.h>
int main () {
~~~~
}

(break 라인또는 위치 명령어)   ( break 중지점을 넣어 줌, break 뒤에 줄 수를 입력하거나 특정함수명 또는 main함수 입력)
(gdb) break main
~~~~

(run 명령어)    ( 프로그램을 실행시킴)
(gdb) run

(ir 명령어)    ( 또는 info register , 현재 중지점에서의 모든 레지스터의 값을 보여줌)
(gdb) ir    또는 info register

(x  명령어)    ( 또는 examine , 해당 주소의 메모리에 어떤 값이 들어 있는지 확인함)
(gdb) x(/숫자 진법 바이트) 주소값 또는 레지스터 이름     
(진법옵션:   /o , /x , /u , /t  a  →  8진법/16진법/부호없는 10진법/2진법) 

(gdb)  x/2x eip
(gdb)  x/8xb eip 
(gdb)  x/8xh eip 
(gdb)  x/8xw eip 

(/b, /h, /w, /g  → 단일바이트/, 2바이트하프워드/, 4바이트워드/, 8바이트 자이언트)

 

 주요 Linux 명령어 3 : 

1)  IP 확인
~$ hostname  -I       (대문자 i)

   →   192.168.10.195 (예시)

 

 

 

반응형
반응형

【 라즈베리파이 】 #15 LED SOS 신호와 동기신호 실습


▶ 회로 구성 : 


▶ 개요 


LED1으로 SOS 신호를 나타 내고 LED2로 동기신호(일정한 크기와 간격의 기준 신호)를 출력해 보는 실습이다. 

( 이전글 참조  :  #14 타이밍 차트 활용한 LED 실습 )


▶ 실습절차 

저항과 LED, 준비하고 위 도면과 같이 연결한다.  

(LED1 → GPIO 18번 핀 연결  / LED2 → GPIO 23번 핀 연결)

(LED 극성에 주의 : 리드선이 긴 쪽이 '+'  ,  짧은 쪽이 '-' 이다)

1. 부품 : 220Ω x 2 ,  LED x 2



▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.




▶ 코드설명 

【 SOS 신호 타이밍 차트

-위 타이밍 차트에서 한 눈금당 0.2초 씩 계산함.


-S’ 신호 : 0.4On 0.4Off 0.4On 0.4Off0.4On (1.2Off :다음신호 사이의 공백 값)
-O’ 신호 1.2On 0.4Off 1.2On 0.4Off1.2On (1.2Off :다음신호 사이의 공백 값)

-LedOnLedOff 함수 , S, O, 모르스 신호 함수를 선언(def한다

-Led1(SOS 신호용)은 18번 포트를 사용하고, Led2(동기신호)는 23번 포트를 사용한다.
-반복패턴 a, b, c 세가지를 함수로 만들어 정의 한다.
-Led1, Led2 는 패턴에 따라 On(True), Off(False) 의 포트 출력을 설정한다(IoPort.output…)
-Port1 Led1(18번 포트)
-Port2 Led2(Clk, 23번 포트)
-S, O, 신호를 각각 함수로 정의 하되 이미 정의한 패턴 a,b,c 함수를 사용하여 간결화 시킨다
-타이밍 차트와 동일한 출력이 되도록 중간 중간에 패턴 a가 포함되어있음에 유의

【 SOS 신호와 동기신호 타이밍 차트


- 두 개의 신호상에서 반복되는 패턴을 살펴보면 아래와 같은 (a), (b), (c) 세 가지 패턴이 계속 반복되는 것을 발견 할 수 있다.  패턴상에서 위에 부분은 High,  아래에 위치하는 부분은 Low 신호라고 하며, High 신호일 때 LED를 켜고(On), Low 신호일 때 LED를 끄면(Off) 된다.

- 따라서 ‘S 신호는 패턴 (c)가 세 반복: ccc , ‘O 신호는 패턴(b)(c) 가 세 번 반복 : bcbcbc, 되며, 아래와 같은 차트를 만들려면 SOS 신호 사이사이 (a)패턴을 삽입 하면 동일한 신호를 만들 수 있다. 





▶ 실행 결과 


아래 영상은 위 프로그램을 두 번 연속 실행 시킨 영상이다. 

 S.O.S + 동기 신호 






LED On Off 실습 with Python

반응형
반응형

【 라즈베리파이 】 #14 타이밍 차트 활용한 LED 실습

▶ 회로 구성 : 


▶ 개요 


LED의 On Off 제어를 타이밍 차트 (timing chart) 라고 하는 시간에 따른 High- Low 신호에 맞추어 제어 해보는 실습이다. 

모르스 부호 중에 SOS 위급신호를 응용하여 실험해 보도록 한다.


▶ 실습절차 

저항과 LED, 준비하고 위 도면과 같이 연결한다.  (GPIO 18번핀 LED 연결)

1. 부품 : 220Ω x 1 ,  LED x 1



▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.




▶ 코드설명 

【 SOS 모르스 신호 타이밍 차트


-모르스 부호의 SOS 신호를 LED를 통해서 나타내는 실험


-위 타이밍 차트에서 한 눈금당 0.2초 씩 계산함.

-S신호 : 0.4On 0.4Off 0.4On 0.4Off0.4On (1.2Off :다음신호 사이의 공백 값)
-O신호 : 1.2On 0.4Off 1.2On 0.4Off1.2On (1.2Off :다음신호 사이의 공백 값)

-LedOn, LedOff 함수 , S, O, 모르스 신호 함수를 선언(def) 한다

-Led 포트는 18번 포트를 사용


▶ 실행 결과 

아래 영상은 위 코드를 두 번 연속 실행 시킨 영상이다. 

 S.O.S , S.O.S





LED On Off 실습 with Python

반응형
반응형

【 라즈베리파이 】 #13 LED Fade In Out 실습

▶ 회로 구성 : 




▶ 개요 


라즈베리파이의 GPIO 포트를 통해 연결된 LED의 밝기를 제어 해보는 실습이다. 회로는 이전 실험 회로와 같으며, 스위치를 누르면 LED의 밝기가 점점 밝아진후 다시 점점 어두워지는 회로이다. 


* Fade In : 연극 무대에서 사용하는 용어로, 처음 연극 시작시 무대가 점점 밝아지는 것을 의미한다.

* Fade Out : 연극 무대에서 사용하는 용어로, 연극이 종료 될 때 점점 어두워지는 것을 의미한다.



▶ 실습절차 


저항과 LED, PB(푸쉬버튼) 스위치를 준비하고 위 도면과 같이 연결한다. 

1. 부품 : 220Ω x 1 ,  10㏀ x 1,  PB SW x 1 ,  LED x 1




▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.





▶ 코드설명 

- def KeyInput(key)  :  푸쉬버튼 스위치가 눌려 졌는지 체크하는 함수를 선언한다. 

- def candle (Port, on, off)  :  LED를 On Off 해주는 루틴이다. 


- def State1(Led, sub) :  LED를 점점 밝게 Fade In 해주는 루틴이다.


- def State2(Led, sub) :  LED를 점점 어둡게 Fade Out 해주는 루틴이다.



▶ 실행 결과 

스위치를 한 번 누르면 LED가 Fade IN 하며 켜지고, 

다시 스위치를 한 누르면 LED가 Fade OUT 하며 꺼진다.




LED On Off 실습 with Python

반응형
반응형

【 라즈베리파이 】 #12 RaspberryPi 실습
③ LED On Off 실습 with Switch

▶ 회로 구성 : 



▶ 개요 

 라즈베리파이의 GPIO 커넥터를 이용하여 LED를 On Off 하는 실습을 해 볼 수 있다.  구동 프로그램으로는 라즈비안 OS에 포함되어 있는 파이썬(Python 3) 프로그램을 이용하여 작성한다.  파이썬 프로그램의 특징은 매우 간결하고 직관적인데, 마치 과거 도스(MS-DOS) 시절 쉬운프로그램인 BASIC 만큼이나 쉽다.  그러니 부담 갖지 말고 접근하길 바란다.   


LED 제어를 스위치를 통하여 제어 할 수 있는 회로를 구성하여 실습해본다.



▶ 실습절차 


저항과 LED, PB(푸쉬버튼) 스위치를 준비하고 위 도면과 같이 연결한다. 

1. 부품 : 220Ω x 1 ,  10㏀ x 1,  PB SW x 1 ,  LED x 1




▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.




▶ 코드설명 

- import RPi.GPIO as IoPort  :  기억하기 쉽고 쓰기 간단한 'IoPort' 라는 이름으로 포트를 지정 하는 것이다.


- Sw1 = 8  ,  Led = 18   :  Sw와 Led가 연결된 포트 번호를 적는다.


- IoPort.setmode(Led, IoPort.OUT)  :  Led가 연결된 포트를 출력 포트로 설정

- IoPort.setmode(Sw1, IoPort.IN)  :  Sw1이 연결된 포트를 입력 포트로 설정


- rcv = IoPort.input(Sw1) :  Sw1으로 입력되는 신호 값(High)을 rcv 변수에 저장

- IoPort.output(Led,rcv) :  rcv의 값을 그대로 Led 포트로 출력 함



▶ 실행 결과 

스위치를 누르면 즉각적으로 LED가 On / Off 반응한다.



LED On Off 실습 with Python

반응형
반응형

【 라즈베리파이 】 #11 RaspberryPi GPIO



※ GPIO 포트 란 

 GPIO( General Purpose Input Output) Port 라는 용어로서 ,  Port는 어떤 신호가 드나드는 지점을 말한다통신을 하기 위한 신호가 드나들면 통신포트, 신호가 입력되면 입력포트, 신호가 출력되면 출력 포트라고 한다. GPIO 포트는 신호의 입력과 출력 또는 다른 부가 기능으로 사용될 수 있는 다목적 포트이다. 이를 프로그래밍으로 제어하는 것이다





※ GPIO 포트 셋 2가지 ( BCM & wPi )  

 라즈베리파이의 GPIO 포트에 주요 2가지 포트 명칭 셋이 사용되는데

wPi (WiringPi) BCM 이다

 BCM라즈베리파이의 메인 칩인 BCM283x 칩의 물리적인 핀 번호를 적용한 핀 명칭으로서 기본 제공되는 파이썬 라이브러리가 이 명칭 셋을 사용한다.   wPi 명칭 셋은 GPIO핀을 우선 기준으로 순서대로 동일하게 매칭이 되도록 배치를 한 것인데, 예를 들어 GPIO.5 번핀의 wPi 명칭도 5 번이며,  GPIO.21 번핀의 wPi 명칭도 21 번으로 되어 있어 프로그램 작성시 포트 기준으로 작성이 용이하도록 한 의도를 가지고 있다.   따라서 특정 제작자에 의해 만들어진 라이브러리를 사용할 경우, 정확한 제어를 위해 어떤 명칭셋에 따라 작성된 라이브러리 인지 확인 할 필요가 있다.

 

아래 이미지들은 두가지 포트를 보기 편하게 만든 것이고 자신이 보기에 편한 이미지를 사용하면 된다. 





반응형
반응형

【 라즈베리파이 】 #10 RaspberryPi 실습

② LED On Off 실습 with Python



▶ 회로 구성 : 


▶ 개요 

 앞전 실험에서와 같은 회로를 구성하고, LED On Off를 조금더 다양하게 변화 시켜 보도록 하자.


▶ 실습절차 


저항과 LED 를 준비하고 위 도면과 같이 GPIO18번 핀에 연결되도록 한다.



▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.




▶ 코드설명 


- def LedOn(Portno, Delay) : ...  :  definition(정의) 문을 이용해서 자주 사용 되는 명령을 간결하게 할 수 있다. 

위 정의문을 통해 IoPort.output (led, True) ,  time.sleep(2) 를 LedOn(led, 2) 로 사용 할 수 있음으로 코딩이 간결해진다. 


- import RPi.GPIO as IoPort  :  기억하기 쉽고 쓰기 간단한 'IoPort' 라는 이름으로 포트를 지정 하는 것이다.


- import time   :  delay 타이밍을 위해 시간 함수를 사용하기 위해서는 time 함수를 넣어야 한다. 


- IoPort.setup(led,IoPort.OUT)    // led 포트인 18번 포트를 출력포트로 설정

- led = 18

- LedOn(led,5)  // 18번 포트(led 연결) 로 5초간 High 신호를 출력 (LED On)



▶ 실행 결과 


2초간 LED On

1초간 LED Off

1초간 LED On

1초간 LED Off

5초간 LED On

1초간 LED Off


반응형
반응형

【 라즈베리파이 】 #09 RaspberryPi 실습
① LED On Off 실습 with Python


▶ 회로 구성 : 


▶ 개요 

 라즈베리파이의 GPIO 커넥터를 이용하여 LED를 On Off 하는 실습을 해 볼 수 있다.  구동 프로그램으로는 라즈비안 OS에 포함되어 있는 파이썬(Python 3) 프로그램을 이용하여 작성한다.  파이썬 프로그램의 특징은 매우 간결하고 직관적인데, 마치 과거 도스(MS-DOS) 시절 쉬운프로그램인 BASIC 만큼이나 쉽다.  그러니 부담 갖지 말고 접근하길 바란다.   


파이썬에 실행에 대한 내용은 파이썬 카테고리를 참조하길 바란다. 



▶ 실습절차 


저항과 LED 를 준비하고 위 도면과 같이 GPIO18번 핀에 연결되도록 한다.



▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.



▶ 코드설명 

- import RPi.GPIO as IoPort  :  기억하기 쉽고 쓰기 간단한 'IoPort' 라는 이름으로 포트를 지정 하는 것이다.


- import time   :  delay 타이밍을 위해 시간 함수를 사용하기 위해서는 time 함수를 넣어야 한다. 


※ GPIO 포트 란?  

 GPIO( General Purpose Input Output) Port 라는 용어로서 ,  Port는 어떤 신호가 드나드는 지점을 말한다.  통신을 하기 위한 신호가 드나들면 통신포트, 신호가 입력되면 입력포트, 신호가 출력되면 출력 포트라고 한다. GPIO 포트는 신호의 입력과 출력 또는 다른 부가 기능으로 사용될 수 있는 다목적 포트이다. 이를 프로그래밍으로 제어하는 것이다. 


-IoPort.setmode(IoPort.BCM) : 입출력 포트를 BCM 타입으로 설정한다는 의미 이다.    라즈베리파이의 GPIO 포트에 주요 2가지 포트 명칭 셋이 사용되는데,  wPi (WiringPi) 와 BCM 이다. 

 BCM은 라즈베리파이의 메인 칩인 BCM283x 칩의 물리적인 핀 번호를 그대로 적용한 핀 명칭으로서 기본제공되는 파이썬 라이브러리가 이 명칭 셋을 사용한다.   wPi 명칭 셋은 GPIO핀을 우선 기준으로 순서대로 동일하게 매칭이 되도록 배치를 한 것인데, 예를 들어 GPIO.5 번핀의 wPi 명칭도 5 번이며,  GPIO.21 번핀의 wPi 명칭도 21 번으로 되어 있어 프로그램 작성시 포트 기준으로 작성이 용이하도록 한 의도를 가지고 있다.   따라서 특정 제작자에 의해 만들어진 라이브러리를 사용할 경우 정확한 제어를 위해 어떤 명칭셋에 따라 작성된 라이브러리 인지 확인 할 필요가 있다.    @ 다음글에서 GPIO 포트에 대해 좀더 자세히 다루어 보도록 하겠다. 


- led = 18

- IoPort.setup(led,IoPort.OUT)    // led 포트인 18번 포트를 출력포트로 설정

- IoPort.output (led, True)         // led를 On   ,    False 는 Off

- time.sleep(2)                        //  2초간 기다린다.  delay 타임 



▶ 실행 결과 

2초간 LED On

2초간 LED Off

2초간 LED On

LED Off


LED On Off 실습 with Python

반응형
반응형

【 라즈베리파이 】#08 RaspberryPi OS 부팅
⑤ 한글폰트 설치 마무리 옵션 셋업

【 설정 순서 

4. Localisation Options  I3 Change Keyboard Layout  Generic 105-key (Intl) PC  클릭    other    Korean    Korean – Korean 101/104 key compatible

     The default for the keyboard layout    No compose key   <No> 클릭



 키보드 설정이 완료되면 리부팅을 하고 기본 탑재되어 있는 LibreOffice Writer(워드 프로그램)을 열어 한글 입력을 해본다. 만약 아래처럼 띄어 쓰기가 제대로 되지 않는 증상이 나타난다면 아래 명령어를 입력하여 업데이트 해준다


→ 띄어 쓰기가 이상할 때 해결 하는업데이트

$ sudo apt-get install ibus-gtk ibus-gtk3











반응형