【银杏科技ARM+FPGA双核心应用】MicroPython系列八:PWM呼吸灯

[复制链接]
867|0
 楼主| 如意不如意 发表于 2020-7-4 17:51 | 显示全部楼层 |阅读模式
本帖最后由 如意不如意 于 2020-7-6 09:59 编辑

一、实验目的
使用micropython 控制PWM实现呼吸灯。

二、实验设备及平台
  • iCore3双核心板点击购买
  • Micro USB线
  • 电脑

三、实验原理
开发板STM32的定时器有PWM功能,iCore3的三个LED都连接在定时器8,可以通过定时器的PWM输出控制LED的亮度,从而实现呼吸灯的功能。驱动示意图如下图所示:

fetch.php?w=600&tok=62b5b0&media=icore3:icore3_micropython_2_1.jpg

四、实验步骤
  • 用数据线将iCore3的USB-OTG口与电脑相连;
  • 打开PYBFLASH磁盘,将代码包中的main.py文件替换到PYBFLASH的main.py;
  • 弹出磁盘,将iCore3重新上电,代码运行;

五、实验现象
iCore3双核心板上三色LED灯轮流从暗到亮,从亮到暗。

六、实验程序
  1. # -*- coding: utf-8-*-
  2. # main.py -- put your code here!
  3. from pyb import Pin, Timer  #导入
  4. import pyb

  5. #创建定时器8(I5,I6,I7都使用定时器8),10ms中断一次
  6. tm8 = Timer(8, freq=100)
  7. #创建LED对象,指定Timer的通道,并设定PWM模式、关联的Pin
  8. LEDR=tm8.channel(1, Timer.PWM, pin=Pin.cpu.I5)
  9. LEDG=tm8.channel(2, Timer.PWM, pin=Pin.cpu.I6)
  10. LEDB=tm8.channel(3, Timer.PWM, pin=Pin.cpu.I7)
  11. LED = [LEDR, LEDG, LEDB]  #创建LED列表

  12. while True:
  13.     for led in LED:   #三色LED循环
  14.         for i in range(100,0,-1):      #渐亮
  15.             led.pulse_width_percent(i) #设定脉冲宽度占空比
  16.             pyb.delay(10)

  17.         for i in range(101):           #渐灭
  18.             led.pulse_width_percent(i) #设定脉冲宽度占空比
  19.             pyb.delay(10)
代码包.zip (903 Bytes, 下载次数: 1)

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

本版积分规则

22

主题

66

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0