ESP32 在 IDF 內已經有 ADC(模擬數碼轉換器 / Analog to Digital Converter) / DAC(數碼模擬轉換器 / Digital to Analog Converter) API 函數模塊和範例程式,可以直接編譯使用,首先是設置 ADC 和 DAC 的輸入和輸出引腳,由於選擇 GPIO26 的輸入和輸出引腳是一個,ESP32 內部會直接連接,程序會輸出 DAC 電壓,然後 ADC 會接收,並通過 SAR 計算出資料,然後顯示。
ESP32 ADC / DAC 模擬數碼轉換器製作 |
編譯並加載示例。
打開串口監視器以查看屏幕上打印的消息。
ESP32 ADC / DAC 模擬數碼轉換器程式 IO 設定:
#define DAC_EXAMPLE_CHANNEL 2 //
DAC Channel 2 (GPIO26)
#define ADC2_EXAMPLE_CHANNEL
9 // ADC2 Channel 9 (GPIO 26)
|
ESP32 ADC / DAC 模擬數碼轉換器程式:
void app_main()
{
uint8_t
output_data=0;
int read_raw;
esp_err_t r;
gpio_num_t adc_gpio_num, dac_gpio_num;
assert(
adc2_pad_get_io_num( ADC2_EXAMPLE_CHANNEL, &adc_gpio_num ) == ESP_OK );
assert(
dac_pad_get_io_num( DAC_EXAMPLE_CHANNEL, &dac_gpio_num ) == ESP_OK );
printf("ADC channel %d @ GPIO %d, DAC channel %d @ GPIO
%d.\n", ADC2_EXAMPLE_CHANNEL, adc_gpio_num,
DAC_EXAMPLE_CHANNEL, dac_gpio_num );
dac_output_enable( DAC_EXAMPLE_CHANNEL );
//be
sure to do the init before using adc2.
printf("adc2_init...\n");
adc2_config_channel_atten( ADC2_EXAMPLE_CHANNEL, ADC_ATTEN_0db );
vTaskDelay(2
* portTICK_PERIOD_MS);
printf("start conversion.\n");
while(1) {
dac_output_voltage( DAC_EXAMPLE_CHANNEL, output_data++ );
r =
adc2_get_raw( ADC2_EXAMPLE_CHANNEL, ADC_WIDTH_12Bit, &read_raw);
if
( r == ESP_OK ) {
printf("%d: %d\n", output_data, read_raw );
sprintf(dsp_buffer,"%d=%d
", output_data, read_raw );
oled_Print(0, 3, dsp_buffer, 1);
}
else if ( r == ESP_ERR_INVALID_STATE ) {
printf("ADC2 not initialized
yet.\n");
}
else if ( r == ESP_ERR_TIMEOUT ) {
//This can not happen in this example. But if WiFi is in use, such
error code could be returned.
printf("ADC2 is in use by Wi-Fi.\n");
}
vTaskDelay( 2 * portTICK_PERIOD_MS );
}
}
|
操作系統:Windows 7 64-bit 版本
開發環境:AiThinker05 版本
原程碼: ESP32 ESP-IDF V3.0rc1
程式: DIY-ESP32-011-ADC_01_IDF-20181124
ESP32 ADC / DAC 模擬數碼轉換器程式運行中 |
ESP32 ADC / DAC 模擬數碼轉換器程式電路製作顯示 |
ESP32 ADC / DAC 模擬數碼轉換器程式串行監視器上的示例輸出 |
※ DIY - ESP32:ESP32 ADC 模擬數碼轉換器介紹 (四十三)
※ DIY - ESP32:ESP32 ADC / DAC 模擬數碼轉換器電路 (四十四)
※ DIY - ESP32:ESP32 ADC 模擬數碼轉換器 API 函數(四十六)
※ DIY - ESP32:ESP32 ADC 模擬數碼轉換器 API 函數巨集及其它(四十七)
※ DIY - ESP32:ESP32 DAC 數位類比轉換器 API 函數(四十八)
※ DIY - ESP32:ESP32 DAC 數位類比轉換器 API 函數巨集及其它(四十九)
※ DIY - ESP32:ESP32 ADC 類比數位轉換器測試(五十)
※ DIY - ESP32:ESP32 ADC DVM 數字電壓錶電路(五十一)
※ DIY - ESP32:ESP32 ADC DVM 數字電壓錶程式 (五十二)
2018年 12月 5日 天氣報告
氣溫:23.1度 @ 21:00
相對濕度:百分之 74%
天氣:大致多雲
沒有留言:
張貼留言