在Maix duino开发板上实现LED闪烁

简介: 简单介绍如果你还不知道如何点亮LED,请看:点亮LED今天开始上手在开发板上运行程序了,学习点亮LED灯就像是学习编程语言的H e l l o , w o r l d Hello, worldHello,world。学会电亮一盏LED灯之后,我便尝试着自己实现了个LED闪烁。

简单介绍

如果你还不知道如何点亮LED,请看:点亮LED今天开始上手在开发板上运行程序了,学习点亮LED灯就像是学习编程语言的H e l l o , w o r l d Hello, worldHello,world。学会电亮一盏LED灯之后,我便尝试着自己实现了个LED闪烁。


我当然不会满足于一个灯的闪烁。我发现板子上有绿、红、蓝三个LED灯泡,它们的引脚分别是12,13,14。我们知道三个灯泡的组合可以产生8种同的状态,那么,


如何实现八个状态轮流出现的闪灯?

看看下面这段代码,

注意是//的整除运算,而不是/,因为/运算得到的结果是小数。写C++习惯了,这个问题导致我懵了好久。

for i in range(8):
  print(i // 4 % 2, i // 2 % 2, i % 2)

让我们运行一下,

302846b155f14de3a89f42d69ebbf44c.png

编程实现

这下就好办了,我们的灯泡是低电平有效(即0亮1灭),那么整体的实现代码如下,

from fpioa_manager import fm
from Maix import GPIO
io_led_gre = 12
io_led_red = 13
io_led_blu = 14
fm.register(io_led_gre, fm.fpioa.GPIO0)
fm.register(io_led_red, fm.fpioa.GPIO1)
fm.register(io_led_blu, fm.fpioa.GPIO2)
led_g = GPIO(GPIO.GPIO0, GPIO.OUT)
led_r = GPIO(GPIO.GPIO1, GPIO.OUT)
led_b = GPIO(GPIO.GPIO2, GPIO.OUT)
for i in range(80):  # 闪烁10轮
    led_g.value(i//4%2)
    led_r.value(i//2%2)
    led_b.value(i%2)
    for j in range(200000):  # 用来消耗时间
        k = 1


效果展示

接下来让我们看看效果吧!

你也可以试试自己实现不同的效果。例如,改变灯泡亮起的顺序,让它们按照格雷码的顺序闪烁。

相关文章
|
6月前
4-2 51单片机点亮LED
4-2 51单片机点亮LED
58 2
|
芯片
最详细STM32,cubeMX 按键点亮 led
最详细STM32,cubeMX 按键点亮 led
189 0
|
27天前
stm32学习3-1 LED闪烁
stm32学习3-1 LED闪烁
32 4
|
3月前
|
机器人 Linux 异构计算
实例1:控制树莓派板载LED灯闪烁
本文是一个关于如何使用Python编程控制树莓派板载LED灯闪烁的实验教程,涵盖了树莓派的基本概念、LED控制文件的读写操作、Python `open()` 和 `sleep()` 函数的使用方法,以及具体的实验步骤和代码实现,目的是让读者通过实践熟悉树莓派操作和Linux文件读写。
68 1
实例1:控制树莓派板载LED灯闪烁
|
6月前
|
编译器 C语言 C++
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
|
计算机视觉
树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
|
6月前
|
C语言
点亮一个LED+LED闪烁+LED流水灯——“51单片机”
点亮一个LED+LED闪烁+LED流水灯——“51单片机”
stm32CubeMX点亮一个LED灯
stm32CubeMX点亮一个LED灯
98 0
单片机点亮LED与LED闪烁
单片机点亮LED与LED闪烁
81 0
单片机点亮LED与LED闪烁
使用STM32CubeMX实现LED闪烁
使用STM32CubeMX实现LED闪烁
199 0