来C站这么久了,最近在初学树莓派Raspberry Pi PIco .所以想在C站记录一下自己的学习过程,到时候能回头看看自己的学习之路。今天学习了如何新建全局变量与按键输入模式,和IO的输出模式配置,还有顺便学习了如何新建子程序。

        今天的目标就是点亮一个LED灯,然后用按键来控制灯闪烁的频率。废话不多说了,上程序。

#LED灯闪烁(从新上电会直接运行)
#定义输入IO函数
from machine import Pin
# from multiprocessing import Process
#调用延时函数
import time
import utime

key1=Pin(15,Pin.IN,Pin.PULL_UP)
# key=Pin(15,Pin.IN,Pin.PULL_UP)
led = Pin(25, Pin.OUT)

#外部中断
#“def 子程序名(变量or“self”)” self代表C中的void  <----定义子程序
#调用的时候如果没有返回值可以直接“子程序名()”调用
def external_interrupt(key1):
	#定义全局变量(没有global则为局部变量)
	#必须放到对应子程序里面
	global keydel
    # 消除抖动
	utime.sleep_ms(100)
    # 再次判断按键是否被按下
	if key1.value() == 0:
		keydel += 100;
		if keydel >500:
			keydel=100
		print('The button is pressed')
		print("{:3.1d}".format(keydel))
		while key1.value() == 0:
			utime.sleep_ms(1)

if __name__ == '__main__':
	
	#外部中断
	# KEY.irq(handler,trigger)
	# handler:中断执行的回调函数
	# trigger:触发中断的方式,分别为Pin.IRQ_FALLING(下降沿触发)、
	# Pin.IRQ_RISING(上升沿触发)、Pin.IRQ_LOW_LEVEL(低电平触发)和
	# Pin.IRQ_HIGH_LEVEL(高电平触发)四种
	# 定义中断,下降沿触发
	key1.irq(external_interrupt, Pin.IRQ_RISING)
	keydel=100
	
	while(1):
		# led点亮
		led.value(1)
		utime.sleep_ms(keydel)
		# led熄灭
		led.value(0)
		utime.sleep_ms(keydel)
		
# 	#普通按键
# 	if(key1.value() == 0):
# 		utime.sleep_ms(100)
# 		if(key1.value() == 0):
# 			while(key1.value() == 0):
# 				led.value(1)
# 			keydel+=100
# 			print("{:3.1d}".format(keydel))
# 			if(keydel>=1000):
# 				keydel=0
# 	else :
# 		led.value(0)

        

树莓派python中button函数_树莓派python中button函数

         控制灯闪烁的时间使用了一个全局变量。然后如果使用普通按键的话会由于延时函数的影响按键会失灵。所以我使用了外部中断来做按键的识别程序,其实按照我平时的编程习惯,我不会使用延时函数的,一般都是使用定时器中断来使标志位加一来做延时函数,这样做的话不会由于延时函数在运行的时候其他程序会受影响。但是由于初学Python,而且使从C中转换过来,所以需要来点基础的学习一下。下一步学习一下使用其他功能,一步一个脚印学下去。

        图片和程序有一部分是在网上学习后编写下来的,如有侵权,请私信联系删除,感谢。