MicroPython Blink ESP32,学习笔记1

一.点亮单LED

from machine import Pin
from utime import sleep

print("Hello, ESP32!")

led = Pin(15, Pin.OUT)
while True:
  led.on()
  sleep(0.5)
  led.off()
  sleep(0.5)

 实现呼吸灯

from machine import Pin,PWM
from time import sleep_ms


led_pin=Pin(4,Pin.OUT)#引脚控制对象
pwm_pin=PWM(led_pin,freq=1000,duty=0)#模拟信号对象,频率1023,占空比0
while True:
    times=0
    while times<1023:
        pwm_pin.duty(times)
        times+=1
        sleep_ms(2)
    while times>0:
        pwm_pin.duty(times)
        times-=1
        sleep_ms(2)
  '''优化1.
    for duty_ts in range(0,1024):
        pwm_pin.duty(duty_ts)
        sleep_ms(3)
    for  duty_ts in range(1023,-1,-1):
        pwm_pin.duty(duty_ts)
        sleep_ms(3)

优化2.
    val=0
    v=1
    while val<=1023 and val>=0:
        pwm_pin.duty(val)
        sleep_ms(3)
        val+=v
        if val==1023:v=-1
        if val==0 :v=1
'''

 二.流水灯实现

from machine import Pin
from utime import sleep

'''流水灯'''
led_list=[15,2,4,5]
op_led_list=[]
for i in led_list:
    op_led_list.append(Pin(i,Pin.OUT))

while True:
 for j in op_led_list:
    j.on()
    sleep(0.5)
    j.off()
    sleep(0.5)

三 .获取按钮值

 

from machine import Pin
from time import sleep

'''获取按钮值'''
btn_pin=Pin(5,Pin.IN)
while True:
    print(btn_pin.value())#获取变化的状态
    sleep(1)

四.按钮控制LED

from machine import Pin
from time import sleep


led_pin=Pin(2,Pin.OUT)
btn_pin=Pin(4,Pin.IN)
while True:
    led_pin.value(btn_pin.value())

实现一开一关

from machine import Pin
from time import sleep


led_pin=Pin(2,Pin.OUT,value=0)#设置默认低电平
btn_pin=Pin(4,Pin.IN)
while True:
    if btn_pin.value():
       led_pin.value(not led_pin.value()) 
       while btn_pin.value():#判断是否长按
            pass
  

五. 模拟信号控制

from machine import Pin, ADC
from time import sleep_ms

pinoDT=Pin(33)
voltimetro = ADC (pinoDT)

while True:
   lido = voltimetro.read()
   tensao = lido/4096*3.3 
   print (tensao)
   sleep_ms(1000)

 六.超声波测距

from machine import Pin
import utime
def getDistacne(trig,echo):  # 声波测距函数
#1初始化trig引脚,将trig引脚拉低,暂停2us 
     trig.value(0)
     utime.sleep_us(2)  
 #2 拉高trig 引脚至高电平,超声波传感器发送声波   
     trig.value(1)
     utime.sleep_us(5)
     trig.value(0)
  #3 echo 端口循环检测是否收到回波,并记录更新收到回波的时间戳
     while echo.value() == 0:
         s_time = utime.ticks_us()
     while echo.value() == 1:
         e_time = utime.ticks_us()
      
  # 计算从发送到收到回波的时间
     timeSpend = e_time-s_time
     soundSpd = 0.0345 #  单位为cm/us
     distance =  (timeSpend*soundSpd)/2
     return distance
trig = Pin(14,Pin.OUT)  # 实际接线trig 接ESP32 GPIO14 引脚 echo 接GPIO 27
echo = Pin(27,Pin.IN)
#测距
while True:
   # 循环测距,1s 进行1次距离更新显示
    dis = getDistacne(trig,echo)
    utime.sleep(1)
    print(str(dis) +'cm')

 距离计算:室温20的环境下,超声波传播速度约为340米/秒,距离=速度+时间/2

计算检测1cm: 距离(0.01m)=速度(340米/秒)*时间/2

时间=0.01*2/344 约58US

from machine import Pin,time_pulse_us
import time

#默认引脚初始化低电平
trig=Pin(14,Pin.OUT,value=0)

echo=Pin(27,Pin.IN)
def hcdis():
    #拉高引脚,超声波发送音波
    trig.value(1)
    time.sleep_us(10)
    trig.value(0)
    #接收距离有效距离*58
    us=time_pulse_us(echo,1,400*58)
    if us<0 :
        return us
    else:
        cm=round(us/58,1)
        return cm

while True:
    cm=hcdis()
    print(cm)
    time.sleep(1)
 

 模块化

from machine import Pin,time_pulse_us
import time

class HCSR04:
    def __init__(self,trig,echo):
        self.trig=Pin(trig,Pin.OUT,value=0)
        self.echo=Pin(echo,Pin.IN)
    def hcdis(self):
        #拉高引脚,超声波发送音波
        self.trig.value(1)
        time.sleep_us(10)
        self.trig.value(0)
        #接收距离有效距离*58
        us=time_pulse_us(self.echo,1,400*58)
        if us<0 :
            return us
        else:
            cm=round(us/58,1)
            return cm
hcsr04=HCSR04(14,27)
while True:
    cm=hcsr04.hcdis()
    print(cm)
    time.sleep(1)

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值