lxa000 发表于 2024-12-28 17:44:23

请教python指令的注释

网上找了一段python代码,
功能就是键按下后 led亮,键松开后led灭。
无奈刚刚初学python,
看不懂没有注释的代码。
请大家帮忙给注释哈。
谢谢了!


代码如下:
#此代码在RP2040-zero模块上运行成功2024-12-28-lxa0
import machine

led=machine.Pin(6, machine.Pin.OUT)                      # LED连接到GPIO-6
k2=machine.Pin(26, machine.Pin.IN, machine.Pin.PULL_UP)# 按键连接到GPIO-26

while True:
    if k2.value()== 0:               # 如果按键被按下(检测到L电平)
      led.value(1)                   # LED亮
    else:
      led.value(0)                   # LED灭

def debounce(pin):
    state, cntr = 0, 0
    while cntr < 5:
      if pin.value() != state:
            cntr += 1
      else:
            cntr = 0
      state = pin.value()
      time.sleep_ms(10)
    return state

祥子陈 发表于 2025-1-1 01:37:57

lxa000 发表于 2024-12-31 16:07
昨天忙乎半夜,终于山寨了 第一个自己的python代码。
#此代码在RP2040-zero模块上运行成功2024-12-30-lxa0 ...

恭喜楼主迈入嵌入式开发的大门.:lol

bigluo 发表于 2024-12-31 17:23:31

lxa000 发表于 2024-12-31 16:07
昨天忙乎半夜,终于山寨了 第一个自己的python代码。
#此代码在RP2040-zero模块上运行成功2024-12-30-lxa0 ...

消除抖动一般是对付短按的,如果你长按,就自动消抖了。
没有也行,证明你的按钮质量好,也证明环境好,没干扰。
另外LED的反应那么的快,11毫秒一亮一暗也看不出来,加上python的执行效率,更没什么反应了。

祥子陈 发表于 2024-12-30 00:12:27

lxa000 发表于 2024-12-29 15:24
多谢上面 2位朋友的解答。




最好找一本python入门的书,先对编程有个大概的了解,Micropython也是python,语法是完全一样.

scoopydoo 发表于 2024-12-29 18:46:05

楼主在首帖说初学 Python,俺猜测这个描述并不准确,应该是初学编程 ......

scoopydoo 发表于 2024-12-29 18:42:33

lxa000 发表于 2024-12-29 15:24
多谢上面 2位朋友的解答。




下面那段代码本意是按键去抖动,但是写这段代码的人脑子不清楚,漏洞百出没有任何参考价值,不要再琢磨它了 ......

ustone 发表于 2024-12-29 16:46:03

语法并不难,
难的是几个变量名分别代表什么东西或者参数(可能跟硬件相关),不懂就无法理解这代码

祥子陈 发表于 2024-12-29 00:42:56

带了DEF这就是个函数,没有调用不会执行的.
led=machine.Pin(6, machine.Pin.OUT)                      # LED连接到GPIO-6
k2=machine.Pin(26, machine.Pin.IN, machine.Pin.PULL_UP)# 按键连接到GPIO-26

while True:
    if k2.value()== 0:               # 如果按键被按下(检测到L电平)
      led.value(1)                   # LED亮
    else:
      led.value(0)                   # LED灭
这部分是标准的代码部分,直接就执行了

scoopydoo 发表于 2024-12-28 18:20:53

俺对 MicroPython 不熟悉,粗略看后面一段代码是按键去抖动的,但是并没有被调用。

lxa000 发表于 2024-12-29 15:24:15

本帖最后由 lxa000 于 2024-12-29 15:29 编辑

多谢上面 2位朋友的解答。


下面的部分请给注释一下:
def debounce(pin):
。。。。。

lxa000 发表于 2024-12-29 18:07:02

ustone 发表于 2024-12-29 16:46
语法并不难,
难的是几个变量名分别代表什么东西或者参数(可能跟硬件相关),不懂就无法理解这代码

我正在用的是ESP32里的 rp2040-zero模块。

lxa000 发表于 2024-12-30 14:47:17

多谢上面朋友解答。
已买了书还在里上 。
不知这书行不行?

lxa000 发表于 2024-12-31 16:07:03

昨天忙乎半夜,终于山寨了 第一个自己的python代码。
#此代码在RP2040-zero模块上运行成功2024-12-30-lxa0
#此代码不加 time.sleep_ms(11)消抖动也能正常运行。为啥???

import machine
import time

led=machine.Pin(8, machine.Pin.OUT)                      # LED连接到GPIO-8脚
k2=machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_UP)# 按键连接到GPIO-14脚

while True:
    if k2.value()==0:                  # 如果按键被按下(检测到L电平),也可以k2.value()!=1:
      time.sleep_ms(11)            # 延时11mS消抖动
      if k2.value()==0:            # 再次确认键按下
         led.value(1)                # 则LED亮
      else:
            time.sleep_ms(11)
            led.value(0)               # LED灭
    else:
      time.sleep_ms(11)
      led.value(0)                   # LED灭

lxa000 发表于 2025-1-1 00:27:03

bigluo 发表于 2024-12-31 17:23
消除抖动一般是对付短按的,如果你长按,就自动消抖了。
没有也行,证明你的按钮质量好,也证明环境好, ...

为了保险,
消抖语句还是先留着,
以后用的上 。

aidn 发表于 2025-1-3 21:26:47

这是ai对这段代码的解释这段 Python 代码似乎是在使用 machine 模块来控制一个 LED 和一个按键。   代码中首先定义了一个 LED 连接到 GPIO-6 并设置为输出模式,一个按键连接到 GPIO-26 并设置为输入模式且上拉。   在 while True 循环中,根据按键的状态来控制 LED 的亮灭。   debounce 函数用于消除按键的抖动,通过一定的延时和状态判断来实现。   请问您是对这段代码的功能、实现方式有疑问,还是希望对它进行修改或优化呢?
页: [1] 2
查看完整版本: 请教python指令的注释