전체 글 41

[BOJ_2003][Two_Pointers]수들의 합 2

완전탐색 대신 투포인터 (two pointers) 알고리즘 활용 입력: N: 데이터 수 M: 구간의 합과 비교해볼 값 ㅁㅁㅁㅁㅁ: N개의 데이터 각 'ㅁ' 마다 데이터가 들어오는 칸이라고 생각하면, 들어온 값들의 합이 M과 일치할 수 있는 '경우의 수'를 구해야 합니다. ㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁ 위 예시와 같이 밑줄친 곳과 중앙선이 그어진 곳 모두 합이 M과 일치할 수 있습니다. 시간복잡도를 낮추기 위해 두 개의 포인터를 활용해 front 와 back의 위치에 대해 알고 있도록 합니다. 주의할 점은, 합이 M 보다 클 때 front에 해당하는 값을 한 번 지워서는 M과 일치할 수도 있는 합을 놓칠수도 있다는 것입니다. 이 부분은 테스트케이스에 나와있지 않아 틀리기 쉽습니다. #include /* 수들의 합..

Algorithms/Problems 2021.07.09

Human - Computer Interaction Class Project : Yes24 eBook App 개선안

안녕하세요, 바이오메카트로닉스학과/전자전기공학부 김지환입니다. 저희는 eBook App의 유용성과 사용성 위주로 개선해보았습니다. 밀리의 서재, Yes24 eBook, 교보문고 Sam 모두 넷플릭스같은 구독형 서비스인데요, 플랜별 가격이 있긴 하지만 Yes24의 저가 플랜이 가장 저렴하여 (월 5500원) 이 서비스를 선택하게 되었습니다. 가입 후 첫 한 달은 무료이니 한 번 사용해보셔도 좋겠습니다! 제 팀원인 이병운 님 덕분에 프로젝트 하면서 알게 된 앱인데 전공 관련한 책도 많아 정말 유용해요. 저희의 앱 개선을 위한 메인 테마는 집중 학습입니다. Yes24 eBook 서비스는 eBook 카테고리에서는 아직 선두를 잡지 못한 상태이기에, 유저에게 좋은 UX를 제공하고, 나아가 business leve..

Others 2021.06.24

C++ 자주 쓰이는 기능 요약

복습한다는 개념으로 볼 수 있게 필요한 개념을 정리하였습니다. Integer Types char short int int long int long long int Pointers 변수 이름은 특정 데이터 타입을 가진 주소로 가기 위한 인덱스로 사용됩니다. 포인터는 값을 직접 가지지는 않으나 값을 지칭합니다. 또한, 포인터는 strongly typed 로서 컴파일러가 포인터를 int, char 등의 자료형과 연관시킵니다. 임베디드 개발 시 struct data를 넘겨줄 때 데이터 전체를 넘기기에 부담이 되니 포인터를 넘겨주는 작업을 자주 하곤 합니다. #include int main() { int y = 42; int *ip = &y; printf("The value of y is %d\n", y); pr..

Algorithms/C, C++ 2021.01.06

[nRF52BLE][4]C Development with SoftDevice API

4) Actual Code / API Use 개발환경 : Seggar Embedded Studio (SES) 개발보드 : nRF52DK (PCA10040) i) - SDK폴더\examples에 폴더 생성 (폴더 이름은 마음대로) ii) - 첨부된 파일의 압축을 풀고 폴더 안에 위치 (모든 dependency가 상대경로로 지정되어 있기 때문에 정확한 디렉토리 위치에 있지 않을 경우 컴파일되지 않는다) iii) - 컴파일 수정하고 추가한 모든 파일이 Application 폴더 안에 존재하게끔 되어 있다. CTRL + F 로 각 numbering 된 단계를 따라가시면서 코드를 봐주시면 된다. 주기적으로 송신되는 센서의 값은 nRF 에 내장된 프로세서 온도이고, 이를 응용해 GPIO로 받아지는 센서 출력을 받게..

EE/Embedded Systems 2021.01.04

[nRF52BLE][3]Components for Data Transfer

3) Components for Data Transfer Attribute Protocol (ATT) 에 대하여 이전에 간략히 보았던 것처럼 프로토콜을 완성시키기 위하여 몇 가지 Layer가 쌓여 있다. 어플리케이션은 GATT를 이용해 생성할 수 있고 GATT 는 ATT 의 상위에 위치한다. ATT는 Client ←→ Server 관계에 기반을 둔다. 서버는 센서의 값과 같은 정보를 갖고 있고, 이 정보는 table에 정리되어 있다. 이를 Attribute Table 이라 한다. Table의 각 Attribute는 여러 속성(Property)으로 연관되어 있다. 예를 들어 설명하겠습니다. 아래에는 1개의 Table이 있는데, 각 Row는 각 Attribute 를 뜻한다. 각 Attribute는 handl..

