只是积木的功能少而已,事实上,代码编写是少不了的。
这里我们用vscode来编写
这里给出了一些关于此插件好用的功能,自动补全无疑是很诱人的
我们这篇文章算是对前面两篇的查漏补缺
这个是屏幕的驱动方式,I2C
下面是mpy的参数表
然后作为参考
https://www.cnpython.com/pypi/micropython-machine
https://www.cnpython.com/pypi/micropython-machine/dl-micropython-machine-0.2.tar.gz
这是专门为micropython标准库重新实现的模块, 以高效和精益的设计理念。
里面的内容不多,可以作为学习的资料
之后先新建一个项目才可以写和run
这里链接好以后,tt的终端会在这里显示
def main():
print("Welcome to TT")
if __name__ == '__main__':
main()
这里用Alt+Q来执行
下面会输出这个命令行
help之下会有这么多的输出
然后输入这个help会输出一些东西
# MindPlus
# telloesp32
from machine import *
from RMTTLib import *
led = RMTTLedCtrl()
led.start()
i2c = I2C(0, scl=Pin(26), sda=Pin(27), freq=400000)
matrix = RMTTMledCtrl(i2c)
led.normal(0, 0, 255)
matrix.normal(
'000rr00000r0rr000r0r0rr0r0r0r0rrrr0r0r0r0rr0r0r000rr0r00000rr000')
while True:
pass
就这样成功了
通过自动补全,我们发现TT的很多新鲜玩意儿
打印出这么多的方法
方法很多,我们就说不多的几个。首先是对硬件的一些功能。
Pin,RTC,SDcard等,都有了
在方法的后面有一些我们之前看见的方法,有Tof的传感器,三个RGB的灯,控制功能,已经led的控制和小屏幕的控制
print(dir(RMTTProtocol))
这个是打印出得方法,和C++得版本具有一致性
我就是好奇,这些个方法的参数说明
可能没有doc把
from machine import Pin
p0 = Pin(0, Pin.OUT) # GPIO0设置为输出模式
p0.value(1) # p0输出高电平
p0.value(0) # p0输出低电平
p0.value() # 当前p0设置的电平
p2 = Pin(2, Pin.IN) # GPIO2设置为输入模式
p2.value() # p2的电平
p3 = Pin(3, Pin.IN, Pin.PULL_UP) # GPIO3设置为上拉的输入模式
p4 = Pin(4, Pin.OUT, value=1) # 创建Pin对象同时设置初始电平
比如我们最主要的引脚控制功能
from machine import Pin, PWM
pwm0 = PWM(Pin(0)) # 通过Pin对象来创建PWM对象
pwm0.freq() # 获得当前的PWM频率
pwm0.freq(1000) # 设置PWM频率
pwm0.duty() # 获得当前的PWM占空比
pwm0.duty(200) # 设置占空比
pwm0.deinit() # 关闭PWM
pwm2 = PWM(Pin(2), freq=500, duty=512) # 创建PWM同时设置参数
PWM
from machine import ADC
adc = ADC(0) # 在ADC引脚上创建ADC对象
adc.read() # 获取ADC值,范围是0-1024
ADC
from machine import Pin, SPI
spi = SPI(-1, baudrate=100000, polarity=1, phase=0, sck=Pin(0), mosi=Pin(2), miso=Pin(4)) # 创建SPI对象
spi.init(baudrate=200000) # 设置波特率
spi.read(10) # 读取10字节
spi.read(10, 0xff) # 读取十字节,并写出0xff
buf = bytearray(50) # 创建一个缓冲字节流
spi.readinto(buf) # 读入到这个字节流
spi.readinto(buf, 0xff) # 读入字节流并发送0xff
spi.write(b'12345') # 发送5个字节
buf = bytearray(4)
spi.write_readinto(b'1234', buf) # 发送并读取到buf
spi.write_readinto(buf, buf) # 发送buf并读取到buf
软SPI
from machine import Pin, SPI
hspi = SPI(1, baudrate=80000000, polarity=0, phase=0)
硬SPI:构造方法和串口的一样
i2c = I2C(scl=Pin(5), sda=Pin(4), freq=100000)
i2c.readfrom(0x3a, 4) # 从0x3a读取4字节
i2c.writeto(0x3a, '12') # 发送12到0x3a
buf = bytearray(10) # 创建十字节的缓冲字节流
i2c.writeto(0x3a, buf) # 发送字节流到0x3a
I2C的所有引脚都适用
import machine
# 配置RTC.ALARM0来唤醒设备
rtc = machine.RTC()
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)
# 检查是否reset是否是由唤醒引起的
if machine.reset_cause() == machine.DEEPSLEEP_RESET:
print('woke from a deep sleep')
# 设置RTC.ALARM0在10秒后唤醒设备
rtc.alarm(rtc.ALARM0, 10000)
# 设备进入深度睡眠
machine.deepsleep()
深度唤醒
from machine import Timer
tim = Timer(-1)
tim.init(period=5000, mode=Timer.ONE_SHOT, callback=lambda t:print(1))
tim.init(period=2000, mode=Timer.PERIODIC, callback=lambda t:print(2))
定时器
import time
time.sleep(1) # 延时一秒
time.sleep_ms(500) # 延时500毫秒
time.sleep_us(10) # 延时10微秒
start = time.ticks_ms() # 得到内部计时的某个时间点
delta = time.ticks_diff(time.ticks_ms(), start) # 计算过去的时间段的长度
计时
from machine import Pin
import onewire
ow = onewire.OneWire(Pin(12)) # 在GPIO12上创建单总线协议
ow.scan() # 返回总线上的设备列表
ow.reset() # 重置总线
ow.readbyte() # 读取一个字节
ow.writebyte(0x12) # 往总线写0x12
ow.write('123') # 往总线写'123'
ow.select_rom(b'12345678') # 选择特定设备
1-Wire协议
https://blog.csdn.net/solar_Lan/article/details/79265070
来源在此
Mind+里面上传一个mpy文件,是会重启一次机器
经测试,用vscode写的。是会在线执行,但是不是永久写入,断电会变成以前的状态。
下