반응형

【 라즈베리파이 】 #17 4LED 순차 점멸 with Timing chart

 지난시간 2개의 LED를 이용해서 타이밍 차트에 따라 반복 점멸을 하도록 만들어 보았다. 이번에는 4개의 LED이용할 것이며, 타이밍 차트 대로 순차로 점멸하되, 총 10회만 반복하도록 프로그래밍 해보자. 


▶ 선수 학습 :

 

  1. (기초#16State Diagram 구현 실습 (타이밍 차트 참고 강좌클릭


▶ 회로 구성 : 

( 이미지를 클릭하면 크게 확대 됩니다)



▶ 개요 

  GPIO의 출력을 순서대로 제어 해보는 실습으로,  파이썬의 while 구문을 함께 연습해 볼 수 있다.  아래 이미지는 스테이트 다이어그램(State Diagram)으로 동작의 순서를 도식화 해서 이를 다시 프로그래밍으로 구현해 보는 연습을 통해 정확한 동작의 구현을 기대할 수 있다. 



(아래 이미지를 클릭해서 보면 눈금등을 더 선명하게 보실 수 있어요) 



▶ 실습절차 

 저항과 LED를 준비하고 위 회로도와 같이 연결한다. 
(저항은 LED가 보호되면서 적당량의 밝기를 가질 수 있도록 용량값을 선택하는데, 통상적으로 100
Ω~470Ω 사이값으로 준비하면 실험을 위한 짧은 실습에는 크게 문제가 없다)

  

- LED1 → GPIO 18번 핀 연결  / LED2 → GPIO 23번 핀 연결

- LED3 → GPIO 24번 핀 연결  / LED4 → GPIO 25번 핀 연결

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


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




▶ 파이썬 코드 


라즈베리파이에서 파이선을 실행시킨다. 

메뉴에서 새파일을 선택하고 아래와 같이 작성 저장후 실행시킨다.(F5)




▶ 코드설명 

4개의 LED가 순차적으로 반복 실행

-타이밍 차트에서 한 눈금당 0.2초 씩 계산함.
-L1High 신호 : 0.8초 동안 On
-L2High 신호 : L1신호 시작부터 0.4Delay 0.8초 동안 On
-L3High 신호 : L2신호 시작부터 0.4Delay 0.8초 동안 On
-L4High 신호 : L3신호 시작부터 0.4Delay 0.8초 동안 On
-L1High 신호 : L4신호 종료부터 1.2Delay 0.8초 동안 On

-이후 반복   (10회 반복)


-위 타이밍 차트를 분석해보면 패턴 L L L L의 패턴이 순서 대로 이어지고 있고, L4가 Off 된 이후 12개의 눈금(각0.2초 총 1.2초)

이후 다시 첫 L1으로 반복되는 것을 알 수 있다.  


- 총 10회를 반복하도록 while 구문에 조건을 주어야 한다. 

- ' no += 0.1 ' 은   'no = no + 0.1' 과 동일한 코드이다.

- State_1(0.4)  :  State_1() 함수를 호출하면서 delay 타임을 위한 인자값으로 0.4(초)를 전달하고 있다.   [ State_1(0.4)  ]



▶ 실행 결과 

( 영상을 전체보기로 크게 하여 보세요)



ED On Off 실습 with Python

반응형
반응형

라즈베리파이#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 (예시)

 

 

 

반응형
반응형

라즈베리파이 】 #07 RaspberryPi OS 부팅 ⑤타임 존 설정 

【 설정 순서 

시작메뉴 》 기본설정 》 Raspberry Pi Configuration

 

아래 탭에서 Localisation 선택 후 Set Locale…선택합니다.

Localisation 선택 후 Set Locale…를 선택!

 

     Set Timezone 선택 후 Asia Seout을 선택!

키보드 선택합니다.

 

WiFi 지역설정을 Korea로 할 경우 에러가 생기는 현상이 있을 수 있어 UK로 선택하세요.

 

 

 

 

반응형
반응형

【 라즈베리파이 】 #06 RaspberryPi OS 부팅 

  ④ 한글 입력기 설치

그런데, 현재까지 완료하면 한글 폰트깨짐은 사라지지만, 한글 입력이 되지 않는데요, 한글 입력기를 별도로 설치해 주어야 합니다. 라즈비안에서 사용가능한 대표적인 한글 입력기에는 ibus, nabi, fcitx등이 있는데요, ibus는 오류가 좀 있어, nabi 입력기를 설치해 볼게요. 터미널에서 아래 명령어를 입력해 주세요.

~$ sudo apt-get install –y im-config nabi
 

설치가 완료되면 아래 명령어로 입력기를 선택해 주어야 합니다.

~$ im-config -a

그러면 아래와 같은 순서대로 확인 및 선택을 해주세요.

 

아래, ⊙hangul을 체크하고 확인을 클릭하세요.

 

재부팅을 합니다. 

~$ sudo reboot

 

재부팅 후,  한글은 "Shift(좌) + Space Bar" 로 한글과 영문을 전환 하실 수 있습니다.

다음 글에서는 타임존 설정을 해보겠습니다.

반응형
반응형
【 라즈베리파이 】#05 RaspberryPi OS 부팅 ③ 한글폰트 설치
 

네트워크 설정을 마치고 웹브라우저를 띄워보면, 특히 한글로 된 사이트, 예를 들어 네이버를 띄워보면 아래와 같이 폰트

깨지는 것을 볼 수 있습니다.지는 것을 볼 수 있습니다. 

 
- 한글 폰트 설치가 안 되어 있기 때문인데요,  네이버에서 제공하는 나눔폰트를 설치해 볼게요.
터미널 창에 아래와 같은 명령어를 터미널창에 입력한다.
 ~$ sudo   apt install fonts-nanum
 
그리고, 고딕 폰트 등 추가 폰트까지 설치하려면 아래 명령어를 입력하면 됩니다.
 ~$ sudo   apt install fonts-nanum-extra
 
아래와 같이 두 가지를 한번에 명령어를 주어 설치하여도 됩니다.
 ~$ sudo   apt install fonts-nanum fonts-nanum-extra
설치 후에는 재부팅을 해 주세요. 
~$ sudo  reboot
 

 

재부팅을 하면 아래와 같이 한글이 모두 잘 표시 되는 것을 볼 수 있습니다.
 

 

 

• 그런데, 현재까지 완료하면 한글 폰트깨짐은 사라지지만, 한글 입력이 되지 않는데요, 한글 입력기를 별도로 설치해주
어야 합니다.
라즈비안에서 사용가능한 대표적인 한글 입력기에는 ibus, nabi, fcitx등이 있는데요, ibus는 오류가 좀 있어, 다음 글에
nabi 입력기설치해 볼게요.
• 그리고 raspi-config 를 통해 언어 설정과 키보드 등의 설정 을 진행 할 예정입니다.
 

 

반응형
반응형

라즈베리파이 】 #04 RaspberryPi OS 부팅 

       ② 라즈비안 업데이트와 / 업그레이드


• sudo apt-get update 명령으로 OS 및 장치 update 내용이 있는지
 확인한다. 확인된 자료만 업데이트 할 수 있다




• sudo apt-get upgrade 명령으로 확인된 update 내용을 토대로 
업그레이드를 진행한다. 데이터 기록을 위해 공간을 찾지 할 경우 
물어보는 경우가 자주 있다(Y/N ?)  ,  이 때 ‘y’ 입력한다.


업그레이드 진행이 완료 되면 명령어 또는 메뉴를 클릭하여 재부팅 시켜 준다.


▶ 재부팅 명령어 : sudo reboot 

▶ 종료   명령어 : sudo shutdown -h now

 






반응형