文档章节

Python开发实例:TPYBoard开发板DIY红绿灯

bodasisiter
 bodasisiter
发布于 2016/10/10 10:12
字数 1311
阅读 642
收藏 11

    流水灯可能是大家最经常DIY的东西,一个是因为简单容易实现,再就是效果不错。为了演示MicroPython的强大功能,展现不同的用法,下面教大家用TPYBoard开发板DIY一个小红绿灯板,一起体验python开发的魅力吧!

    关于TPYBoard


    TPYBoard单片机开发板,现有TPYBoardV101、v102两个版本,其中v102为v101的升级版,新增swd接口。采用python开发语言,提供了30个GPIO,轻松使用python开发物联网产品。支持Python3.0及以上版本的直接运行,支持重力加速度传感器,支持上百周边外设配件。更多详细信息、教程、实例可参考micropython网站http://www.micropython.net.cn 

 

 

    1.实验目的


    1. 学习在PC机系统中扩展简单I/O 接口的方法。
    2. 进一步学习编制数据输出程序的设计方法。
    3. 学习模拟交通灯控制的方法。


    2.所需元器件


    220欧电阻一个
    红色LED数码管一个
    面包板一块
    TPYBoard板子一块
    数据线一条
    红、绿、黄三个led灯
    杜邦线若干


    3.点亮led灯


    将三个led灯插在面包板上,led负极插入面包板的负极(横向插孔),正极插入面包板的纵向插,将222欧电阻插入面包板的负极上(横向插孔)和纵向插孔中,将led灯的正极分别与TPYBoard的引脚连接起来,因为要做红绿灯,只需三个引脚即可,本人用的为Y1、Y2、Y3三个引脚,将三个led灯的正极通过杜邦线连接到TPYboard的Y1,、Y2、Y3的引脚上,然后将电阻纵向插孔用杜邦线接到TPYboard的GND引脚,在main.py文件中将Y1、Y2、Y3引脚的电平拉高,即可看到三个灯同时亮起来。代码为:

  1. # main.py -- put your code here!
  2. import pyb
  3. led1 = pyb.Pin("Y1",pyb.Pin.OUT_PP)
  4. led2 = pyb.Pin("Y2",pyb.Pin.OUT_PP)
  5. led3 = pyb.Pin("Y3",pyb.Pin.OUT_PP)
  6. While True:
  7.      led1.value(1)
  8.      led2.value(1)
  9.      led3.value(1)

 

 

 

    4.点亮数码管


    SM42056是0.56英寸一位共阴/红色LED数码管。一共十个引脚。当小数点在你的右下角时,上面一排五个引脚,从左至右依次为g,f,地,a,b,下面一排五个引脚,从左至右依次为 e,d,地,c,dp。我们要想让数码管亮起来只需要将g,f,a,b,e,d,c,dp(在这用不到)在main.py中拉高电平,把地与TPYboard的GND引脚接起来,这样就会显示为8。如下图:

 

 

    下面为0-9数字对应针脚的高电平,即对应TPYboard的引脚拉高电平


    数字高电平针脚


    0         a,b,c,d,e,f
    1         e,f
    2         a,b,g,e,d
    3         a,b,g,c,d
    4         b,c,g,f
    5         a,f,g,c,d
    6         a,f,e,d,c,g
    7         a,b,c
    8         a,b,c,d,e,f,g


    5.模拟红绿灯


    我们按照上面的步骤做完以后,然后通电,修改main.py文件,即可让灯随着数码管的变化而变化,具体代码如下:

  1. # main.py -- put your code here!
  2. import pyb
  3. led1 = pyb.Pin("Y1",pyb.Pin.OUT_PP)
  4. led2 = pyb.Pin("Y2",pyb.Pin.OUT_PP)
  5. led3 = pyb.Pin("Y3",pyb.Pin.OUT_PP)
  6. x1 = pyb.Pin("X1",pyb.Pin.OUT_PP)
  7. x2 = pyb.Pin("X2",pyb.Pin.OUT_PP)
  8. x3 = pyb.Pin("X3",pyb.Pin.OUT_PP)
  9. x4 = pyb.Pin("X4",pyb.Pin.OUT_PP)
  10. x5 = pyb.Pin("X5",pyb.Pin.OUT_PP)
  11. x6 = pyb.Pin("X6",pyb.Pin.OUT_PP)
  12. x8 = pyb.Pin("X8",pyb.Pin.OUT_PP)
  13. def six():
  14.    x1.value(1)
  15.    x2.value(1)
  16.    x3.value(1)
  17.    x5.value(1)
  18.    x6.value(1)
  19.    x8.value(1)
  20.    pyb.delay(1000)
  21.    x1.value(0)
  22.    x2.value(0)
  23.    x3.value(0)
  24.    x6.value(0)
  25.    x5.value(0)
  26.    x8.value(0)
  27. def nine():
  28.    x1.value(1)
  29.    x2.value(1)
  30.    x3.value(1)
  31.    x4.value(1)
  32.    x5.value(1)
  33.    x8.value(1)
  34.    pyb.delay(1000)
  35.    x1.value(0)
  36.    x2.value(0)
  37.    x3.value(0)
  38.    x4.value(0)
  39.    x5.value(0)
  40.    x8.value(0)
  41. def eight():
  42.    x1.value(1)
  43.    x2.value(1)
  44.    x3.value(1)
  45.    x4.value(1)
  46.    x5.value(1)
  47.    x6.value(1)
  48.    x8.value(1)
  49.    pyb.delay(1000)
  50.    x1.value(0)
  51.    x2.value(0)
  52.    x3.value(0)
  53.    x4.value(0)
  54.    x5.value(0)
  55.    x6.value(0)
  56.    x8.value(0)
  57. def zero():
  58.    x2.value(1)
  59.    x3.value(1)
  60.    x4.value(1)
  61.    x5.value(1)
  62.    x6.value(1)
  63.    x8.value(1)
  64.    pyb.delay(1000)
  65.    x2.value(0)
  66.    x3.value(0)
  67.    x4.value(0)
  68.    x5.value(0)
  69.    x6.value(0)
  70.    x8.value(0)
  71. def seven():
  72.    x3.value(1)
  73.    x4.value(1)
  74.    x8.value(1)
  75.    pyb.delay(1000)
  76.    x3.value(0)
  77.    x4.value(0)
  78.    x8.value(0)
  79. def five():
  80.    x1.value(1)
  81.    x2.value(1)
  82.    x3.value(1)
  83.    x5.value(1)
  84.    x8.value(1)
  85.    pyb.delay(1000)
  86.    x1.value(0)
  87.    x2.value(0)
  88.    x3.value(0)
  89.    x5.value(0)
  90.    x8.value(0)
  91. def four():
  92.    x1.value(1)
  93.    x2.value(1)
  94.    x4.value(1)
  95.    x8.value(1)
  96.    pyb.delay(1000)
  97.    x1.value(0)
  98.    x2.value(0)
  99.    x4.value(0)
  100.    x8.value(0)
  101. def three():
  102.    x1.value(1)
  103.    x3.value(1)
  104.    x4.value(1)
  105.    x5.value(1)
  106.    x8.value(1)
  107.    pyb.delay(1000)
  108.    x1.value(0)
  109.    x4.value(0)
  110.    x3.value(0)
  111.    x5.value(0)
  112.    x8.value(0)
  113. def two():
  114.    x1.value(1)
  115.    x3.value(1)
  116.    x4.value(1)
  117.    x5.value(1)
  118.    x6.value(1)
  119.    pyb.delay(1000)
  120.    x1.value(0)
  121.    x3.value(0)
  122.    x4.value(0)
  123.    x5.value(0)
  124.    x6.value(0)
  125. def one():
  126.    x2.value(1)
  127.    x6.value(1)
  128.    pyb.delay(1000)
  129.    x2.value(0)
  130.    x6.value(0)
  131. while True:
  132.    led1.value(1)
  133.    nine()
  134.    eight()
  135.    seven()
  136.    six()
  137.    five()
  138.    four()
  139.    three()
  140.    two()
  141.    one()
  142.    zero()
  143.    led1.value(0)
  144.    led2.value(1)
  145.    nine()
  146.    eight()
  147.    seven()
  148.    six()
  149.    five()
  150.    four()
  151.    three()
  152.    two()
  153.    one()
  154.    zero()
  155.    led2.value(0)
  156.    led3.value(1)
  157.    three()
  158.    two()
  159.    one()
  160.    zero()
  161.    led3.value(0)

