본문 바로가기

전체

[System Programming] TCP/IP를 이용한 채팅 프로그램 작업 환경 - OS : Ubuntu 14.04.5 LTS 64bit - Editor : vi - Compile : gcc 프로젝트 소개 - 다대다 메신져가 가능한 채팅 프로그램 구현기능 1. TCP/IP을 이용한 채팅 프로그램 2. 멀티 쓰레드를 이용하여 각 PORT로 채팅방 구분 3. 귓속말의 경우 /w ID 내용 형식으로 원하는 사용자에게 귓속말 채팅 기능 추가4. 파일전송의 경우 /f 파일이름 형식으로 open()을 이용해 파일전송 기능 추가5. 뮤텍스를 이용하여 쓰레드들이 running time동안 쓰레드를 동기화 시켜 서로 충돌나지 않게 방지 my.h #include #include #include #include #include #include #include #include #include .. 더보기
[Project] 자동 온/습도 제어 시스템 1. 작업 환경 - 개발 환경 : Windows7- Language : C- 사용 Tools : ATmel studio- 사용 장비 : atmega128 2. 흐름도 1. 시스템이 시작되면 센서로부터 정보를 받습니다. 2. Atmega128은 센서의 출력값을 받아 ADC를 이용해 디지털 신호로 바꾸어 주며 온/습도 센서의 데이터 시트에 나온 계산 방법에 의해 온도와 습도를 구해 LCD에 display 해줍니다. 3. 사용자가 원하는 온/습도 범위 내에서 가습기와 백열등을 원하는 상태로 제어 해줍니다. 가습기의 경우 DC 5V를 주어 Atmega128에서 PortA 출력을 통하여 On/Off 제어를 합니다. 백열등의 경우 가습기와 같이 PortA 출력을 통해 Relay를 제어하는 스위칭 방식을 이용하여 제.. 더보기
[Project] opencv을 이용한 자율주행 자동차 1. 작업 환경 - 개발 환경 : Ubuntu 14.04.5 LTS 64bit, Raspbian-jessie, Mac os x - Language : C,C++- 사용 Tools : gcc, g++, vi editor, ATmel studio7.0- 사용 기술 : Opencv2.4.13, wiringPi- 사용 장비 : Raspberry3, atmega128 2. 흐름도 1. PC에서 Opencv를 이용한 차선, 정지선 인식 - HoughLinesP 함수와 기울기를 이용한 알고리즘을 통해 직선 및 커브 검출 2. 라즈베리파이에서 Opencv를 이용한 표지판, 신호등 인식 - 전처리 과정을 거친 후 원검출과 색검출을 이용하였고 Template matching을 사용하여 속도를 인식 3. Atmega128에.. 더보기
[Atmega128] 우분투에서 Avr 개발환경 구축 작업 환경-메인 OS : Ubuntu 14.04.5 LTS 64bit-장 비 명 : Atmega128(JMOD-128-1) 1. avr-gcc 설치아래의 명령을 순서대로 진행한다.- sudo apt-get install binutils-avr - sudo apt-get install gcc-avr - sudo apt-get install avr-libc - sudo apt-get install avrdude 2. avrdude.conf 수정avr-gcc를 설치하였다면 다음과 같이 avrdude.conf를 수정한다.- sudo vi /etc/avrdude.conf- memory "flash" 섹션에서 page_size = 256 --> page_size = 128 num_pages = 512 --> num.. 더보기
[알고리즘] 삽입정렬(Insertion Sort) 작업 환경- OS : Ubuntu 14.04.5 LTS 삽입정렬이란?- 정렬 대상을 두 부분으로 나눠서 정렬 안 된 부분에 있는 데이터를 정렬 된 부분의 특정 위치에 삽입해 가면서 정렬하는 알고리즘 그림 참조 - 윤성우의 열혈 자료구조 문제배열에 3,1,5,4,2를 저장하고 삽입정렬을 이용하여 오름차순으로 정렬하시오. insert_sort.c#include void InsertSort(int *arr , int cnt); int main(){int arr[5] = {3,1,5,4,2};int i , cnt; cnt = sizeof(arr) / sizeof(int); InsertSort(arr , cnt); for(i=0 ; i data)arr[j+1] = arr[j];elsebreak;} arr[j+1].. 더보기
[알고리즘] 선택정렬(Selection Sort) 작업 환경- OS : Ubuntu 14.04.5 LTS 선택정렬이란?- 정렬순서에 맞게 하나씩 선택해서 옮기며, 옮기면서 정렬되는 알고리즘 그림 참조 - 윤성우의 열혈 자료구조 문제배열에 3,1,5,4,2를 저장하고 선택정렬을 이용하여 오름차순으로 정렬하시오. select_sort.c#include void SelectSort(int *arr , int cnt); int main(){int arr[5] = {3,1,5,4,2};int i , cnt; cnt = sizeof(arr) / sizeof(int); SelectSort(arr , cnt); for(i=0 ; i 더보기
[알고리즘] 버블정렬(Bubble Sort) 작업 환경- OS : Ubuntu 14.04.5 LTS 버블정렬이란?- 인접한 두 개의 데이터를 비교해가면서 정렬하는 알고리즘그림 참조 - 윤성우의 열혈 자료구조 문제배열에 3,1,5,4,2를 저장하고 버블정렬을 이용하여 오름차순으로 정렬하시오. bubble_sort.c#include void BubbleSort(int *arr , int cnt); int main(){int arr[5] = {3,1,5,4,2};int i , cnt; cnt = sizeof(arr) / sizeof(int); BubbleSort(arr , cnt); for(i=0 ; i 더보기
[알고리즘] 간접정렬(Indirect Sort) 작업 환경- OS : Ubuntu 14.04.5 LTS 간접정렬이란?- 인덱스 기법이라고도 하며 레코드 배열에서 데이터를 정렬하는 것이 아니라 인덱스 배열을 따로 만들어 정렬하는 기법- 교환횟수가 많은 삽입정렬의 단점을 보완했으며, 간단한 정수를 정렬할 때 주로 사용 문제배열에 10,2,9,1,4,8,6,7,5,3 값 10개를 넣은뒤 간접정렬을 사용하여 출력하시오. indirect_sort.c#include int main(){int i, j, cnt;char buf[10] = { 10, 2, 9, 1, 4, 8, 6, 7, 5, 3 };char index[10]; for (i = 0; i 더보기
[자료구조] 이중연결리스트를 이용한 전화번호 관리 프로그램 작업 환경- OS : Ubuntu 14.04.5 LTS 문제전화번호부를 이중연결리스트로 완성하시오. (단 등록은 두가지 방법으로 만드시오.)1) 등록(FIFO , LIFO)2) 출력3) 검색4) 수정5) 삭제 my.h#include #include #include #include "list.h" list.h#ifndef __LIST_H__#define __LIST_H__ #define MAX_NAME30#define MAX_NUMBER20 typedef struct Data{char name[MAX_NAME];char pnumber[MAX_NUMBER];}Data; typedef struct Node{Data *data;struct Node *next;struct Node *prev;}Node; type.. 더보기
[Env Setting] 우분투(ubuntu)에 드로이드캠 설치 및 실행방법 1. 작업환경OS : Ubuntu 14.04.5 LTSPhone : LG ProAndroid Version : 5.0.1 2. Ubuntu 설정우분투에 DroidCam을 설치해야 한다.아래 링크로 이동하여 페이지를 밑으로 내리면 다음과 같이 Linux용 DroidCam을 설치할 수 있다.https://www.dev47apps.com/droidcam/ 아래 그림의 빨간색의 네모영역에 있는 명령들을 터미널해서 실행해준다. 설치 완료 후- sudo droidcam 을 실행해준다.실행해주면 다음과 같은 창이 나올 것이다. 3. 핸드폰 설정먼저 핸드폰에 Play스토어에 들어가서 DroidCam을 설치한다. 1)WIFI 연결설치한 DroidCam 앱을 실행한다. 그러면 다음과 같은 그림이 나올 것이다. Wifi I.. 더보기