在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

樹(shù)莓派快速反應(yīng)檢測(cè)器設(shè)計(jì)

CHANBAEK ? 來(lái)源:和娃一起玩樹(shù)莓派 ? 作者:老孟K ? 2023-07-02 15:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前面講了什么是流程圖,今天我們就利用流程圖來(lái)幫我們?cè)O(shè)計(jì)程序,看看如何在開(kāi)始程序設(shè)計(jì)時(shí),借助流程圖來(lái)幫我們梳理思路。

要讓程序設(shè)計(jì)變得好玩,就要做一些有用或者有意思的程序出來(lái),今天我們就要設(shè)計(jì)一個(gè)反應(yīng)檢測(cè)器,讓兩個(gè)人在看到一個(gè)信號(hào)燈變化時(shí)盡快按下按鈕,由程序來(lái)判斷誰(shuí)先按下,先按下的人獲得勝利。

用流程圖幫助梳理思路

要做這樣的反應(yīng)檢測(cè)器,大概的思路如下:

圖片

那么如何判斷誰(shuí)先按下呢?

我們可以設(shè)置2個(gè)按鈕,比如左按鈕和右按鈕,那么流程圖可以改為:

圖片

結(jié)合前面樹(shù)莓派讀取按鈕的知識(shí),當(dāng)左右兩個(gè)按鈕都綁定一個(gè)函數(shù),先按下的按鈕就會(huì)觸發(fā)該程序,把按鈕對(duì)象作為參數(shù)傳入該函數(shù),然后判斷該按鈕的引腳數(shù)對(duì)應(yīng)左按鈕還是右按鈕就可以判斷出來(lái)哪個(gè)先按下了,從而判斷輸贏。

那么新的流程圖應(yīng)該如下:

圖片

電路和需要的器材

思路理清了,我們就可以設(shè)計(jì)電路了,變化的信號(hào)燈可以用LED。所以器件列表如下:

  • 一個(gè)LED,顏色不限
  • 一個(gè)1K歐姆電阻,配合LED使用。
  • 兩個(gè)按鈕。
  • 若干跳線,用于連接器
  • 面包板,可選,推薦使用
  • GPIO擴(kuò)展板,可選,推薦使用

電路設(shè)計(jì)圖如下:

圖片

最終連接好的電路如下

圖片

Python代碼

現(xiàn)在可以按設(shè)計(jì)好的電路,讓指示燈點(diǎn)亮隨機(jī)時(shí)間后熄滅,左右2人看到燈熄滅后馬上按下按鈕。然后由程序來(lái)決出勝負(fù)。

隨機(jī)時(shí)間由random庫(kù)的uniform函數(shù)來(lái)生成,它的用法如下:

uniform(x,y)  #生成一個(gè)介于xy之間的隨機(jī)浮點(diǎn)數(shù),x是最小值,y是最大值

比如我們要讓燈亮5到10秒之間,那么可以使用uniform(5,10)來(lái)獲取隨機(jī)數(shù),數(shù)值將是大于5,小于10的浮點(diǎn)數(shù)。

我們的程序代碼

from gpiozero import LED,Button


from time import sleep
from random import uniform
from os import _exit



yellow= LED(5)   #黃燈鏈接了GPIO5


right = Button(17) #右按鈕連接了GPIO17
left = Button(22)  #左按鈕連接GPIO22


def btnPressed(button):
    btnpin = button.pin.number  #讀取按下的引腳編號(hào)
    print("pressed: "+str(btnpin))
    if btnpin == 17:   #是否為右引腳
        print("右邊按鈕被先按下,右邊贏!")
    else:
        print("左邊按鈕被先按下,左邊贏!")
    _exit(0)      #退出程序




right.when_pressed = btnPressed
left.when_pressed = btnPressed
yellow.on()   #黃燈亮
sleep(uniform(5,10))   # 等待5-10秒之間的隨機(jī)數(shù)
yellow.off()   #指示燈熄滅,玩家開(kāi)始按鍵。

運(yùn)行上面的程序,當(dāng)黃燈熄滅時(shí),2個(gè)玩家都按下按鈕,程序可以判斷出來(lái)是誰(shuí)先按下了,但是這個(gè)程序有一個(gè)限制,每運(yùn)行一次就退出了,要再次比賽,則需要重新啟動(dòng)程序。

