1956|8

1万

帖子

25

TA的资源

版主

楼主
 

【Beetle ESP32-C3】几个micropython的例子 [复制链接]

下载了micropython固件,就可以轻松开始测试。先通过几个小程序测试一下:

 

闪灯

 

  • from machine import Pin
  • from time import sleep_ms
  • LED = Pin(10, Pin.OUT)
  • while 1:
  • LED(not LED())
  • sleep_ms(500)

 

查看本帖全部内容,请登录或者注册
此帖出自无线连接论坛
点赞 关注
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 
本帖最后由 dcexpert 于 2022-8-4 11:00 编辑

呼吸灯(通过定时器改变PWM占空比)


 

  • from machine import Pin, Timer, PWM
  • LED = PWM(Pin(10))
  • n = 0
  • def breathing(t):
  • global n
  • LED.duty(abs(1023- n*32))
  • n = (n + 1) % 64
  • T0 = Timer(0)
  • T0.init(period=20, mode=Timer.PERIODIC, callback=breathing)

 

此帖出自无线连接论坛
 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 
本帖最后由 dcexpert 于 2022-8-4 11:00 编辑

引脚电平中断(改变引脚上的电平,触发中断,下面使用IO0)


 

  • from machine import Pin
  • LED = Pin(10, Pin.OUT)
  • def pin_irq(t):
  • LED(not LED())
  • p0 = Pin(0, Pin.IN, pull=Pin.PULL_UP)
  • p0.irq(trigger = Pin.IRQ_FALLING, handler=pin_irq)

 

此帖出自无线连接论坛
 
 
 

回复

1万

帖子

25

TA的资源

版主

4
 
本帖最后由 dcexpert 于 2022-8-4 10:59 编辑

定时器


 

  • from machine import Pin, Timer
  • LED = Pin(10, Pin.OUT)
  • tm =Timer(0)
  • tm.init(period=1000, mode=Timer.PERIODIC, callback=lambda t:LED(not LED()))

 

目前的micropython固件在esp32c3上存在bug,定时器的时间是实际时间2倍。

此帖出自无线连接论坛
 
 
 

回复

1万

帖子

25

TA的资源

版主

5
 
本帖最后由 dcexpert 于 2022-8-4 10:59 编辑

ADC


 

  • from machine import ADC, Pin
  • from time import sleep_ms
  • led = Pin(10, Pin.OUT)
  • adc = ADC(Pin(3))
  • cnt = 0
  • while 1:
  • print(cnt, adc.read_uv())
  • led(not led())
  • cnt+=1
  • sleep_ms(500)

 

此帖出自无线连接论坛
 
 
 

回复

1万

帖子

25

TA的资源

版主

6
 
本帖最后由 dcexpert 于 2022-8-4 10:58 编辑

串口(串口可以使用任意IO,下面程序使用IO5发送,IO7接收)


 

  • from machine import Pin, UART
  • from time import sleep_ms
  • led = Pin(10, Pin.OUT)
  • uart = UART(1, tx=5, rx=7)
  • cnt = 1
  • while 1:
  • uart.write(str(cnt))
  • if uart.any():
  • print('>', uart.read())
  • cnt+=1
  • led(not led())
  • sleep_ms(500)

 

此帖出自无线连接论坛
 
 
 

回复

1万

帖子

25

TA的资源

版主

7
 
本帖最后由 dcexpert 于 2022-8-4 10:58 编辑

RTC


 

  • from machine import RTC
  • from time import sleep_ms
  • rtc = RTC()
  • while 1:
  • print(rtc.datetime())
  • sleep_ms(1000)

 

此帖出自无线连接论坛
 
 
 

回复

1万

帖子

25

TA的资源

版主

8
 

异步(多任务)

 

  • import uasyncio as asyncio
  • from machine import Pin
  • import time
  • LED = Pin(10, Pin.OUT)
  • async def blink():
  • while True:
  • LED(not LED())
  • await asyncio.sleep(1)
  • async def show():
  • cnt = 1
  • T1 = time.ticks_us()
  • while True:
  • T2 = time.ticks_us()
  • print(cnt, time.ticks_diff(T2, T1))
  • T1 = T2
  • cnt += 1
  • await asyncio.sleep(2)
  • asyncio.create_task(blink())
  • asyncio.create_task(show())
  • asyncio.Loop.run_forever()

 

 

此帖出自无线连接论坛
 
 
 

回复

1万

帖子

25

TA的资源

版主

9
 

SHT30温湿度传感器

 

为了省事,直接将SHT30传感器插到开发板。因为GND引脚顺序同,因此使用IO0做GND,此外 SDA=IO1,SCL=IO4。使用SoftI2C模式。

 

 

 

  • from machine import Pin, SoftI2C
  • Pin(0, Pin.OUT, value=0)
  • from time import sleep_ms
  • class SHT3x():
  • def __init__(self, i2c, addr = 68):
  • self.i2c = i2c
  • self._addr = addr
  • self.ver = '1.0'
  • self.info = 'SHT3x I2C drive for micropython'
  • self._mode = 1
  • self._cmd = 0x240b
  • self._delay = 6
  • self._decimal = 1
  • self._tb = bytearray(2)
  • self._rb = bytearray(3)
  • self._ht = bytearray(6)
  • self._T = 0
  • self._H = 0
  • self.reset()
  • def status(self):
  • self.write(0xf32d)
  • self.i2c.readfrom_into(self._addr, self._rb)
  • return self._rb[0]*256 + self._rb[1]
  • def clear_status(self):
  • self.write(0x3041)
  • def write(self, cmd):
  • self._tb[0] = cmd>>8
  • self._tb[1] = cmd
  • self.i2c.writeto(self._addr, self._tb)
  • def reset(self):
  • self.write(0x30a2)
  • def heater(self, on=0):
  • if on: self.write(0x306d)
  • else: self.write(0x3066)
  • def config(self, mode = 0x240b, delay = 6, decimal = 1):
  • t = mode >> 8
  • self._mode = 1 if t == 0x24 or t == 0x2C else 0
  • self._cmd = mode
  • self._delay = delay
  • self._decimal = decimal
  • self.write(mode)
  • def measure(self):
  • if self._mode:
  • self.write(self._cmd)
  • sleep_ms(self._delay)
  • self.write(0xe000)
  • self.i2c.readfrom_into(self._addr, self._ht)
  • self._T = self._ht[0]*256+self._ht[1]
  • self._H = self._ht[3]*256+self._ht[4]
  • def humidity(self):
  • return round(100*self._H/65535, self._decimal)
  • def temperature(self):
  • return round(175*self._T/65535 - 45, self._decimal)
  • def ht(self):
  • return self.humidity(), self.temperature()
  • i2c= SoftI2C(sda=Pin(1), scl=Pin(4))
  • sh = SHT3x(i2c)
  • sleep_ms(10)
  • while 1:
  • sh.measure()
  • print(sh.ht())
  • sleep_ms(1000)

 

此帖出自无线连接论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表