테크

테크/MATLAB

[MATLAB] linspace(), zeros(), ones() 함수

1) linspace(x1, x2, y) x1 : 초기값 x2 : 최종값 x3 : 초기값과 최종값 사이의 원소의 개수 ex) linspace(0, 10, 10) 0 ~ 10까지 11개의 공간을 만들어 10을 11개로 쪼개어 공간에 대입한다. (==) linear space : 선형적으로 공간을 만든다. 2) zeros(m, n) m x n행렬을 만들어 전부 0으로 채운다 3) ones(m, x) m x n행렬을 만들어 전부 1로 채운다

테크/MATLAB

[MATLAB] 입문 & 기본적인 Vector 만들기

Q. MATLAB이란?? A. MATLAB은 간단하게 말하면 신호를 시각적으로 표현하기 위한 프로그래밍 툴이다. 이 프로그램은 이미지, 음성신호, 영상처리 등 다양한 분양에서 신호를 처리하기 위해 사용되며 매트랩의 강력한 장점중 하나는 바로 행렬을 기반으로 연산한다는 점이다. C/C++에서 행렬연산을 하기 위해서는 동적할당과 포인터를 이용하고 연산함수를 직접 작성해야 하지만 매트랩은 복잡한 행렬식을 컴퓨터의 디지털 신호로 쉽게 연산을 할 수 있다. 1. 기본적인 Vector 만들기 & 명령어 1) a = [1 2 3 4 5] row vector 생성 2) b = a' a vector를 transpose한 형태, 즉 column vector형태 3) c = [2 ; 3 ; 4 ; 5 ; 6] 바로 colu..

테크/C | C++

[C\C++] 소수 구하기

자연수 1부터 입력한 수 N까지 소수의 개수 출력하기 자연수 1부터 입력한 수 N까지의 소수의 개수를 출력하는 프로그램을 짠다면 다음과 같다.(sol.1) #include int main() { int n = 0,cnt=0,flag; scanf("%d", &n); for (int i = 2; i

테크/프로젝트

[아두이노] 알람시계 프로젝트(RTC, LCD, 블루투스)

두번째 프로젝트는 RTC모듈을 이용한 알람시계이다. RTC이란 Real Time Clock의 약자이며 쉽게 '시계'라고 생각하면 된다. 내부적으로 시간을 연산하는 프로그램을 갖고 있어서 초기값만 설정해 준 후 전원만 연결하면 실제시계와 똑같이 동작한다. 처음 RTC모듈을 접했다면 대부분 Serial화면으로 출력하는 법 먼저 배웠을 것이다. 그러나 아두이노는 제품을 만들 수 있는 장점이 있는데 왜 PC화면으로만 출력을 하는가? 보드에 RTC뿐만 아니라 LCD화면과 피에조 부저, LED, 블루투스 통신이 가능하도록 PC와 독립적인 알람시계를 만들어 보자! 준비물 RTC모듈, LCD패널(I2C), HC-06, 피에조부저, RLED, 9V배터리, 여러 점퍼선과 저항 설계 방법 1. RTC모듈에 초기값(현재시간)..

테크/예제

[아두이노] 메가2560 lcd(I2C모듈) 출력하기

아두이노 우노에서 lcd화면을 띄울 때 SDA는 A5번핀, CLS은 A6번핀에 연결해야 한다. 그러나 아두이노 메가 2560에서도 똑같이 적용을 하면 화면이 뜨지 않는다. 그 이유는 메가에서 기본적으로 SDA와 CLS핀을 지원하기 때문에 따로 아날로그 핀에 연결할 필요가 없다. 사진과 같이 연결하면 LCD화면을 출력할 수 있으며 코드 작성은 우노에서 한 방법과 똑같이 하면 된다. 추가로 COMMUNICATION이라는 포트 구성을 보면 SDA, SCL뿐만 아니라 TX, RX도 볼 수 있는데 블루투스 통신포트도 이곳으로 연결시켜줘야 정상적으로 작동한다.

테크/예제

[아두이노] 멀티태스킹 & 다중작업 millis()

일반적으로 처음 아두이노를 접할때 led를 켰다 끄는 법을 배우면서 자연스럽게 delay라는 명령어를 사용하게 된다. 이 delay는 프로그램을 지연시킨다는 뜻이며 결국 지연되는 시간동안 아무런 작업을 수행하지 못하고 멈춘 상태가 된다. 예를들어 delay(1000)이라는 명령을 내리면 1초동안 회로가 멈춤상태가 되며 실제로 우리가 컴퓨터나 스마트폰을 이용할 때 1초가 지연되면 엄청나게 답답함을 느낄 것이다. 이런 문제점을 해결하고자 도입된 개념이 millis()함수 이다. millis란 millisecond의 약자로 1/1000초로 아주아주아주 매우매우매우 짧은 시간이다. 아주 짧은 시간 안에 빠르게 작업을 수행하여 마치 우리 눈에는 멀티테스킹을 하는 것 처럼 보인다. 이런 마이크로컨트롤러는 동시에 여..

