안녕하세요 데브구일입니다 :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 |