社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 精华区
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
搜索
查看: 995|回复: 2

[原创] micropython GPIO

[复制链接]

17

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-2-15 13:59:24 | 显示全部楼层 |阅读模式
本帖最后由 Chocho 于 2017-2-15 14:32 编辑

micropython在ameba上的使用

我们以blink和呼吸灯作为列子来学习micropythonameba上的使用,但是目前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

ameba链接到PC后,需要安装一个驱动,驱动安装好后,就可以在我的电脑看到可移动设备MBED. https://developer.mbed.org/media/downloads/drivers/mbedWinSerial_16466.exe.
然后用右键单击->我的电脑->管理->设备管理器->端口.就可以看到ameba所在的端口号.我们可以看到我这里的端口号是COM7.
烧录方法:
    驱动安装好后,在我的电脑会看到一个可移动的设备MBED,双击打开,把之前解压的到的ram_all.bin文件复制到这个MBED中,此间会看到绿灯一直闪烁,这就是正在烧录中,等到绿灯不在闪烁时,即完成烧录.
2.png


准备工作做好后,打开putty终端,有如下界面,按照下面的箭头修改选择.
   
3.png
这里都是默认选择115200 8 1 None None.
4.png


设置好后,点击open,然后点击几下enter键,就有如下界面
5.png


在该终端中按Ctrl+E,就会出现一个可粘贴的命令行,如下
6.png


复制blink程序,然后在终端中单击右键,就完成复制了,如下图,复制完成就
Ctrl+D,取消复制就按Ctrl+C.
7.png


就这么简单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


打开过后会有两个界面
9.png


点击右边界面的ESP32DownloadTool,我们就可以看到烧录固件的界面了,做到这里我们就离成功不远了,继续加油吧!  这个时候我们把刚编译好的或者下载好的micropython的三个bin文件导入到烧录工具,在我的电脑查看端口号,用右键单击->我的电脑->管理->设备管理器->端口. 注意,一定不要把地址弄错了,否则烧录可能会不成功或者烧录成功后不能正常使用.
10.png


11.png



烧录完成后,关闭烧录工具,然后打开运行micropython的终端putty.选择端口号(COM12)、connection typeSerial.
12.png

其他的一些设置如下,设置好过后单击Open
13.png

Open后按几下enter键,我们就可以在putty终端中输入micropython语言了
14.png

按住Ctrl+E可以进入paste mode,在此模式下单击右键就可以粘贴程序,粘贴成功后按Ctrl+D完成粘贴,micropython会执行粘贴的程序.
15.png

这样我们的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,然后用和esp32ameba找端口号一样的方法找到我们需要的esp8266的端口号. 我这里的端口号是COM9(你们的需要自己查看).
我们要在esp8266上使用micropython,就必须得先把micropythonesp8266的固件烧录到板子中,micropython官网有编译好的固件可以下载,地址:http://micropython.org/download.
然后打开运行micropython的终端putty.选择端口号(COM9)、connection typeSerial.
16.png

其他的一些设置如下,设置好过后单击Open
17.png
Open后按几下enter键,我们就可以在putty终端中输入micropython语言了.
18.png
                                     blink
19.png

                                     呼吸灯
20.png

然后我们就可以用同esp32ameba一样的方法来实现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





此帖出自编程基础论坛

回复

使用道具 举报

6113

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2017-2-15 15:51:56 | 显示全部楼层
比较全面的介绍,如果可以把各平台做个对比更好了。

回复

使用道具 举报

17

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2017-2-24 10:29:15 | 显示全部楼层
dcexpert 发表于 2017-2-15 15:51
比较全面的介绍,如果可以把各平台做个对比更好了。

之后可能会来做一个比较的

回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-9-20 10:09 , Processed in 0.258853 second(s), 17 queries , Redis On.

快速回复 返回顶部 返回列表