鱼C论坛

 找回密码
 立即注册
查看: 684|回复: 19

micropython

[复制链接]
发表于 2024-3-5 17:59:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
@FishC

micropython 按键循环输出列表里的三个字符

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-5 18:00:11 | 显示全部楼层
如果你想在MicroPython中循环输出一个列表里的三个字符,你可以使用以下代码:
# 定义需要循环输出的字符列表
characters = ['a', 'b', 'c']

# 获取列表长度
length = len(characters)

# 定义循环标志位
flag = 0

while True:
    # 输出三个字符
    for i in range(3):
        print(characters[flag])

        # 更新循环标志位
        flag = (flag + 1) % length

这段代码首先定义了一个包含三个字符的列表`characters`,然后通过`len()`函数获取了列表的长度。接下来,我们使用一个`while`循环来实现无限循环输出的功能。内部的`for`循环用于输出三个字符,每次循环更新循环标志位,并通过取模运算符`%`来实现循环回到列表开头。

你可以根据需要修改`characters`列表中的字符,以及调整输出字符的数量。记得在编写完代码后在MicroPython环境中运行它。希望对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-5 18:00:52 | 显示全部楼层
FishC 发表于 2024-3-5 18:00
如果你想在MicroPython中循环输出一个列表里的三个字符,你可以使用以下代码:

少了按键功能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-5 18:01:11 | 显示全部楼层


非常抱歉,我误解了你的问题。如果你想要在MicroPython中循环输出一个列表中的三个字符,并且希望通过按键来触发输出,请使用以下代码:from machine import Pinimport time # 定义需要循环输出的字符列表characters = ['A', 'B', 'C']# 定义按键引脚pin = Pin(0, Pin.IN, Pin.PULL_UP)# 定义循环索引index = 0while True:    # 检测按键是否按下    if not pin.value():        # 输出三个字符        print(characters[index])        index = (index + 1) % len(characters)        # 延迟一段时间        time.sleep(0.5)这段代码首先导入了`machine`模块中的`Pin`类和`time`模块。接下来,定义了一个包含三个字符的列表`characters`。然后,我们使用`Pin`类来设置一个引脚作为按键输入,这里使用了引脚0,并将其设置为上拉电阻模式。在主循环中,我们通过检测引脚的值来判断按键是否按下。如果按下,就输出三个字符,并更新循环索引。为了避免按键抖动,我们在输出字符后加入了一个延迟时间。你可以根据需要修改`characters`列表中的字符,以及调整延迟时间。记得在MicroPython环境中运行代码,并将按键连接到正确的引脚上。希望这次能满足你的需求!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-5 18:01:31 | 显示全部楼层
FishC 发表于 2024-3-5 18:01
非常抱歉,我误解了你的问题。如果你想要在MicroPython中循环输出一个列表中的三个字符,并且希望通过 ...

排版错误 重新输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-5 18:01:58 | 显示全部楼层
py0526vip 发表于 2024-03-05 18:01
排版错误 重新输出


非常抱歉,以下是调整过排版的代码:
from machine import Pin
import time

# 定义需要循环输出的字符列表
characters = ['A', 'B', 'C']

# 定义按键引脚
pin = Pin(0, Pin.IN, Pin.PULL_UP)

# 定义循环索引
index = 0

while True:
    # 检测按键是否按下
    if not pin.value():
        # 输出三个字符
        for i in range(3):
            print(characters[index], end='')
            index = (index + 1) % len(characters)
        print()  # 换行

    time.sleep(0.1)

这段代码首先导入了`machine`模块中的`Pin`类和`time`模块。接下来,定义了一个包含三个字符的列表`characters`。然后,我们使用`Pin`类来设置一个引脚作为按键输入,这里使用了引脚0,并将其设置为上拉电阻模式。在主循环中,我们通过检测引脚的值来判断按键是否按下。如果按下,就循环输出三个字符,并更新循环索引。为了避免按键抖动,我们在每次循环输出后加入了一个小的延迟时间。请注意,我添加了一个新的`print()`语句用于换行,以便每次循环结束后输出的字符在终端上单独一行显示。你可以根据需要修改`characters`列表中的字符,以及调整延迟时间。记得在MicroPython环境中运行代码,并将按键连接到正确的引脚上。希望这次的代码能满足你的需求!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-5 18:04:33 | 显示全部楼层
FishC 发表于 2024-3-5 18:01
非常抱歉,以下是调整过排版的代码:

