## 模拟信号的输入处理 树莓派 Pico有三个模拟输入,它们都有12位的分辨率。 这三个输入端如下。 - GPIO 26 - ADC0 (31针) - GPIO 27 - ADC1 (针脚 32) - GPIO 28 - ADC2 (针脚34) - 还有第四个ADC用于内部温度传感器。 电位计的连接--GPIO28 在我们的测试中,我们将使用一个电位器在模拟输入端呈现一个可变电压,然后我们将读取该电压。我们将使用ADC0作为我们的电位计输入,但你也可以使用其他两个中的一个。 ### 电位计读数 # 树莓派 Pico Analog Input Test # analog-input.py # POT - Pico GPIO 28 ADC2 # DroneBot Workshop 2021 # https://dronebotworkshop.com import machine import utime potentiometer = machine.ADC(28) while True: print(potentiometer.read_u16()) utime.sleep(2) 这是一个简单的脚本,像往常一样,首先导入用于GPIO操作的machine库和用于时间函数的utime库。 然后我们定义我们的电位器连接。请注意我们如何使用 "ADC "来表示我们要将GPIO 28针作为模拟输入。当然这只适用于具有模拟输入能力的三个GPIO引脚。 在True循环中,我们只需打印从电位器上得到的值,然后延迟几秒钟再做一次。 需要注意的是,我们用 "read_u16 "函数得到的值的类型是一个无符号的16位整数。这意味着它将在0和65,535之间变化,而不是你可能期望从12位ADC中得到的4095。 这可能看起来很奇怪,但正如我们将在下一个脚本中看到的那样,能够传递具有相同数值数据类型的值实际上是有用的。 ### 温度读取 通过ADC通道4,读取芯片内部温度。在此过程中,使用手触摸Pi Pico表面加热,或者使用酒精喷洒芯片表面进行降温。 import machine import utime sensor_temp = machine.ADC(4) conversion_factor = 3.3/(65535) while True: read = sensor_temp.read_u16() * conversion_factor temperature = 27 - (read - 0.706) / 0.001721 print(temperature) utime.sleep(2) ### from Maker Pi # This code reads the analog value on GP26 and print out on serial. # --- # Connection: Analog In = GP28 # --- # Hardware: # 1. Cytron Maker Pi RP2040 (www.cytron.io/p-MAKER-PI-RP2040) # - Any RP2040 boards should work too. # --- import machine import utime analog = machine.ADC(28) while True: print(analog.read_u16()) utime.sleep(0.2) ## 返回目录 [[pico_micropython|MicroPython编程PICO训练板]]