更多详细信息、教程、实例可参考micropython网站http://www.micropython.net.cn 

© 著作权归作者所有

bodasisiter
粉丝 27
博文 209
码字总数 196976
作品 0
潍坊
私信 提问
加载中

评论(1)

0xW
0xW
不错的选择,Python
一款能让你发挥无限创意的MicroPython开发板—TPYBoard开发板测评

一款能让你发挥无限创意的MicroPython开发板—TPYBoard开发板测评 今天给大家带来一款MicroPython开发板的拆解和测评。所谓MicroPython也就是运行在单片机上的Python。Python在国外是一门非常...

秦溱嗪嫀螓
2017/06/16
1
0
MicroPython:STM32 上 的 Python 开发

虽然Python在国外是一门非常火的语言,在黑客界更是赫赫有名,然而中国的大学却极少开设 Python 课程,故而国内 Python 程序员多属自学。而一个没有MCU编程经验的初学者,要想让芯片跑起来,...

bodasisiter
2016/12/28
13.4K
2
MicroPython入门:能跑MicroPython开发板大盘点!

相信对于很多刚刚接触MicroPython的DIY创客来说,首先是被一些大神的作品吸引,然后有冲动自己动手,却发现入门很难,特别是面对各式各样的开发板不知如何选择。目前市面上关于MicroPython开...

bodasisiter
2018/07/06
3.6K
0
MicroPython入门|开发板种类那么多,哪块才适合你玩?

  相信对于很多刚刚接触MicroPython的DIY创客来说,首先是被一些大神的作品吸引,然后有冲动自己动手,却发现入门很难,特别是面对各式各样的开发板不知如何选择。目前市面上关于MicroPyth...

bodasisiter
2017/06/20
4
0
MicroPython新货上架【TPYBoard新品合集】你想要的好玩意儿全在这!

八月火力全开! TPYBoard一大波新品隆重上市! 一次次的研发、尝试 无数次的改进、优化 新品强势来袭 发烧友们期待已久的 STM32F407系列也已全新上线啦~ 1.STM32F407开发板 https://item.tao...

bodasisiter
2018/08/21
221
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
12分钟前
2
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部