emmm,,,为了参加比赛就学学单片机吧。。。不想用c欸,,就找到了这个MicroPython。。。。

买个板子,又是从零开始。。。。看着板子挺大的,,入手才一点点。。

MicroPython

MicroPython是以Python语言为基础能用于MCU的编程语言系统集合,它是运行在一系列微控制器硬件平台上的系统的名称,类似于Arduino。pyboard就是运行这个的开发板。micropython 就是uPython,μPython

概述一下开发应用的大体形式和流程,将下载好μPython固件pyboard板子通过USB线联通电脑后,正常情况下,电脑会识别为一个U盘和一个串口,如果串口没有被识别,USB盘里有串口的驱动文件,加载即可。U盘中的boot.py为启动引导文件,main.py为用户程序文件,大部分的工作是在这个文件完成的.

买板子的时候看着 要不要给你烧好固件 给整蒙了。。。所谓的烧写就是下载,,连上usb从官网下个固件然后保存到板子里就行,所以自己烧就好,,(差几块钱呢)

用户拿到的pyboard内部已经有了语言解释器了,用户只需要将板子插入电脑,电脑就会识别为U盘,在U盘中使用文字或者其他程序编写软件打开编程程序就行,所谓的下载就是点击保存。注意生成的U盘里有虚拟串口的驱动,安装后就可以使用虚拟串口了,使用串口调试软件可以进行对板子的控制,命令测试,像极了传统的python命令行交互,这种技术实现叫作REPL交互,在交互中可以排错,分段测试等等

来烧写下固件

下个软件来写进去

下个固件,应该是dfu格式的

连上USB,进入板子的dfu 模式

额,,target里面应该是有些东西的,,如果没有多连几次,,选择choose,选择下载好的固件,点击upgrade 等下好后,可以点击leave DFU mode 或直接按下板子的RST按钮

python 收取 Arduino pyboard arduino_Python

启动引导

正常上电启动或按下复位键(RST),板子会进行正常模式启动,但是你可以使用用户按键(USER)来强制引导。

就是按着USER,然后按下RST,LED黄灯和LED绿灯组合会以二进制模式点亮,出现你想要的模式对应的LED状态时,迅速的松开按键,这时用户刚才选择的LED状态会快闪几下,然后进入对应模式或者功能。 LED状态对应的模式或功能:

  • 仅绿色LED,标准启动:boot.py然后运行main.py。
  • 仅橙色LED,安全启动:启动时不要运行任何脚本。
  • 绿色和橙色LED一起显示,文件系统重置:将闪存文件系统重置为出厂状态,然后以安全模式启动。所以我们随便造就行,大不了重置一下。。。。

错误提示

  • 如果红色LED和绿色LED交替闪烁,那么就表明Python脚本(如main.py)出现错误
  • 如果4个LED灯都在缓慢地上下交替闪烁,那就表明出现了一个严重的故障,这个故障很难修复,用户可以进入强制引导模式选择模式3进行重置。

第一个小程序

usb 连上后,应该就跟U盘一样

python 收取 Arduino pyboard arduino_重置_02

boot.py – 此脚本在pyboard启动时运行。其为pyboard设置了多种配置选项。
main.py – 这里面是您的Python的主程序。其在boot.py后执行。
README.txt – 此文件包含一些启动pyboard的基本信息。
pybcdc.inf – 此为配置串行USB的Windows驱动文件。

然后随便用个编辑器打开 main.py
写入

import pyb
pyb.LED(4).on()       # 点亮蓝色的灯

保存,等板子红灯灭了写入完成,弹出USB,按下RST按钮进行重启运行脚本,就会发现蓝灯亮了,,,ohhhhhhhhh, 真是神奇

使用MicroPython REPL调试

就是交互式啦。。看着教程在设备管理器找啊找啊就是找不到那个串口。。。。。结果试了一下好像也能用。。。是买的板子不用装吧。。。。官方文档自行查看吧。。。

我也不懂这些,,,就自己瞎试试还真成了。。。

python 收取 Arduino pyboard arduino_重置_03

python 收取 Arduino pyboard arduino_Python_04


python 收取 Arduino pyboard arduino_python_05


感觉跟python真的一模一样。。。就是输入体验不咋地。。长得丑

Control commands:
CTRL-A – 在空白行上,进入原始REPL模式
CTRL-B – 在空白行上,进入常规REPL模式
CTRL-C – 中断正在运行的程序
CTRL-D – 在空白行上,对板进行软复位(感觉就是重置吧)如果这个不好使,直接按下RST(硬复位)
CTRL-E – 在空白行上,进入粘贴模式

如果要进行硬重置,建议先关闭串行程序并弹出/卸载pyboard驱动器。

LED操作

>>> myled = pyb.LED(1)             # 是不是很简单
>>> myled.on()
>>> myled.off()

led = pyb.LED(2)         # 1 红 2 绿 3 黄 4 蓝
while True:
    led.toggle()        # on 点亮 off 熄灭 taggle 反转,,就是亮的熄灭,熄灭的亮起来。。
    pyb.delay(1000)          # 延迟,毫秒为单位


leds = [pyb.LED(i) for i in range(1,5)]
for l in leds:                 # 按下ctrl+c 时,生成VCPLNTERRUPT异常,通过捕获异常确保在停止后所有的灯都熄灭。
    l.off()

n = 0
try:
   while True:
      n = (n + 1) % 4
      leds[n].toggle()
      pyb.delay(50)
finally:
    for l in leds:
        l.off()                  # 啊,,为什么感觉那么闪呢。。。

黄色和蓝色的LED很特殊。除了打开和关闭它们之外,您还可以使用 intensity()方法控制它们的强度。这需要一个介于0到255之间的数字来确定它的亮度。以下脚本使蓝色LED逐渐变亮,然后再次将其关闭。

led = pyb.LED(4)
intensity = 0
while True:
    intensity = (intensity + 1) % 255
    led.intensity(intensity)
    pyb.delay(20)

您可以在LED 1和2上调用强度(),但它们只能关闭或打开。0将其关闭,而其他任何最大为255的数字将它们打开。

Success, the first step on your path to building an army of evil robots!

这样我们就踏上了创建邪恶机器人大军的第一步了!!!