我們嘗試修改一下程序,每次決出勝負(fù)后,可以馬上進(jìn)行下一輪比賽。把指示燈控制部分移到while循環(huán)里。新代碼如下:

from gpiozero import LED,Button


from time import sleep
from random import uniform
from os import _exit
   
yellow= LED(5)   #黃燈鏈接了GPIO5


right = Button(17) #按鈕連接了GPIO17
left = Button(22)


def btnPressed(button):
    btnpin = button.pin.number
    print("pressed: "+str(btnpin))
    if btnpin == 17:
        print("右邊按鈕被先按下,右邊贏!")
    else:
        print("左邊按鈕被先按下,左邊贏!")


right.when_pressed = btnPressed
left.when_pressed = btnPressed
while True:
    yellow.on()
    sleep(uniform(5,10))
    yellow.off()
    print("waiting")
    left.wait_for_press()    #等待按鈕被按下,在按鈕按下前暫停此處
    right.wait_for_press()  #等待按鈕被按下,在按鈕按下前暫停此處

結(jié)果執(zhí)行后發(fā)現(xiàn)如下的比賽結(jié)果:

圖片

從程序輸出看,雖然可以通過(guò)輸出的先后順序判斷出是左邊的按鈕先按下,但是因?yàn)橛疫叺陌存I也差不多同時(shí)調(diào)用了btnPressed程序,也打印了右邊贏的信息,這顯然是應(yīng)該改進(jìn)的。

怎么改呢?

是不是可以加一個(gè)標(biāo)志變量呢?當(dāng)?shù)谝粋€(gè)按下的按鈕觸發(fā)了btnPressed函數(shù)后,下一個(gè)按鈕再次進(jìn)入時(shí)應(yīng)該看到這個(gè)標(biāo)志位,并且知道自己已經(jīng)輸了。流程圖應(yīng)該改為這樣

圖片

最終的程序如下:

from gpiozero import LED,Button


from time import sleep
from random import uniform
from os import _exit

yellow= LED(5)   #黃燈鏈接了GPIO5


isWon = False   # 標(biāo)志變量,第一個(gè)按下的按鈕會(huì)改變它為T(mén)rue


right = Button(17) #按鈕連接了GPIO17
left = Button(22)  #左按鈕連接GPIO22


def btnPressed(button):
    global isWon      #使用全局變量isWon
    if isWon == True:  # 已經(jīng)被更新為T(mén)rue,表示自己按晚了
        return       #什么也不做,直接退出該函數(shù)
    else:
        isWon = True    # 表示自己是贏家,把這個(gè)標(biāo)志位設(shè)為T(mén)rue 
    btnpin = button.pin.number   #讀取按下的引腳編號(hào)
    print("pressed: "+str(btnpin))
    if btnpin == 17:
        print("右邊按鈕被先按下,右邊贏!")
    else:
        print("左邊按鈕被先按下,左邊贏!")


right.when_pressed = btnPressed
left.when_pressed = btnPressed


while True:
    isWon  = False
    yellow.on()
    sleep(uniform(5,10))
    yellow.off()
    print("waiting")
    left.wait_for_press()
    right.wait_for_press()

