KIKI 发表于 2020-7-3 14:00:00

ESP32 3.2.3 ADC/DAC


## ADC
注意:ADC在专用引脚上可用,可用引脚有:A2/IO34、A3/IO35、A0/IO36、A1/IO39,可测电压范围为0~3.3V。
## 类
### class machine.ADC(pin)
```
pin:I/O引脚
    Pin(34)、Pin(35)、Pin(36)、Pin(39)
```
### 定义ADC对象
示例:

```
from machine import ADC, Pin

adc = ADC(Pin(34))
```
## 函数
### 1. ADC.read()
函数说明:读取ADC并返回读取结果。
示例:
```
x = adc.read()
print(x)
```
### 2. ADC.atten(db)
函数说明:设置衰减比(即满量程的电压,比如11db满量程时电压为3.3V)。
```
db:衰减比
    ADC.ATTIN_0DB、ADC.ATTN_2_5_DB、ADC.ATTN_6DB、ADC.ATTN_11DB
```
示例:
```
adc.atten(ADC.ATTN_0DB)
```
### 3. ADC.width(bit)
函数说明:设置数据宽度。
```
bit:
    ADC.WIDTH_9BIT、 ADC.WIDTH_10BIT、ADC.WIDTH_11BIT、 ADC.WIDTH_12BIT
```
## 宏
衰减比

* ADC.ATTN_0DB   = 0    — 满量程:1.2v
* ADC.ATTN_2_5DB   = 1    — 满量程:1.5v
* ADC.ATTN_6DB   = 2    — 满量程:2.0v
* ADC.ATTN_11DB   = 3    — 满量程:3.3v

数据宽度

* ADC.WIDTH_9BIT   = 0    — 9位数据宽度, 即满量程0x1ff(511)
* ADC.WIDTH_10BIT   = 1    — 10位数据宽度,即满量程0x3ff(1023)
* ADC.WIDTH_11BIT   = 2    — 11位数据宽度,即满量程0x7ff(2047)
* ADC.WIDTH_12BIT   = 3    — 12位数据宽度,即满量程0xfff(4095)

## 综合示例
```
from machine import ADC, Pin
import time

adc = ADC(Pin(36))            #设置IO36为模拟IO口
adc.atten(ADC.ATTN_11DB)      #设置衰减比
adc.width(ADC.WIDTH_12BIT)    #设置12位数据宽度
for i in range(0, 10):
print("adc0 =", adc.read()) #读取IO口模拟电压值
time.sleep(0.5)
```

## DAC
注意:DAC在专用引脚上可用,可用引脚有:IO25/D2、IO26/D3,电压范围为0~3.3V。
### 类
#### class machine.DAC(pin)
```
pin:I/O引脚
    Pin(25)、Pin(26)
```
#### 定义DAC
示例:

```
from machine import DAC, Pin

dac = DAC(Pin(26))
```
#### 函数
#### DAC.write(value)
函数说明:设置输出电压(0~3.3V)。
```
value:
    0 ≤ value ≤ 255(对应0~3.3V)
```
示例:
```

dac.write(255)
```
### 综合示例
```
from machine import DAC, Pin

dac = DAC(Pin(25))#创建一个DAC对象
dac.write(245)      #输出电压
```
页: [1]
查看完整版本: ESP32 3.2.3 ADC/DAC