본문 바로가기

전체 글112

[오제이 튜브의 임베디드 강의] 38강. 고추건조기 완성!!!! 1. 더블클릭 오류 해결1번 int 일어나면 gap을 두도록(0.2초정도)=> 0.2초 내에 신호가 들어오면 그 신호는 무시하도록m_button_before_time = HAL_GetTick(); 추가( 이때 200으로 수정 )2. on 스위치 키면 led 켜지도록PB12_START-SW-PIN를 gpio input으로 buttonController.c에서 getSwState 함수 생성(이때, 헤더파일엔 controlType.h  include)이 함수는 TIM3에서 온도 정보를 읽어올 때 호출되도록 (사진3처럼)3. fix 스위치를 누르면 화면이 깜빡이도록사진1~4처럼 소스코드 작성 후 defines.h에 #define TOGGLE_TIME 10000 지정 계속 깜빡이기때문에 4번정도만 깜빡이도록 사진.. 2025. 2. 20.
[오제이 튜브의 임베디드 강의] 37강. 보드 완성까지 딱 두걸음! 1. 함수 묶어놓기main에서 ojtube_log.h 지우고 사진1처럼 작성 후 헤더파일에는 ssd1306.h include 시키기main에서 oledController.h include사진2처럼 oledController.c에 함수 추가 opening 함수 끝에 printDefault 호출하고 헤더파일에도 선언 2. 숫자가 올라가게끔 oledController.c에 사진1처럼 소스코드 추가한 후에 include하고 헤더파일에도 함수 원형 선언 이 동작들도 파일만들어서 따로 빼두기 main 함수 내에 checkButton(); 추가 3. 온도 설정 코드 fix 버튼 : 그 온도로 저장하겠다사진2처럼 수정m_desired_temper // up/down 버튼 눌러서 바꾸는 온도m_fixed_temp.. 2025. 2. 20.
[오제이 튜브의 임베디드 강의] 36강. 전부 합체! 완전체 보드 만들기! 1. 스위치UP/DOWN/FIX로 온도 제어 UP은 PB0에, DOWN은 PB2에, FIX는 PB1에 연결하여 제어하기 아래 회로도를 보고 사진3처럼 스위치 회로도 빵판에 구성하기 1-1. 스위치 옵션 설정PB0 GPIO INPUT으로 설정 후 사진1처럼 옵션설정 XShell관찰 (스위치 누르면 0으로 출력되는 거 관찰)   2. FTDI USB-TTLPA9_USART-TX_FTDI-RX와 RXD 연결신호 받기 위한 그라운드 GND 연결  3. 인터럽트로 해결PB0을 GPIO_EXTI0로 => 클럭이 내려갔다 올라갔다 할 때 인터럽트 발생회로도상 전압이 3.3V가 HIGH이고 이 상태로 유지되고 있는데 버튼을 누르면 0V(그라운드)로 내려옴 따라서, 인터럽트가 발생할 때 2가지 조건이 존재=> 올라오는 .. 2025. 2. 19.
[오제이 튜브의 임베디드 강의] 35강. 내 로고는 내가 만든다! 0. 옵션 수정1. 로고 제공 소스코드를 보면 logo를 인자로 넘기고 이때 logo는 사진2처럼 128x64개의 요소로 이루어져있다main내 horse2~horse10? 까지의 소스코드는 지우고 우리가 만든 로고를 넣자사진3처럼 main함수를 주석처리하고 해당 소스코드들만 남겨두기  2. 로고를 byte형태로  http://javl.github.io/image2cpp/ 사이트 이용사진2처럼 해당 로고사진들을 비트로 표현한 코드가 생성이 됨우선 차별점을 두기 위해 Core-Lib-Inc에서 기존 horse_anim.h 복사하고 이름을 사진3처럼 바꾸고 복사된 코드들을 사진2에 나온 생성된 코드들로 싹 다 갈아엎기    아래사진들처럼 정의해주기이때 아이콘마다 ojtubelog1/2/3/4로 배열 따로 만들.. 2025. 2. 14.
[오제이 튜브의 임베디드 강의] 34강. I2C로 OLED를 제어해보자. 1. I2C 옵션: Master와 Slave 부분이 있다 (1) Master부분Standard/Fast Mode가 있는데 각각 Max 100KHz, 400KHz 제공Fast Mode Duty Cycle => 고속모드인 경우 2가지의 duty cycle 존재 (사진2): SM(Standard Mode)에서는 High, Low Edge가 모두 1:1 비율로 사이클 구성 : FM(Fast Mode)에서는  High, Low Edge가 1:2 / 1:1.7 비율로 사이클 구성 400kHz : 1초에 400만 주기 (= 0.0000025 초) 1사이클에 0.0000025초가 되어야 400kHz를 만들 수 있다 ex) sin파 한주기가 1초 걸리면 그게 1Hz이므로 sin파 한주기가 2.5 μs 걸리면 400kH.. 2025. 2. 14.
[오제이 튜브의 임베디드 강의] 33강. 이제는 쉬워진 I2C 통신 0.오늘의 목표: OLED는 I2C 통신을 사용하기에 I2C에 대해 배워보자 1. 통신: 시간 or 클럭(SPI, I2C)을 기준으로 통신 1-1. I2C 통신 특징8bit씩 주고 받음7bit의 주소 공간 사용 => I2C에 최대 연결할 수 있는 장치가 128개 400Khz의 전송속도Sleep 모드 일 때, 주소 인식으로 일어남동기 방식(클럭 베이스)선이 두가닥 필요클럭과 데이터는 기본으로 High 상태 1-2. I2C 데이터 송신 (SDA, SCL은 모두 마스터의 데이터와 클럭선)클럭을 발생하는 주체는 마스터 START : SCL(클럭) 선은 High 상태로 있다가 데이터를 보내고 싶을 때 SDA(마스터의 데이터)선이 High -> Low로 떨어짐데이터 변화 구간1: SCL(클럭) 선을 Low로 떨어트.. 2025. 2. 14.