運(yùn)行上面的代碼,可以每次循環(huán)進(jìn)行一次比賽,只有當(dāng)2個(gè)按鈕都按下,決出勝負(fù)后才會(huì)進(jìn)入下一個(gè)循環(huán)。從而實(shí)現(xiàn)了程序運(yùn)行時(shí)可以不斷進(jìn)行比賽的效果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23806

    瀏覽量

    673046
  • 檢測(cè)器
    +關(guān)注

    關(guān)注

    1

    文章

    892

    瀏覽量

    48607
  • 流程圖
    +關(guān)注

    關(guān)注

    2

    文章

    63

    瀏覽量

    19029
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1280

    瀏覽量

    53921
  • 樹(shù)莓派
    +關(guān)注

    關(guān)注

    121

    文章

    1988

    瀏覽量

    107302
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    樹(shù)莓如何安裝和啟動(dòng)

    btw.我的顯示是VGA接口的,所以用的是HDMI轉(zhuǎn)VGA安裝樹(shù)莓1.先將安裝好系統(tǒng)的SD卡插入樹(shù)莓 2.再將u***接口的鍵盤(pán)和鼠標(biāo)
    發(fā)表于 06-30 23:18

    樹(shù)莓2接USB設(shè)備后沒(méi)有反應(yīng)是怎么回事?

    不存在,開(kāi)udevadm監(jiān)控,也沒(méi)有反應(yīng)) B公司產(chǎn)品,直接插入,可以檢測(cè)到。 情況二,接一個(gè)USBHUB: USBHUB接入到樹(shù)莓2的USB口,有
    發(fā)表于 07-19 05:56

    如何快速入門(mén)樹(shù)莓

    樹(shù)莓的簡(jiǎn)單入門(mén)默認(rèn)的賬號(hào)和密碼Raspberry PiCentOS 7Ubuntu開(kāi)啟ssh連接方式一創(chuàng)建空白的ssh文件方式二1.SSH服務(wù)安裝檢查樹(shù)莓SSH服務(wù)是否開(kāi)啟SSH服
    發(fā)表于 02-23 06:58

    快速反應(yīng)電子體溫計(jì)應(yīng)用方案

    快速反應(yīng)電子體溫計(jì)應(yīng)用方案  傳統(tǒng)測(cè)量體溫的方法是使用水銀體溫計(jì),由于水銀溫度計(jì)破損后會(huì)導(dǎo)致有害重金屬外泄不利于環(huán)保,甚至對(duì)人體產(chǎn)生傷害,電子體溫計(jì)
    發(fā)表于 03-09 11:31 ?1930次閱讀
    <b class='flag-5'>快速反應(yīng)</b>電子體溫計(jì)應(yīng)用方案

    快速反應(yīng)智能安全監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    摘  要: 設(shè)計(jì)了一套快速反應(yīng)嵌入式智能安防監(jiān)控系統(tǒng),實(shí)現(xiàn)對(duì)運(yùn)動(dòng)目標(biāo)的跟蹤、定位,快速捕獲人臉圖像。利
    發(fā)表于 01-05 13:43 ?851次閱讀
    <b class='flag-5'>快速反應(yīng)</b>智能安全監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    樹(shù)莓裝機(jī)教程

    樹(shù)莓裝機(jī)教程樹(shù)莓裝機(jī)教程樹(shù)莓裝機(jī)教程樹(shù)莓
    發(fā)表于 11-25 10:14 ?52次下載

    井下用定電位電解式CO檢測(cè)器對(duì)通風(fēng)的反應(yīng)特性

    井下用定電位電解式CO檢測(cè)器對(duì)通風(fēng)的反應(yīng)特性
    發(fā)表于 12-17 11:38 ?9次下載

    樹(shù)莓的種類(lèi)_樹(shù)莓安裝教程

    樹(shù)莓(Raspberry Pi)是尺寸僅有信用卡大小的一個(gè)小型電腦,您可以將樹(shù)莓連接電視、顯示、鍵盤(pán)鼠標(biāo)等設(shè)備使用。目前,
    發(fā)表于 11-27 22:01 ?5570次閱讀

    樹(shù)莓3硬件配置_樹(shù)莓3都能裝什么系統(tǒng)_樹(shù)莓3系統(tǒng)安裝教程

    樹(shù)莓3一直頗受電子發(fā)燒友的青睞,這篇文章主要討論的就是樹(shù)莓3的硬件配置、樹(shù)莓3都能裝什么系
    發(fā)表于 12-08 14:36 ?2.7w次閱讀

    樹(shù)莓用什么語(yǔ)言編程_樹(shù)莓python編程詳解

    樹(shù)莓是一個(gè)非常廉價(jià)的、只有手掌大小的完全可編程的計(jì)算機(jī)。雖然樹(shù)莓的體積小,但是它的潛力無(wú)限。你可以像使用常規(guī)臺(tái)式計(jì)算機(jī)一樣在樹(shù)莓派上創(chuàng)建
    發(fā)表于 01-15 17:00 ?3.9w次閱讀

    樹(shù)莓是什么樹(shù)莓的簡(jiǎn)單介紹

    要想玩轉(zhuǎn)樹(shù)莓,首先得知道樹(shù)莓是什么。在本節(jié)中,作者將帶領(lǐng)大家揭開(kāi)樹(shù)莓的神秘面紗,了解
    發(fā)表于 05-15 18:09 ?31次下載
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>是什么<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>的簡(jiǎn)單介紹

    商鋪治安聯(lián)防快速反應(yīng)系統(tǒng)解決方案

    針對(duì)沿街商鋪這塊,目前簡(jiǎn)單的監(jiān)控防范已不能夠滿足當(dāng)前治安狀況的需要,社會(huì)急需一套能覆蓋城市每個(gè)角落尤其是沿街商鋪的治安聯(lián)防快速反應(yīng)系統(tǒng),來(lái)預(yù)警每個(gè)角落所發(fā)生的緊急事情,從而全面掌控社會(huì)治安狀況,維護(hù)社會(huì)大局穩(wěn)定。
    發(fā)表于 08-15 10:02 ?1425次閱讀
    商鋪治安聯(lián)防<b class='flag-5'>快速反應(yīng)</b>系統(tǒng)解決方案

    距離檢測(cè)報(bào)警使用樹(shù)莓Pico

    電子發(fā)燒友網(wǎng)站提供《距離檢測(cè)報(bào)警使用樹(shù)莓Pico.zip》資料免費(fèi)下載
    發(fā)表于 11-09 11:49 ?0次下載
    距離<b class='flag-5'>檢測(cè)</b>報(bào)警使用<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>Pico

    ADL5308 快速反應(yīng) 188 dB范圍(10 PA至25 mA)對(duì)數(shù)轉(zhuǎn)換數(shù)據(jù)表 ADL5308 快速反應(yīng) 188 dB范圍(10 PA至25 mA)對(duì)數(shù)轉(zhuǎn)換數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)ADL5308 快速反應(yīng) 188 dB范圍(10 PA至25 mA)對(duì)數(shù)轉(zhuǎn)換數(shù)據(jù)表相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有ADL5308 快速反應(yīng) 188 dB范圍(10
    發(fā)表于 10-07 17:52
    ADL5308 <b class='flag-5'>快速反應(yīng)</b> 188 dB范圍(10 PA至25 mA)對(duì)數(shù)轉(zhuǎn)換<b class='flag-5'>器</b>數(shù)據(jù)表 ADL5308 <b class='flag-5'>快速反應(yīng)</b> 188 dB范圍(10 PA至25 mA)對(duì)數(shù)轉(zhuǎn)換<b class='flag-5'>器</b>數(shù)據(jù)表

    樹(shù)莓分類(lèi):用樹(shù)莓識(shí)別不同型號(hào)的樹(shù)莓

    在本教程系列的第一部分中,您將學(xué)習(xí)如何使用樹(shù)莓AI攝像頭來(lái)檢測(cè)不同的樹(shù)莓型號(hào)。本系列由DavidPlowman創(chuàng)建,他是
    的頭像 發(fā)表于 06-13 16:39 ?387次閱讀
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>分類(lèi)<b class='flag-5'>器</b>:用<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>識(shí)別不同型號(hào)的<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>!
    主站蜘蛛池模板: 性色影院 | 很黄很污的视频网站 | 色播久久 | 综合色区| 国产九色在线 | 中文字幕精品一区二区2021年 | 午夜看黄 | 日韩一级一欧美一级国产 | 成人网在线观看 | 四虎影院成人在线观看 | 性生活一区 | 影音先锋在线亚洲精品推荐 | 日本wwwwww| 免费观看一级特黄欧美大片 | 人人干人人上 | 性视频软件 | 黄网地址 | 亚洲综合一二三区 | 欧美成人性动漫在线观看 | 欧美日韩一区二区三区毛片 | 天天躁夜夜 | 精品国产_亚洲人成在线高清 | 亚洲日本中文字幕天天更新 | 欧美αv日韩αv另类综合 | 人人骚| 五月月色开心婷婷久久合 | 亚洲男人的天堂久久无 | 清纯唯美亚洲综合一区 | 国模久久| 酒色成人 | 国产高清视频免费最新在线 | 视频一二三区 | 韩国在线免费视频 | 国产乱辈通伦影片在线播放 | 色视频日本 | 六月激情丁香 | 国产高清区 | 黄色网免费观看 | 色偷偷免费视频 | 九九热精品在线 | 国产精品特黄毛片 |