開發板購買鏈接
https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111deb2Ij1As&ft=t&id=626366733674
開發板簡介
開發環境搭建 windows
原始碼示例:
0_Hello Bug (ESP_LOGX與printf) 工程模板/列印除錯輸出
1_LED LED亮滅控制
2_LED_Task 使用任務方式控制LED
3_LEDC_PWM 使用LEDC來控制LED實作呼吸燈效果
4_ADC_LightR 使用ADC讀取光敏電阻實作光照傳感
5_KEY_Short_Long 按鈕長按短按實作
6_TouchPad_Interrupt 電容觸摸中斷實作
7_WS2812_RMT RGB_LED彩虹變色示例
8_DHT11_RMT 使用RMT實作讀取DHT11溫濕度傳感器
9_SPI_SDCard 使用SPI總線實作TF卡檔案系統示例
10_IIC_ADXL345 使用IIC總線實作讀取ADXL345角度加速度傳感器
11_IIC_AT24C02 使用IIC總線實作小容量資料儲存測驗
12_IR_Rev_RMT 使用RMT實作紅外遙控接收掃碼(NEC)
13_IR_Send_RMT 使用RMT實作紅外資料發送(NEC)
14_WIFI_Scan 附近WIFI信號掃描示例
15_WIFI_AP 創建軟AP示例
16_WIFI_AP_TCP_Server 在軟AP模式下實作TCP服務端
17_WIFI_AP_TCP_Client 在軟AP模式下實作TCP客戶端
18_WIFI_AP_UDP 在軟AP模式下實作UDP通訊
19_WIFI_STA 創建STA站模
20_WIFI_STA_TCP_Server 在站模式STA下實作TCP服務端
21_WIFI_STA_TCP_Client 在站模式STA下實作TCP客戶端
22_WIFI_STA_UDP 在站模式STA下實作UDP通訊
23_LVGL_Test LVGL圖形庫簡單示例
一、硬體設計/原理
查看開發板原理圖,可以看到開發板上有兩個指示燈,一個是電源指示燈,直接3.3V到地,不受程式控制,APP_LED接在ESP32-WROOM-32E集成模擬的GPIO4腳上,看原理圖可得知IO4拉高LED即滅掉,到地則亮起

二、程式設計
LEDC是ESP封裝好的LED控制器使用的是PWM定時器實作
LED Control (LEDC)模塊主要是為了調節LED的亮度而設計的,而且它也可以用于產生其他用途的PWM信號,它有16個通道,可以產生獨立的波形,可以用來驅動例如變色RGB燈,呼吸燈,電機調速等器件
先參考必要頭檔案
// LEDC_PWM Example
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/ledc.h"
#include "esp_err.h"
#include <esp_log.h>
宏定義
#define LEDC_TOTAL_NUM 1 // LED個數,可以多個
#define LEDC_HS_TIMER LEDC_TIMER_0 // 使用哪個定時器0-3
#define LEDC_HS_MODE LEDC_HIGH_SPEED_MODE// 模式
#define LEDC_HS_CH0_GPIO 4 // LED控制器通道對應GPIO
#define LEDC_HS_CH0_CHANNEL LEDC_CHANNEL_0 // LED控制器通道號
#define LEDC_TEST_DUTY 8000 // 漸變的變大最終目標占空比
#define LEDC_TEST_FADE_TIME 3000 // 變化時長
主函式
void app_main()
{
int ch;
ESP_LOGI(TAG, "APP Start......");
ledc_timer_config_t ledc_timer = {
.duty_resolution = LEDC_TIMER_13_BIT, // PWM占空比解析度
.freq_hz = 5000, // PWM信號頻率
.speed_mode = LEDC_HS_MODE, // 定時器模式
.timer_num = LEDC_HS_TIMER // 定時器序號
};
// 配置定時器0的高速通道
ledc_timer_config(&ledc_timer);
ledc_channel_config_t ledc_channel[LEDC_TOTAL_NUM] = {
{
.channel = LEDC_HS_CH0_CHANNEL,
.duty = 0,
.gpio_num = LEDC_HS_CH0_GPIO,
.speed_mode = LEDC_HS_MODE,
.timer_sel = LEDC_HS_TIMER
},
};
// 配置LED控制器
for (ch = 0; ch < LEDC_TOTAL_NUM; ch++) {
ledc_channel_config(&ledc_channel[ch]);
}
// 初始化淡入淡出服務
ledc_fade_func_install(0); // 注冊LEDC服務,在呼叫前使用,引數是作為是否允許中斷
while (1) {
ESP_LOGI(TAG,"PWM to max %d\n", LEDC_TEST_DUTY);
// 回圈漸變每個LED,這里只有一個
for (ch = 0; ch < LEDC_TOTAL_NUM; ch++) {
// 配置LEDC定時器
ledc_set_fade_with_time(
ledc_channel[ch].speed_mode,
ledc_channel[ch].channel,
LEDC_TEST_DUTY,
LEDC_TEST_FADE_TIME);
// 開始漸變
ledc_fade_start(
ledc_channel[ch].speed_mode,
ledc_channel[ch].channel,
LEDC_FADE_NO_WAIT);
}
// 等待漸變完成
vTaskDelay(LEDC_TEST_FADE_TIME / portTICK_PERIOD_MS);
ESP_LOGI(TAG,"PWM to min 0\n");
// 回圈漸變每個LED,這里只有一個
for (ch = 0; ch < LEDC_TOTAL_NUM; ch++) {
// 配置LEDC定時器
ledc_set_fade_with_time(
ledc_channel[ch].speed_mode,
ledc_channel[ch].channel,
0,
LEDC_TEST_FADE_TIME);
// 開始漸變
ledc_fade_start(
ledc_channel[ch].speed_mode,
ledc_channel[ch].channel,
LEDC_FADE_NO_WAIT);
}
// 等待漸變完成
vTaskDelay(LEDC_TEST_FADE_TIME / portTICK_PERIOD_MS);
}
}
三、下載測驗
打開ESP-IDF Command Prompt
cd命令進入此工程目錄
cd F:\ESP32_DevBoard_File\2_LED_Task
查看電腦設備管理器中開發板的串口號

執行idf.py -p COM9 flash monitor從串口9下載并運行打開口顯示設備除錯資訊 Ctrl+c退出運行

可以看到開發板的APP_LED從亮到滅再從滅到亮開始漸變,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/3264.html
標籤:其他
上一篇:物聯網為什么需要5G?
下一篇:MySQL在idea如何匯出資料
