当前位置:首页>新闻中心>公司动态>转【micropython】TPYBoardV10X 模拟红绿灯教程

转【micropython】TPYBoardV10X 模拟红绿灯教程

发布时间:2016-07-28 点击数:1178

原创版权归山东萝卜科技有限公司(http://www.micropython.net.cn)所有,转载必须以链接式http://www.micropython.net.cn/support.php?id=215注明作者和原始出处。


    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引脚的电平拉高,即可看到三个灯同时亮起来。

    代码为:

    如下图:


    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的引脚拉高电平


    5.模拟红绿灯

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

    # main.py -- put your code here!

    import pyb

    led1 = pyb.Pin("Y1",pyb.Pin.OUT_PP)

    led2 = pyb.Pin("Y2",pyb.Pin.OUT_PP)

    led3 = pyb.Pin("Y3",pyb.Pin.OUT_PP)

    x1 = pyb.Pin("X1",pyb.Pin.OUT_PP)

    x2 = pyb.Pin("X2",pyb.Pin.OUT_PP)

    x3 = pyb.Pin("X3",pyb.Pin.OUT_PP)

    x4 = pyb.Pin("X4",pyb.Pin.OUT_PP)

    x5 = pyb.Pin("X5",pyb.Pin.OUT_PP)

    x6 = pyb.Pin("X6",pyb.Pin.OUT_PP)

    x8 = pyb.Pin("X8",pyb.Pin.OUT_PP)

    def six():

    x1.value(1)

    x2.value(1)

    x3.value(1)

    x5.value(1)

    x6.value(1)

    x8.value(1)

    pyb.delay(1000)

    x1.value(0)

    x2.value(0)

    x3.value(0)

    x6.value(0)

    x5.value(0)

    x8.value(0)

    def nine():

    x1.value(1)

    x2.value(1)

    x3.value(1)

    x4.value(1)

    x5.value(1)

    x8.value(1)

    pyb.delay(1000)

    x1.value(0)

    x2.value(0)

    x3.value(0)

    x4.value(0)

    x5.value(0)

    x8.value(0)

    def eight():

    x1.value(1)

    x2.value(1)

    x3.value(1)

    x4.value(1)

    x5.value(1)

    x6.value(1)

    x8.value(1)

    pyb.delay(1000)

    x1.value(0)

    x2.value(0)

    x3.value(0)

    x4.value(0)

    x5.value(0)

    x6.value(0)

    x8.value(0)

    def zero():

    x2.value(1)

    x3.value(1)

    x4.value(1)

    x5.value(1)

    x6.value(1)

    x8.value(1)

    pyb.delay(1000)

    x2.value(0)

    x3.value(0)

    x4.value(0)

    x5.value(0)

    x6.value(0)

    x8.value(0)

    def seven():

    x3.value(1)

    x4.value(1)

    x8.value(1)

    pyb.delay(1000)

    x3.value(0)

    x4.value(0)

    x8.value(0)

    def five():

    x1.value(1)

    x2.value(1)

    x3.value(1)

    x5.value(1)

    x8.value(1)

    pyb.delay(1000)

    x1.value(0)

    x2.value(0)

    x3.value(0)

    x5.value(0)

    x8.value(0)

    def four():

    x1.value(1)

    x2.value(1)

    x4.value(1)

    x8.value(1)

    pyb.delay(1000)

    x1.value(0)

    x2.value(0)

    x4.value(0)

    x8.value(0)

    def three():

    x1.value(1)

    x3.value(1)

    x4.value(1)

    x5.value(1)

    x8.value(1)

    pyb.delay(1000)

    x1.value(0)

    x4.value(0)

    x3.value(0)

    x5.value(0)

    x8.value(0)

    def two():

    x1.value(1)

    x3.value(1)

    x4.value(1)

    x5.value(1)

    x6.value(1)

    pyb.delay(1000)

    x1.value(0)

    x3.value(0)

    x4.value(0)

    x5.value(0)

    x6.value(0)

    def one():

    x2.value(1)

    x6.value(1)

    pyb.delay(1000)

    x2.value(0)

    x6.value(0)

    while True:

    led1.value(1)

    nine()

    eight()

    seven()

    six()

    five()

    four()

    three()

    two()

    one()

    zero()

    led1.value(0)

    led2.value(1)

    nine()

    eight()

    seven()

    six()

    five()

    four()

    three()

    two()

    one()

    zero()

    led2.value(0)

    led3.value(1)

    three()

    two()

    one()

    zero()

    led3.value(0)

    6.效果演示视频

http://v.youku.com/v_show/id_XMTY1MzY5NDExNg==.html


注:文章转自http://www.micropython.net.cn

在线客服
  • 销售热线
    0536-8838268