글쓰는 마음으로
본문 바로가기

전체 글47

[아두이노] Zigbee 통신하기 들어가며 아두이노와 라즈베리파이가 Zigbee 통신을 하기 위해서는 일단 서로의 Zigbee칩에 어떤 정보를 주고받을 것인지에 대한 펌웨어를 넣어줘야 한다. 그것을 도와주는 것이 XCTU 프로그램이다. 두 칩에 펌웨어만 넣으면 아두이노끼리 혹은 라즈베리파이끼리 혹은 아두이노와 라즈베리파이 사이의 통신 등 원하는대로 자유롭게 통신할 수 있다. 여기서 사용한 Zigbee는 Xbee 시리즈1로서 점대 점 간의 통신만 가능한 시리즈이다. 시리즈1은 Xbee칩 로고 밑에 S1이라고 적혀있다. XCTU 설치 설치 파일 다운로드는 여기서 하면 된다. http://www.digi.com/xctu 위 사이트에 들어가서 Download XCTU를 클릭하고 운영체제와 버전을 선택하여 다운로드 받아서 exe파일을 실행하여 디.. 2020. 10. 11.
[C언어] 이중포인터, 더블포인터 설명 포인터는 주소를 저장하는 '변수'이다. 주소를 저장한다는 특수한 목적이 있는 것일 뿐, 포인터는 당연히 변수이다. 그래서 포인터의 주소값을 가리키는 포인터인 더블 포인터가 존재할 수 있는 것이다. 선언하는 방법은 포인터를 선언할 때처럼 더블 포인터를 선언하고, 포인터가 변수의 주소를 담는 것처럼, 더블 포인터는 포인터의 주소를 담으면 된다. 더블 포인터의 값은 포인터인 변수의 주소값이 나오고, 더블 포인터의 값의 값은 포인터의 값인 변수의 값이 나온다. 더블 포인터의 값이 포인터이기 때문이다. 이해를 위해 아래의 예제를 보자. #include /* 이중 포인터 예제1 */ void function(int** dptr) { printf("호출완료, 넘겨받은 더블 포인터가 가르키는 값: %d\n", **dp.. 2020. 10. 5.
[C언어] 포인터 쉽게 이해하기 포인터를 쉽게 이해하려면 다음의 5가지를 이해하면 된다. 반대로, 포인터가 어렵게 느껴지는 이유는 이 5가지를 이해하지 못해서이다. 1. 포인터의 정의 2. 포인터를 사용하는 이유 3. 포인터를 선언하는 방법 4. 포인터에 대입해줘야 하는 것의 정체 5. 포인터가 가키리고 있는 값을 읽어오는 방법 차례대로 한번 이해해보자. 포인터의 정의 먼저, 포인터는 다른 변수의 주소를 저장하는 변수이다. 포인터 사용 방법 아래의 과정을 통해 포인터의 선언, 값 읽어오기 등 기본적인 사용 방법을 알아보자. 아래 코드는 num 변수를 선언하여 123으로 초기화하고 출력하는 기본적인 코드다. #include int main(void) { int num = 123; printf("%d\n", num); return 0; }.. 2020. 10. 5.
[C언어] 배열 길이 구하기 이번엔 C언어에서 배열의 길이를 구하는 예제를 살펴보자. 먼저 main 함수 안에 x라는 배열을 선언하여 값을 넣는다. 여기서는 데이터 타입을 int 형으로 했기 때문에 자료 하나 당 4byte를 차지함을 알 수 있다. 여기서 sizeof() 함수를 이용하는데 여기에 배열의 이름을 넣게 되면 배열이 차지하는 공간의 크기를 알 수 있다. 배열에 4개의 원소가 담겨져있다면 총 16byte를 차지할 것이다. 우리가 원하는 '4' 라는 정수를 얻어내기 위해서는 4라는 숫자로 나눠야 할 것이지만 배열이 int형이 아닐 수도 있다. 따라서 배열의 첫번째 원소의 크기를 sizeof() 함수로 구하여 이를 나눠주면 된다. 이를 매크로 함수로 구현하였는데 매크로 함수는 전처리기에서 동작하는 것이기 때문에 괄호를 붙이지 .. 2020. 10. 5.