micropython GPIO
[复制链接]
本帖最后由 Chocho 于 2017-2-15 14:32 编辑
micropython在ameba上的使用
我们以blink和呼吸灯作为列子来学习micropython在ameba上的使用,但是目前ameba暂时还不支持Timer,所以现在就还没有呼吸灯demo.
blink程序
from machine import Pin
import time
led = Pin('PC_1',Pin.OUT)
while True:
led.value(1)
time.sleep(0.5)
led.value(0)
time.sleep(0.5)
第一次要在ameba上使用micropython,必须先把micropython烧录到ameba板子里,其烧录方式十分简单,下载下面这个链接,然后解压就会得到一个ram_all.bin的文件(如果在windows下解压的有问题,可以考虑在linux或虚拟机中去解压),将这个文件烧录到ameba板子,就可以在ameba上使用micropython了,当然我们需要一个终端(putty)来写micropython
.链接:https://github.com/cwyark/micropython/releases/download/v1.8.3/ram_all.tar
1.png (11.09 KB, 下载次数: 1)
2017-2-15 13:36 上传
将ameba链接到PC后,需要安装一个驱动,驱动安装好后,就可以在我的电脑看到可移动设备MBED. https://developer.mbed.org/media/downloads/drivers/mbedWinSerial_16466.exe.
然后用右键单击->我的电脑->管理->设备管理器->端口.就可以看到ameba所在的端口号.我们可以看到我这里的端口号是COM7.
烧录方法:
驱动安装好后,在我的电脑会看到一个可移动的设备MBED,双击打开,把之前解压的到的ram_all.bin文件复制到这个MBED中,此间会看到绿灯一直闪烁,这就是正在烧录中,等到绿灯不在闪烁时,即完成烧录.
2.png (72.44 KB, 下载次数: 0)
2017-2-15 13:36 上传
准备工作做好后,打开putty终端,有如下界面,按照下面的箭头修改选择.
3.png (44.31 KB, 下载次数: 0)
2017-2-15 13:36 上传这里都是默认选择115200 8 1 None None.
4.png (34.79 KB, 下载次数: 0)
2017-2-15 13:36 上传
设置好后,点击open,然后点击几下enter键,就有如下界面,
5.png (26.25 KB, 下载次数: 0)
2017-2-15 13:36 上传
在该终端中按Ctrl+E,就会出现一个可粘贴的命令行,如下
6.png (8.83 KB, 下载次数: 0)
2017-2-15 13:36 上传
复制blink程序,然后在终端中单击右键,就完成复制了,如下图,复制完成就按Ctrl+D,取消复制就按Ctrl+C.
7.png (11.09 KB, 下载次数: 1)
2017-2-15 13:36 上传
就这么简单led灯就闪烁起来了,完成后退出按Ctrl+C(目前ameba还不支持这个命令).
micropython在esp32上的使用
esp32平台暂时还不支持Timer,所以暂时还没有呼吸灯demo.
blink程序
from machine import Pin
import time
led = Pin(13,Pin.OUT)
try:
whileTrue:
led.value(1)
time.sleep(0.5)
led.value(0)
time.sleep(0.5)
except:
led.value(0)
烧录micropython固件的方法:
用官方给的烧写工具来烧写,软件使用说明\esp32测试io口\flash_download_tools_v3.4.2_win\FLASH_DOWNLOAD_TOOLS_V3.4.2_Win. 在烧写之前我们的先编译micropython的固件,具体的编译方法呢可以参考官方的方法.如果你觉得麻烦,也可以直接用我编译好的固件:micropython固件.注意每一个固件的flash起始地址是不能改变的,官方固件编译方法地址:https://github.com/micropython/micropython-esp32/tree/esp32/esp32
官方的烧录工具下载下来后,双击打开这个烧写工具,如下图:
8.png (62.91 KB, 下载次数: 0)
2017-2-15 13:36 上传
打开过后会有两个界面:
9.png (58.12 KB, 下载次数: 0)
2017-2-15 13:36 上传
点击右边界面的ESP32DownloadTool,我们就可以看到烧录固件的界面了,做到这里我们就离成功不远了,继续加油吧!这个时候我们把刚编译好的或者下载好的micropython的三个bin文件导入到烧录工具,在我的电脑查看端口号,用右键单击->我的电脑->管理->设备管理器->端口.注意,一定不要把地址弄错了,否则烧录可能会不成功或者烧录成功后不能正常使用.
10.png (97.63 KB, 下载次数: 0)
2017-2-15 13:36 上传
11.png (162.33 KB, 下载次数: 1)
2017-2-15 13:36 上传
烧录完成后,关闭烧录工具,然后打开运行micropython的终端putty.选择端口号(COM12)、connection type(Serial).
12.png (45.19 KB, 下载次数: 0)
2017-2-15 13:36 上传
其他的一些设置如下,设置好过后单击Open
13.png (34.55 KB, 下载次数: 0)
2017-2-15 13:36 上传
Open后按几下enter键,我们就可以在putty终端中输入micropython语言了,
14.png (12.01 KB, 下载次数: 0)
2017-2-15 13:36 上传
按住Ctrl+E可以进入paste mode,在此模式下单击右键就可以粘贴程序,粘贴成功后按Ctrl+D完成粘贴,micropython会执行粘贴的程序.
15.png (11.27 KB, 下载次数: 0)
2017-2-15 13:36 上传
这样我们的led灯就在闪烁了,有木有觉得其实点亮blink还是很简单的啊.完成后按Ctrl+C退出执行程序,led灯就停止闪烁了.
micropython在esp8266上的使用
blink和呼吸灯在esp8266上都支持,所以呢,我们就来一起学习用micropython怎么在esp8266上运行blink和呼吸灯吧!
blink程序:
from machineimport Pin
import time
led = Pin(14,Pin.OUT)
try:
while True:
led.value(1)
time.sleep(0.5)
led.value(0)
time.sleep(0.5)
except:
led.value(0)
呼吸灯程序:
from machineimport Pin,Timer,PWM
pwm =PWM(Pin(14),100)
polar = 0
duty = 0
def setLed(t):
global duty,polar
if(polar == 0):
duty+=16
if(duty >= 1008):
polar = 1
else:
duty -= 16
if(duty <= 0):
polar = 0
pwm.duty(duty)
tim = Timer(1)
tim.init(period=10,mode=Timer.PERIODIC, callback=setLed)
try:
while True:
pass
except:
tim.deinit()
pwm.deinit()
首先我们把esp8266板子连接到PC,然后用和esp32和ameba找端口号一样的方法找到我们需要的esp8266的端口号.我这里的端口号是COM9(你们的需要自己查看).
我们要在esp8266上使用micropython,就必须得先把micropython的esp8266的固件烧录到板子中,micropython官网有编译好的固件可以下载,地址:http://micropython.org/download.
然后打开运行micropython的终端putty.选择端口号(COM9)、connection type(Serial).
16.png (45.13 KB, 下载次数: 0)
2017-2-15 13:36 上传
其他的一些设置如下,设置好过后单击Open
17.png (40.21 KB, 下载次数: 0)
2017-2-15 13:36 上传
Open后按几下enter键,我们就可以在putty终端中输入micropython语言了.
18.png (12.42 KB, 下载次数: 0)
2017-2-15 13:36 上传
blink
19.png (10.32 KB, 下载次数: 0)
2017-2-15 13:36 上传
呼吸灯
20.png (83.07 KB, 下载次数: 0)
2017-2-15 13:36 上传
然后我们就可以用同esp32和ameba一样的方法来实现blink,但是esp8266的板子上自己带有一个led灯,所以不用外接led灯,实现呼吸灯的方法也是一样的,这里就不做过多的介绍了.
esp32平台IO口读取
IO口读取程序:
from machineimport Pin
import time
button =Pin(34,Pin.IN)
while True:
print(button.value())
time.sleep(1)
我们把读取IO口的程序输入到终端里运行,此时在IO34脚什么也不接,所以他读取到的是低电平,输出0,当我们把IO34脚接到3.3V引脚,此时读取到的是高电平,输出1,
21.png (52.35 KB, 下载次数: 0)
2017-2-15 13:36 上传