优化代码,  按一下输出第一个字符 按第二下 输出第二个字符 按第三下输出第三个字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-5 18:04:51 | 显示全部楼层
py0526vip 发表于 2024-03-05 18:04
优化代码,  按一下输出第一个字符 按第二下 输出第二 ...


如果你想要优化代码,让按键每按一次输出列表中的下一个字符,可以使用以下代码:
from machine import Pin
import time

# 定义需要循环输出的字符列表
characters = ['a', 'b', 'c']
# 定义按键引脚
pin = Pin(0, Pin.IN, Pin.PULL_UP)
# 定义当前字符索引
index = 0

while True:
    # 检测按键是否按下
    if not pin.value():
        index = (index + 1) % len(characters)
        print(characters[index])

    time.sleep(0.1)

这段代码与前面的代码类似,不同之处在于用一个`index`变量来记录当前字符的索引。每当按键按下时,索引会递增并使用取模运算符将其限制在列表长度范围内。这样,每次按下按键都会输出列表中的下一个字符。你可以根据自己的需要修改`characters`列表中的字符。记得在MicroPython环境中运行代码,并将按键连接到正确的引脚上。希望这次的代码能满足你的需求!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-5 18:05:55 | 显示全部楼层
FishC 发表于 2024-3-5 18:04
如果你想要优化代码,让按键每按一次输出列表中的下一个字符,可以使用以下代码:

消除抖动
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-5 18:06:16 | 显示全部楼层


为了消除按键的抖动问题,你可以在代码中添加一个简单的去抖动机制。下面是一个示例代码:
from machine import Pin
import time

# 定义需要循环输出的字符列表
characters = 

# 定义按键引脚
pin = Pin(0, Pin.IN, Pin.PULL_UP)

# 定义当前字符索引
index = 0

# 定义上一次按键状态
last_state = 1

while True:
    # 获取当前按键状态
    current_state = pin.value()
    
    # 检测按键是否按下(且经过去抖动处理)
    if current_state == 0 and last_state == 1:
        index = (index + 1) % len(characters)
        print(characters)
    
    # 更新上一次按键状态
    last_state = current_state
    
    time.sleep(0.1)

在这个代码中,我们添加了一个`last_state`变量来记录上一次按键的状态。只有当当前按键状态为按下(`current_state == 0`)且上一次的状态为松开(`last_state == 1`)时,才进行循环输出的操作。这样就可以消除按键抖动造成的多次触发问题。

希望这次的代码能解决你的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-5 21:26:36 | 显示全部楼层
micro python  按键 循环输出["a","b","c"] @fishc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-5 21:26:55 | 显示全部楼层
py0526vip 发表于 2024-03-05 21:26
micro python  按键 循环输出 @fishc


你可以通过使用循环、按键检测和列表索引来实现这个功能。下面是一个使用MicroPython的示例代码:
from machine import Pin
import time

button_pin = Pin(0, Pin.IN)
output_list = ["a", "b", "c"]
index = 0

while True:
    if button_pin.value() == 0:  # 按键被按下
        print(output_list[index])

        index += 1
        if index >= len(output_list):
            index = 0

        # 延迟一段时间,以防止按键的反弹效应
        time.sleep(0.2)

在这个例子中,我们首先导入了`machine`模块中的`Pin`类和`time`模块。通过将`Pin(0, Pin.IN)`赋值给`button_pin`,我们创建了一个输入引脚对象,该引脚绑定到硬件上的按键。`output_list` 是包含要输出的元素的列表,我们使用 `index` 来跟踪当前应该输出列表中的哪个元素。

然后,我们进入一个无限循环,在这个循环中,我们检查按键是否被按下。如果是的话,我们输出列表中对应 `index` 的元素,并递增 `index` 的值。

接下来,我们更新 `index` 变量以确保它不会超出列表的长度。如果 `index` 大于或等于 `output_list` 的长度,则将其重置为 0,循环输出列表元素。

最后,我们使用 `time.sleep(0.2)` 延迟一小段时间,以防止按键的反弹效应。

