본문 바로가기

분류 전체보기33

[임베디드] 74HC595D FND 모듈 제어 - GPIO FND 모듈7-SegmentFND란 Flexible Numeric Display(가변 숫자 표시기)의 약자로, 흔히 7-Segment라고 부릅니다. 7-Segment 표시 장치는 위와같이 7개의 선분으로 숫자 및 문자를 표현합니다. 또한 소수를 나타내기 위해서 숫자의 오른쪽 아래에 소수점(DP)이 붙는 경우도 있습니다.7-Segment는 8비트를 사용하여 A~G, DP 위치의 LED를 제어합니다. 위와 같이 각 자리에 매핑되는 비트를 0으로 설정하면 해당 LED가 켜지는 방식입니다. 4-Bits4Bits FND 모듈은 7-Segment 4개를 사용하여 4자리수를 표현하는 모듈입니다. 각 자리수는 하위 4비트를 사용하여 표현합니다. GPIO를 이용한 모듈 제어 FND 모듈을 제어하기 위해서는 SCLK, R.. 2024. 8. 7.
[42GG] Custom Validator 실행 순서 1편: Custom Validator 실행 순서2편: LocalDateTime과 Timezone 문제 상황NullPointerException 발생프론트에서 API 테스트 중에 NullPointerException이 발생한다는 상황을 전달받았습니다. 로그를 확인해보니 리펙토링을 진행하면서  추가한 Custom Validator에서 NullPointerException이 발생하고 있었습니다. @Getter@AgendaCapacityValid@AgendaScheduleValid@NoArgsConstructor(access = AccessLevel.PROTECTED)public class AgendaCreateReqDto { // ... @NotNull @Future(message = "마감일은 현재 시간 이.. 2024. 8. 4.
[C/C++] C 언어에서 상속과 다형성 구현하기 Ray Tracing in One Weekend는 레이 트레이싱에 대한 기초적인 개념을 설명하고 있습니다. 하지만 예제가 C++로 작성되어 있기 때문에 miniRT 과제를 위해서는 C++ 코드를 C 스타일로 변경해야합니다. 대부분의 내용은 그대로 사용할 수 있지만, 다수의 오브젝트를 처리할 때 상속과 다형성을 활용해서 Hittable와 Hittable_list 클래스를 구현하는 부분은 C에서 구현하기 까다롭습니다. 이 글에서는 Hittable와 Hittable_list 클래스를 위해 C언어에서 상속과 다형성을 활용했던 내용을 공유하려고 합니다. 상속과 다형성상속이란 객체 간의 계층 구조를 형성하는 것을 의미합니다. 상위 계층의 객체를 하위 계층에서 상속받으면, 따로 속성과 행동을 정의하지 않아도 상위 계.. 2024. 7. 29.
[임베디드] FT232RL USB 모듈 제어 - UART UARTUART(Universal asynchronous receiver/transmitter)란 병렬 형태의 데이터를 직렬(Serial) 방식으로 전환하여 전송하는 통신 방법입니다. UART는 대부분 3.3V ~ 5V를 사용하기 때문에 -12V ~ 12V을 사용하는 RS-232, RS-485와 같은 통신 표준으로 변경하여 전달하는 경우가 많습니다.TX(송신)와 RX(수신) 2개의 핀을 사용하며, 데이터 통신을 위한 클럭을 사용하지 않기 떄문에 송신측과 수신측에서 사전에 baud rate, data size 등을 설정해야합니다.데이터 형식Start bit : 통신의 시작을 의미하는 비트Data bit : 데이터를 표현하는 비트, 5 ~ 8비트를 사용합니다.Parity bit : 오류 검증을 하기 위한 .. 2024. 7. 29.
[42GG] 데이터 플로우 다이어그램 작성 데이터 플로우프로젝트를 진행하면서 분석/설계가 미흡하다는 것을 느꼈습니다. 대회와 팀 관련 로직에서 비즈니스 로직은 정리를 했지만, 대회와 팀 간에 데이터 플로우가 없어서 개발하는데 누락사항이 발생하거나, 비즈니스 로직을 코드에서 명확하게 표현하지 못하는 상황이 발생했습니다. 대부분 하나의 엔티티에서 발생하는 변경에 대해서는 잘 구현이 되었지만, 하나의 기능에 여러 엔티티의 값을 변경하는 로직에서 이런 실수들이 발생했습니다. 예를 들어서 대회가 취소되는 경우 참가 신청했던 모든 팀의 인원들의 티켓을 환불하는 로직, 대회가 시작했을 때 확정이 안된 팀들에 대해서 참가 취소 및 환불 처리 로직 등이 있습니다. 또한 비즈니스 요구사항이 계속 바뀌면서 커뮤니케이션이 힘들어졌습니다. 해당 기능을 구현하는 사람은 .. 2024. 7. 26.
[C/C++] 개발 환경 구성하기 05 (miniLibX) [C/C++] 개발 환경 구성하기 01 (아키텍처 설계, 브랜치 전략) [C/C++] 개발 환경 구성하기 02 (cmake, libft, google test) [C/C++] 개발 환경 구성하기 03 (gcovr, codecov) [C/C++] 개발 환경 구성하기 04 (github action, norminette, codecov) [C/C++] 개발 환경 구성하기 05 (miniLibX)개발 환경을 구성하는 마지막 글입니다. 이번에는 42서울에서 사용하는 그래픽 라이브러리인 miniLibX를 실행파일에 추가하도록 하겠습니다. google test, libft와 마찬가지로 FetchContent를 사용하여 빌드 시점에 동적으로 가져오도록 설정했습니다. FetchContent_Declare( minili.. 2024. 7. 23.