ESP-IDF / / 2024. 5. 3. 20:40

[ESP-IDF] LED Blink 구현

728x90

안녕하세요 데브구일입니다 :D
 
보통 프로그램을 공부할 때, 처음으로 나오는 게 Hello World가 기본적인데요.
임베디드에서는 가장 기본적인 코드가 Blink 코드이기 때문에,
LED가 깜빡이는 Blink 코드를 작성해보겠습니다.
 
먼저 코드는 아래와 같이 코딩하시면 되겠습니다.
아두이노 코드와 비교를 하면 뭔가 다른 부분이 많아 보일 순 있는데요.
 
추가적인 설명은 코드는 업로드 한 뒤에 설명하도록 하겠습니다!

// 표준 입력 출력 헤더 파일, 주로 printf와 같은 함수를 사용하기 위해서 선언
#include <stdio.h>

// FreeRTOS 헤더 파일, Task 관련 함수를 사용하기 위해서 선언
// 이 코드에서는 vTaskDelay 사용합니다.
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

// GPIO 관련 함수들을 사용하기 위해 선언
#include "driver/gpio.h"

// LED가 연결된 GPIO 핀 번호 정의 (회로도 참고!)
#define BLINK_GPIO 5

// LED 상태를 저장하기 위한 전역 변수 정의
uint8_t led_state = 0;

void app_main(void)
{    
    // 사용할 GPIO 핀을 초기화
    gpio_reset_pin(BLINK_GPIO); 
    // 해당 핀의 모드를 출력으로 설정.
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);

    while(true)
    {
        led_state = !led_state; // led_state 변수의 값을 반전

        // led_state에 따라 GPIO 핀의 전압 레벨 설정
        gpio_set_level(BLINK_GPIO, led_state);

        vTaskDelay(1000 / portTICK_PERIOD_MS); // 1초 동안 딜레이
    }
}

 
 
코드를 입력하시고, 보드에 업로드를 하시려면,
파레트에서 build flash를 입력하게되면,
Build, Flash and Start a Monitor on your Device 라는 명령이 있는데요
이 명령은 빌드와 플래시를 진행하고, 이어서 시리얼 모니터를 자동으로 연결해주는 명령입니다!
자주 사용되는 명령이니 익혀두시면 좋습니다 :D

 
명령을 진행하시면, build -> flash -> Serial Monitor까지 진행됩니다!
아주 편리하죠 ㅇ0ㅇ

 추가 설명을 드리겠습니다!

portTICK_PERIOD_MS는 타이머 틱의 기간을 밀리초 단위로 나타냅니다.
이 값의 경우 정의된 타이머의 틱에 따라 달라지기 때문에 따로 나눠 주어야합니다!
 
별도의 딜레이 함수를 만들어서 사용하는 것도 좋은 방법입니다 :D
 
아래는 회로도에서 LED 부분만 캡쳐했습니다!
BLINK_GPIO가 5번 핀인 이유입니다!

코드를 업로드를 완료하시면 1초 간격으로 LED가 켜고 꺼짐이 반복됩니다!

제 LED는 파란색이네요 ㅇ0ㅇ

 

이렇게 오늘은 LED를 간단하게 다뤄보았습니다 :D
 
gpio를 좀 더 세세하게 세팅하는 방법은 추후에 따로 작성하겠습니다!
 
감사합니다 :D

반응형

'ESP-IDF' 카테고리의 다른 글

[ESP-IDF] GPIO config 세팅  (1) 2024.06.09
[ESP-IDF] Button 값 읽기  (0) 2024.06.08
[ESP-IDF] 빌드와 플래시 전 보드 세팅  (0) 2024.05.01
[ESP-IDF] ESP-IDF 버전 변경 방법  (0) 2024.04.23
[ESP-IDF] VS Code ESP-IDF 세팅  (0) 2024.04.22
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유