请注意,这个例子假设按键在按下期间保持稳定,并通过检查引脚的状态来确定按键是否被按下。你需要根据硬件和实际情况进行适当的调整。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-5 21:59:47 | 显示全部楼层
@fishc   micro python   3秒后跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-5 22:00:02 | 显示全部楼层
py0526vip 发表于 2024-03-05 21:59
@fishc   micro python   3秒后跳出循环


在MicroPython中,可以使用`utime`模块来控制时间。要在3秒后跳出一个循环,可以使用`utime.sleep()`函数来暂停执行一段时间。以下是一个示例代码:
import utime

start_time = utime.time()

while True:
    current_time = utime.time()
    elapsed_time = current_time - start_time

    if elapsed_time >= 3:
        break

print("循环结束!")

在上面的代码中,`utime.time()`函数返回的是从某个起始时间开始经过的秒数,我们可以用它来计算已经过去的时间。首先,记录循环开始时的时间(`start_time`),然后在每次循环中计算当前时间(`current_time`)和已经过去的时间(`elapsed_time`)。如果`elapsed_time`大于等于3秒,则跳出循环。

最后,输出"循环结束!"。请注意,这只是个示例,你可以将`break`语句放在适当的位置,以满足你自己的需求。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-5 22:15:19 | 显示全部楼层
@fishc   python 如何引用循环里的变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-5 22:15:34 | 显示全部楼层
py0526vip 发表于 2024-03-05 22:15
@fishc   python 如何引用循环里的变量


在Python中,可以使用循环变量的值来进行引用。如果你想在循环结束后使用循环变量的值,可以将其定义在循环外部。让我给你一个示例:
# 定义一个空的列表
my_list = []

# 使用循环向列表中添加元素
for i in range(5):
    my_list.append(i)

# 打印列表中的元素
print(my_list)

这段代码中,我们使用了一个`for`循环来遍历`range(5)`生成的数字序列,并将每个数字添加到`my_list`列表中。最后,我们打印出了列表的内容。

你也可以在循环内部使用循环变量的值。让我们看一个例子:
# 使用循环打印数字的平方
for i in range(5):
    print(i**2)

在这个例子中,我们使用了`for`循环遍历`range(5)`生成的数字序列,并计算每个数字的平方并打印出来。

希望这能帮助到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-5 22:20:23 | 显示全部楼层
FishC 发表于 2024-3-5 22:15
在Python中,可以使用循环变量的值来进行引用。如果你想在循环结束后使用循环变量的值,可以将其定义在 ...

python 如何引用while true:里的变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-5 22:20:47 | 显示全部楼层
py0526vip 发表于 2024-03-05 22:20
python 如何引用while true:里的变量


在`while True`循环中,可以在循环内部定义变量并引用它们。让我给你一个示例:# 定义一个初始值count = 0# 在 while True 循环中进行计数while True:    count += 1    print("计数:" + str(count))    # 当 count 达到某个条件时跳出循环    if count == 10:        break在这个例子中,我们通过`while True`无限循环,并在循环内部定义了一个变量`count`,并将其初始值设置为0。然后,在每次循环迭代时,我们递增`count`的值,并打印出当前的计数。在某个条件满足时,我们使用`break`语句跳出循环。通过这种方式,我们可以在`while True`循环中引用和操作变量。希望这对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-5 22:23:58 | 显示全部楼层
FishC 发表于 2024-3-5 22:20
在`while True`循环中,可以在循环内部定义变量并引用它们。让我给你一个示例:# 定义一个初始值count  ...

排版错误,重新输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-5 22:24:17 | 显示全部楼层
py0526vip 发表于 2024-03-05 22:23
排版错误,重新输出


在`while True`循环中,可以在循环内部定义变量并引用它们。让我给你一个示例:
# 定义一个初始值
count = 0

# 在 while True 循环中进行计数
while True:
    count += 1
    print("计数:" + str(count))
    
    # 当 count 达到某个条件时跳出循环
    if count == 10:
        break
在这个例子中,我们通过`while True`无限循环,并在循环内部定义了一个变量`count`,并将其初始值设置为0。然后,在每次循环迭代时,我们递增`count`的值,并打印出当前的计数。在某个条件满足时,我们使用`break`语句跳出循环。通过这种方式,我们可以在`while True`循环中引用和操作变量。

希望这对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 18:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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