目录
PWM输出
模拟量输入--双轴摇杆
模拟量采集驱动PWM输出
PWM输出
用ESP8266上的led灯进行测试,通过改变占空比控制灯亮度,相关指令如下
from machine import Pin, PWM pwm2 = PWM(Pin(2)) # 将GPIO02口设置为PWM模式 pwm2.freq() # 查询当前频率 pwm2.freq(1000) # 设置频率,值范围1-1000 pwm2.duty() # 查询当前占空比 pwm2.duty(200) # 设置当前占空比,值范围0-1023,对应0-3.3V,当=0时灯最亮,此时输出为0V pwm2.deinit() # 关闭PWM设置 上述指令也可以采用下面一条指令进行创建 pwm2 = PWM(Pin(2), freq=1000, duty=200) # 创建PWM输出口并赋值
模拟量输入--双轴摇杆
本次所用的模拟量传感器为双轴摇杆模块,但是由于ESP8266只有A0一个模拟量接口
编写测试程序如下(将其转换为-1000值1000):
import machine
import time
adc = machine.ADC(0)
def getAnalgeval(curOri, oriMin, oriMax, resultMin, resultMax):
return (curOri-oriMin)*(resultMax-resultMin)/(oriMax-oriMin) + resultMin
def main():
while True:
val =adc.read()
print("原始数据:", val)
#ESP8266上模拟量的范围为0-1024
print("转换为量程数据:", getAnalgeval(val, 0, 1024, -1000, 1000))
time.sleep_ms(500)
将上述程序封装为驱动程序,名称为analge.py,内容如下
import machine
adc = machine.ADC(0)
class ADC0:
def __init__(self, valMin=0, valMax=1024):
self.valueMin = valMin
self.valueMax = valMax
def getAnalgeval(self, curOri, oriMin, oriMax, resultMin, resultMax):
return (curOri - oriMin) * (resultMax - resultMin) / (oriMax - oriMin) + resultMin
def oriValue(self):
return adc.read()
def value(self):
val = adc.read()
return self.getAnalgeval(val, 0, 1024, self.valueMin, self.valueMax)
模拟量采集驱动PWM输出
综合上述案例,编写下述案例,用摇杆来控制ESP8266上led灯亮度
通过这种组合的方式可使用多种场合,如遥控小车的速度控制等
#模拟量输入和PWM输出测试
from analge import ADC0
value = ADC0(-1000, 1000)
from machine import Pin, PWM
pwm2 = PWM(Pin(2)) # 将GPIO02口设置为PWM模式
pwm2.freq(500) # 设定频率
while True:
pwm2.duty(value.oriValue())
print("原始数据:", value.oriValue())
print("转换后数据:", value.value())
time.sleep_ms(200)


