showDigite() 함수가 2자리 수를 출력하는 함수이다. 원리는 간단하다. 두개의 세그먼트가 같은 숫자를 보여주지만 한번은 왼쪽 세그먼트를 끄고, 또 한번은 오른쪽 세그먼트를 끄고 출력하여 그것을 반복하여 눈속임을 하는 것이다. 그것을 함수로 작성하려고하니 눈속임을 할 수 있을 정도 한번 보여줄때 100번 반복을 통해 두자리인것 마냥 보여준다.
디지털 온도계 만들기
위 사진은 회로도이다. (Fritzing 라는 프로그램으로 편하게 작성할수 있다. 링크)두 개의 세그먼트를 5V에 주지 않고 0번과 1번 핀에 주어진 것을 볼 수있다. 다음으로 온도값을 가져오면 된다. 이것은 센서를 이용하여 간단하게 알 수 있기때문에 어려움은 없었다. 센서를 연결하고 loop()에 다음과 같은 코드만 추가시켰다.
int val = 0;
void loop() {
int reading = analogRead(0);
val = (reading * 500.0) / 1024.0;
showDigite(val);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
delay(1000);
}
결과 영상
마지막으로
보완해야할 점이 매우 많았다. 선을 너무 많이 사용해서 복잡한것도 있었고, 눈속임을 통해 보여주는 것이라 반복문을 돌고있는 중에는 다른 작업을 할수 없는것도 문제점이었다. 나중에 제대로 디지털온도계를 만들 때는 세그먼트 두개에 간략화를 해서 사용하던지, 그냥 2digit segment 를 사용해야겠다. 회로 연결하는 것은 어렵지 않았으나 코드를 작성할때 생각처럼 간단하지 않았던 실험이었다.
$ sudo apt-get update
( 혹은 $ sudo apt-get upgrade )
$ sudo shutdown -r now
라즈베리 파이 설정
$ sudo raspi-config
1. Expand Filesystem : 메모리 공간 확장
2. Change User Password : 암호 변경
3. Enable Boot to Deaktop : 부팅시 X-윈도우 바로실행
4. Internationalisation Options : 지역 설정 - 'ko_KR.UTF-8 UTF-8', 기본 설정 추천
4-1. Change Timezone : 시간 설정 - 'Seoul'
4-2. Change Keyboard Layout : 키보드 레이아웃 변경, 기본 설정
5. Enable Camera : 카메라 활성화
6. Add to Rastrack : 라즈베리 파이 사용자 분포 체크
7. Overclock
8. Advanced Options
8-1. Overscan : 디스플레이 맞도록 설정
8-2. Hostname : 호스트네임 변경
8-3. Memory Split : 메모리 할당 관련 설정
8-4. SSH : SSH 사용 여부 설정
8-5. Update : raspi-config 툴 업데이트
9. About raspi-config : raspi-config 툴 설명
$ sudo reboot
접속(윈도우)
실행(wind + R) > 'mstsc' 입력(원격 데스크톱 연결) > ip 입력후 접속
삼바 접속
1. 설치
$ sudo apt-get install samba samba-common-bin
2. 유저 추가 및 패스워드 설정
$ sudo smbpasswd -a pi
3. 설정
$ sudo vi /etc/samba/smb.conf
[pi]
comment = rpi samba server
# 공유할 폴더 지정
path = /home/pi
# 사용 가능한 유저 지정
valid user = pi
# 쓰기 가능 여부
writable = yes
# 공유 폴더 목록 보여주기 여부
browseable = yes
4. 재실행
$ sudo service samba restart
먼저 아두이노에서 링크를 통해 Time 라이브러리는 받는다. 압축을 해제하고 각 폴더들을 아두이노 라이브러리폴더안에 넣는다. (그냥 압축 풀고 통째로 넣으면 헤더파일을 읽어오지 못한다.)
다운로드 주소
http://playground.arduino.cc/Code/Time
아두이노 라이브러리 경로
C:\Program Files (x86)\Arduino\libraries 혹은
C:\Users\사용자명\Documents\Arduino\libraries
라이브러리를 사용하는 2가지 방법이 있다. 먼저 아두이노 설치경로안에 libraries 폴더 안에 넣거나, Documents 폴더내의 아두이노 폴더에 넣는 방법이다. 다른 점은 크게 없고, 어떻게 화면에 나누어지는가의 차이인 것 같다. 아래 사진은 Documents 폴더 내의 아두이노 라이브러리에 넣은 화면이다.(초록색)
실행하기
코드는 라이브러리 설치 후에 '파일 > 예제'에 있는 TimeRTC 코드를 조금 수정한 것으로, RTC(Real Time Clock)칩에 저장된 값을 불러와서 출력한다.
#include <Time.h>
#include <Wire.h>
#include <DS1307RTC.h>
void setup() {
Serial.begin(9600);
setSyncProvider(RTC.get);
setTime(17,39,0,24,2,15);
if(timeStatus()!= timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
}
void loop()
{
digitalClockDisplay();
delay(1000);
}
void digitalClockDisplay(){
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
void printDigits(int digits){
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
시간 설정
setTime(hr, min, sec, day, month, year);
예 : setTime(17,39,0,24,2,15); // 2015.2.24 17:39:00
개인적으로 변경한 부분.
'anonymous_enable = YES' 이 부분 찾아서 주석 처리하고 아래 내용 추가
(아래 내용들은 파일에 다 주석처리되어있어서 찾아서 변경하는 것보다 그냥 넣어주는 것이 편하다.)
#anonymous_enable=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
#chroot_local_user=YES
#user_sub_token=$USER
#local_root=/home/$USER/ftp
force_dot_files=YES
anon_max_rate=0
local_max_rate=0
trans_chunk_size=0
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
ftpd_banner=Welcome to MDSL FTP service.
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
'sorry the command is not available in this version syntax on'
해결 방안
1. 아래 명령어를 통해 vim을 설치한다.
sudo apt-get install vim
2. 작업하기 편리하게 설정파일을 편집한다.
개인적인 .vimrc 파일(아래 파일 첨부)
let g:MultipleSearchMaxColors = 8
hi Search0 ctermbg=blue guibg=blue ctermfg=white guifg=white
hi Search1 ctermbg=green guibg=green ctermfg=black guifg=black
hi Search2 ctermbg=magenta guibg=magenta ctermfg=white guifg=white
hi Search3 ctermbg=cyan guibg=cyan ctermfg=black guifg=black
hi Search4 ctermbg=brown guibg=brown ctermfg=white guifg=white
hi Search5 ctermbg=gray guibg=gray ctermfg=black guifg=black
hi Search6 ctermbg=red guibg=red ctermfg=white guifg=white
hi Search7 ctermbg=yellow guibg=yellow ctermfg=black guifg=black
map <F1> :wq<cr>
map <F2> :wq<cr>
map <F3> :w<cr>
map <F4> :q<cr>
"=========================================================
" filetype setting
"=========================================================
filetype plugin on
filetype indent on
"=========================================================
" C compile
"=========================================================
au FileType c map <F5> :w!<CR>:!gcc % -o %<<CR>
au FileType c map <F6> :!./%<<CR>
"=========================================================
" CPP compile
"=========================================================
au FileType cpp map <F5> :w!<CR>:!g++ -o %< %<CR>
au FileType cpp map <F6> :!./%<<CR>
"=========================================================
" JAVA compile
"=========================================================
au FileType java map <F5>:w!<CR> :!javac % <CR>
au FileType java map <F6> :!java %<<CR>
"=========================================================
" Python Mapping
"=========================================================
au FileType python map <F5> :!python &<CR>
au FileType python map <F6> :!python &<CR>
"=========================================================
" C compile with Network socket func
"=========================================================
map <F9> :w! <CR> :!gcc % -o %< -lsocket -lnsl <CR>
map <F10> :!./%<<CR>
"=========================================================
" C Debug
"=========================================================
map <F11> :w! <CR> :!gcc % -o %< -ggdb <CR>
map <F11> :w! <CR> :!gcc % -o %< -ggdb -lsocket -nsl <CR>
"=========================================================
"=========================================================
set number "line number
set ai
set tabstop=4 "tab키 설정
syntax on "구문강조 사용
set hlsearch
set background=dark "하이라이팅
set ruler "커서의 줄, 칸 위치 표시
set title
set ignorecase "검색시 대소문자 무시
set hlsearch "검색어 강조
set cindent "C언어용 자동 들여쓰기
set smartindent "스마트한 들여쓰기
set autoindent "자동 들여쓰기
set showmode "현재 모드 표기
set shiftwidth=4 "자동 들여쓰기할 때 여백
set showmatch "괄호를 맞춰줌
set history=50 " vi 편집기록 기억갯수
"set visualbell "키는 잘못눌렀을 때 화면 프레시
set showcmd " display incomplete commands
set incsearch "키워드 검색시 점진적 검색
"colorscheme desert " vi 색상 테마 설정
set bs=indent,eol,start "백스페이스 사용
1. Raspberry Pi Software Configuration 으로 이동하기.
터미널에 아래와 같이 입력.
sudo raspi-config
2. '8. Advanced Options' 선택.3. 'A4 SSH' 선택 후 Enable 설정.1. window
putty 등의 프로그램으로 라즈베리파이의 IP주소로 접속한다.
2. mac
터미널에서 자신의 서버주소와 사용자명에 맞게 아래와 같이 입력
ssh [USER]@[IP]
ssh pi@192.168.0.2
라즈베리 처음 설치 할때 us로 변경하지 못한 경우나, 처음 부팅하고 다른 키가 입력될 때.
해결방안
1. 맨드창에서 아래와 같이 입력.
sudo vi /etc/default/keyboard
2. 아래 내용 중 XKBLAYOUT 값 us로 변경
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
...
XKBLAYOUT="us"
...