RoboMaster TT 无人机microPython编程.3

只是积木的功能少而已,事实上,代码编写是少不了的。

这里我们用vscode来编写
设备快速连接(串口、网络、USB)
支持基于 MicroPython 的代码智能补全与语法检查
支持 MicroPython REPL 交互环境
提供丰富的代码示例与 demo 程序
提供工程同步功能
支持下载单个文件或文件夹至开发板
支持在内存中快速运行代码文件功能
支持运行代码片段功能
支持多款主流 MicroPython 开发板
支持 Windows、Ubuntu、Mac 操作系统
这里给出了一些关于此插件好用的功能,自动补全无疑是很诱人的

我们这篇文章算是对前面两篇的查漏补缺
这个是屏幕的驱动方式,I2C
下面是mpy的参数表

然后作为参考

https://www.cnpython.com/pypi/micropython-machinehttps://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# telloesp32from 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 Pinp0 = 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对象同时设置初始电平比如我们最主要的引脚控制功能
首先是引脚的定义,初始书
引脚的基本控制
以及控制一串pin对象等
from machine import Pin, PWMpwm0 = PWM(Pin(0)) # 通过Pin对象来创建PWM对象pwm0.freq() # 获得当前的PWM频率pwm0.freq(1000) # 设置PWM频率pwm0.duty() # 获得当前的PWM占空比pwm0.duty(200) # 设置占空比pwm0.deinit() # 关闭PWMpwm2 = PWM(Pin(2), freq=500, duty=512) # 创建PWM同时设置参数PWM
from machine import ADCadc = ADC(0) # 在ADC引脚上创建ADC对象adc.read() # 获取ADC值,范围是0-1024ADC
from machine import Pin, SPIspi = 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) # 读取十字节,并写出0xffbuf = bytearray(50) # 创建一个缓冲字节流spi.readinto(buf) # 读入到这个字节流spi.readinto(buf, 0xff) # 读入字节流并发送0xffspi.write(b'12345') # 发送5个字节buf = bytearray(4) spi.write_readinto(b'1234', buf) # 发送并读取到bufspi.write_readinto(buf, buf) # 发送buf并读取到buf软SPI
from machine import Pin, SPIhspi = 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到0x3abuf = bytearray(10) # 创建十字节的缓冲字节流i2c.writeto(0x3a, buf) # 发送字节流到0x3aI2C的所有引脚都适用
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 Timertim = 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 timetime.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 Pinimport onewireow = onewire.OneWire(Pin(12)) # 在GPIO12上创建单总线协议ow.scan() # 返回总线上的设备列表ow.reset() # 重置总线ow.readbyte() # 读取一个字节ow.writebyte(0x12) # 往总线写0x12ow.write('123') # 往总线写'123'ow.select_rom(b'12345678') # 选择特定设备1-Wire协议
https://blog.csdn.net/solar_Lan/article/details/79265070来源在此

Mind+里面上传一个mpy文件,是会重启一次机器
经测试,用vscode写的。是会在线执行,但是不是永久写入,断电会变成以前的状态。
下