EE/Embedded Systems 2021.01.04

[nRF52BLE][2]Connection and Softdevice

2) Connection 참고: https://devzone.nordicsemi.com/nordic/short-range-guides/b/bluetooth-low-energy/posts/bluetooth-smart-and-the-nordics-softdevices-part-2 Connection 요소는 크게 Initializing - Connection Parameters - Whitelisting - Connection Terminating 으로 나눌 수 있는데, 어떻게 진행되는지, API 요구사항은 뭔지 알아본다. IoT와 밀접한 연관을 가지는 블루투스가 어떤 구조를 목표로 했는지를 먼저 본다. 아래 그림과 같다. 하나의 Central (Master)가 여러개의 Peripheral과 연결될 수 있는 ..

EE/Embedded Systems 2021.01.04

[nRF52BLE][1]Bluetooth Communication Scheme

참고: https://devzone.nordicsemi.com/nordic/short-range-guides/b/bluetooth-low-energy/posts/bluetooth-smart-and-the-nordics-softdevices-part-1 첫 포스팅에서는 간략한 BLE 작동을 보았고, 이번에는 모든 프로세스와 관련된 개발에 대해 더 자세히 알아보려 한다. BLE를 이용하기 위한 Nordic의 SW Stack은 API로만 접근할 수 있으며 5개의 Link Layer 상태가 존재한다 Standby - Advertising - Scanning - Initiating - Connection 따라서 다음 순서로 설명을 이어나가도록 하겠다. Advertising Connection (outdated a..

EE/Embedded Systems 2021.01.04

Nordic nRF52 UART 통신

Introduction Universal Asyncronous Receiver / Transmitter (UART) 는 데이터 통신에 널리 쓰이는 통식 방식중 하나이다. Asynchronous인 이유는 두 디바이스 간 통신 시 Clock 이 비동기 이기 때문이다. 각 디바이스는 고유한 Clock 을 발생시킨다. 같은 Clock Source로 통신을 동기화시킬 경우 Universal Synchronous Asynchronous Transmitter/Receiver (USART) 로 볼 수 있다. 하나의 Packet은 다음과 같이 구성된다. Baud Rate는 보통 9600 b/s 또는 115200 b/s 로 설정된다. 마이크로컨트롤러끼리 UART로 통신할 경우 한 Device의 Tx Pin 이 반대쪽의 R..

EE/Embedded Systems 2020.12.23

nRF52328(PCA10040) Project Initiation / Basics

저번 포스팅에서는 Pre-configured Example 을 가져오는 방법을 알아보았다. 이번에는 이것을 변형하는 과정을 보도록 한다. 우선, 보드 뒤쪽에 보면 I/O Pin 번호가 적혀있는데 13 - 16은 보드 내부에 위치한 버튼, 17- 20은 LED임을 알 수 있다. 0. Internal LED 사용 GPIO를 Output으로 쓸 때의 Header / Function #include "nrf_gpio.h" GPIO 헤더 추가 nrf_ nrf_gpio_cfg_output(uint32_t pin_number); 핀을 output 으로 설정 nrf_gpio_range_cfg_output (uint32_t start_pin_number,uint32_t end_pin_number); 여러 핀을 같은 co..

EE/Embedded Systems 2020.12.23

Segger Embedded Studio - IDE Tips

개발을 시작하기 전에 알아야 할 여러 기능들 0. Example Copying 다운로드 받은 SDK 안에 많은 예제, Configuration File, 모듈 등이 있는데 최소한의 양을 가지고 프로젝트를 시작한다. Example 폴더의 Blink Example을 복사해 새로운 디렉토리를 만들어 붙여넣으면 된다. 단, 디렉토리 상 같은 level 에 위치하게끔 해주어야 한다. 예를 들어 C:\Nordic_Semi\nRF5_SDK_17.0.2_d674dde\examples\peripheral\blinky 라는 blinky example 을 붙여넣는다면 C:\Nordic_Semi\nRF5_SDK_17.0.2_d674dde\examples\myProjects\blinky 와 같이 같은 level 이어야 한다. ..

EE/Embedded Systems 2020.12.23