테크/C | C++

[C\C++] 1부터 입력한 숫자까지의 자리수 개수 구하기(응용)

이전에 포스팅한 방법은 입력한 숫자를 단순히 나누어서 몫을 계속해서 나누는 방법이였다. 이러한 방법이 코드를 작성하는데 어려움 없이 쓸 수 있지만 숫자가 커지게 되면 연산도 많이 하게 되어 프로그램 시간이 오래 걸리게 된다. 이런 연산을 간소화 하기 위해 다음과 같은 방법을 사용한다. 1 ~ 9 까지의 자연수 : 9개 -> 1자리, 자리수 개수 : 9X1 = 9개 10 ~ 99 까지의 자리수 : 90개 -> 2자리, 자리수 개수 : 90X2 = 180개 100 ~ 999 까지의 자리수 : 900개 -> 3자리, 자리수 개수 : 900X3 = 2700개 if ) 15를 입력했다면 9+(15-9)*2 = 21개 15에서 9를 뺀 후 2를 곱해줘야 두자리수의 총 개수가 나온다. if ) 256을 입력했다면 9..

테크/프로젝트

[아두이노] 신호등 프로젝트(초음파, 7세그먼트, 피에조부저)

첫번째 아두이노 개인프로젝트는 신호등 시스템 환경을 구축하는 것이다. 우리가 횡단보도를 건널 때 신호등과 카운터가 있으며 사고위험이 있는 어느 횡단보도는 센서가 있어 차도와 가까워지면 경고음을 울리는 상황을 종종 볼 수 있다. 이런 환경을 소형화해서 아두이노로 만들어 보았다. 설계 방법 1. R, G led로 초록등, 빨간등을 표현한다. 2. 7-세그먼트로 9~0까지 표시하여 0이 되면 led색이 바뀌며 다시 9부터 카운트 한다. 3. 초음파 센서를 이용하여 빨간불일때 일정 거리 가까이 다가오면 경고음을 울린다. 4. 경고음은 피에조 부저로 설정한다. 소스코드 int pins[] = {2, 3, 4, 5, 6, 7, 8}; int num_of_pins = 7; int delaytime = 1000; bo..

테크

[테크] LG 그램 15인치 (15ZD980-GX5BL) SSD확장

2018년 대학 입학선물로 지금 쓰고있는 노트북을 선물로 받았었다. 그 당시에만 해도 최신형이라 빠릿빠릿하고 아쉬움 없었지만 3년이 지나니까 점점 느려지는 것이 눈에 띄기 시작했다. 부팅속도도 느려지고 프로그램 실행할때도 뭔가 버벅이기도 하고... 아니나 다를까 드라이브 용량을 보니까 총 256G 중 여유공간이 60G밖에 남지 않아있었다. PC를 쾌적하게 이용하려면 총 용량의 30%의 여유공간은 남겨두어야 한다는데 이미 초과해 버린 것이였다. 그렇다고 새 노트북을 사기에는 아직 팔팔한 현역이기 때문에 아쉬움이 있었다. 그래서 이것저것 노트북 사양을 알아보던 중 내가 쓰던 노트북은 램, SSD확장이 가능한 모델임을 알게 되었다. 그래서 한치의 망설임도 없이 램과 SSD를 업그레이드 하기로 결심했다. 오늘은..

테크/예제

[아두이노] 메가2560 블루투스 연결

우선 흔히 사용하는 아두이노 우노를 사용하지 않고 왜 메가를 사용할까? 그거슨 바로 핀의 개수가 모자라기 때문이다. 물론 우노에 다른 모뎀을 연결해서 포트 확장을 하는 방법이 있는 것 같지만 그 또한 제한적이라 시원하게 메가로 바꿔주었다. 다른 설정 없이 기본적으로 아두이노 우노는 디지털 핀의 개수를 12개(PWM포함)밖에 사용하지 못하지만 메가2560은 디지털만 약70개를 사용할 수 있다. 간단한 프로젝트를 진행 할 때 3~4개의 모듈사용은 기본인데 7-segment만 해도 디지털포트 8개를 잡아먹는다. 따라서 오픈소스도 많고 배우기 쉬운건 아두이노 우노지만 추후에 확장성을 고려한다면 메가를 피할수 없을 것이다. 이 글에서는 메가를 사용하면서 처음으로 어려움을 겪은 블루투스 연결에 관해 적어보려 한다...