使用按鈕開燈關(guān)燈
接線圖非常簡單,LED接 GPIO17 號口,按鈕接 GPIO2 號口默穴,負(fù)極接GND地線伴郁。
代碼也非常簡單:
from gpiozero import LED, Buttonfrom signal import pauseled = LED(17)button= Button(2)button.when_pressed= led.onbutton.when_released= led.offpause()
執(zhí)行代碼,按下按鈕烹吵,發(fā)光二極管就會亮树枫,松開就會滅募舟。
使用按鈕開燈關(guān)燈(二)
還有一種 source 的寫法档址,直接把按鈕的狀態(tài)提供給發(fā)光二極管盹兢,達(dá)到同樣的效果。
from gpiozero import LED, Buttonfrom signal import pauseled = LED(17)button= Button(2)led.source=buttonpause()
按鈕按下和松開
先上效果
GPIO2fromgpiozero import Buttonbutton = Button(2)whileTrue:ifbutton.is_pressed:print("Button is pressed")else:print("Button is not pressed")
等待按鈕按下才執(zhí)行
直接上代碼吧:
from gpiozero import Buttonbutton= Button(2)button.wait_for_press()print("Button was pressed")
程序執(zhí)行到 button.wait_for_press() 這一句之后守伸,會先停下绎秒,等待按鈕按下之后,才會繼續(xù)執(zhí)行尼摹。
按下執(zhí)行特定函數(shù)
直接上代碼:
fromgpiozeroimportButtonfromsignalimportpausedefsay_hello():print("Hello!")button = Button(2)button.when_pressed = say_hellopause()
按下按鈕见芹,執(zhí)行 say_hello() 這個(gè)函數(shù)。
松開執(zhí)行特定函數(shù)
上效果圖:
上代碼:
fromgpiozeroimportButtonfromsignalimportpausedefsay_hello():print("Hello!")defsay_goodbye():print("Goodbye!")button = Button(2)button.when_pressed = say_hellobutton.when_released = say_goodbyepause()
按下會執(zhí)行 say_hello() 函數(shù)蠢涝,松開會執(zhí)行 say_goodbye() 函數(shù)玄呛。
長按4秒關(guān)機(jī)
上代碼:
fromgpiozeroimportButtonfromsubprocessimportcheck_callfromsignalimportpausedefshutdown():check_call(['sudo','poweroff'])shutdown_btn = Button(2, hold_time=4)shutdown_btn.when_held = shutdownpause()
增加了一個(gè) hold_time=4 長按4秒才觸發(fā)的初始化,觸發(fā)之后執(zhí)行 shutdown() 函數(shù)關(guān)機(jī)和二。
小游戲:誰的反應(yīng)快徘铝?
接線圖:兩個(gè)按鈕分別連接 GPIO2、3 號口惯吕,LED連接 GPIO 17 號口惕它。
上代碼:
fromgpiozeroimportButton, LEDfromtimeimportsleepimportrandomled = LED(17)player_1 = Button(2)player_2 = Button(3)time = random.uniform(2,5)sleep(time)led.on()whileTrue:ifplayer_1.is_pressed:print("Player 1 wins!")breakifplayer_2.is_pressed:print("Player 2 wins!")breakled.off()
程序開始執(zhí)行后,在(2,5)秒隨機(jī)點(diǎn)亮LED燈废登,誰搶險(xiǎn)按下按鈕淹魄,就會顯示誰贏了。
最后小編自己也是一個(gè)有著6年工作經(jīng)驗(yàn)的工程師堡距,關(guān)于python編程甲锡,自己有做材料的整合,一個(gè)完整的python編程學(xué)習(xí)路線羽戒,學(xué)習(xí)資料和工具缤沦。想要這些資料的可以關(guān)注小編,加入python學(xué)習(xí)交流Q群735967233半醉。