《物聯(lián)網(wǎng)技術(shù)及應用》課件 查娟 7 統(tǒng)計姓名和學號-12 開關(guān)控制蜂鳴器發(fā)聲_第1頁
《物聯(lián)網(wǎng)技術(shù)及應用》課件 查娟 7 統(tǒng)計姓名和學號-12 開關(guān)控制蜂鳴器發(fā)聲_第2頁
《物聯(lián)網(wǎng)技術(shù)及應用》課件 查娟 7 統(tǒng)計姓名和學號-12 開關(guān)控制蜂鳴器發(fā)聲_第3頁
《物聯(lián)網(wǎng)技術(shù)及應用》課件 查娟 7 統(tǒng)計姓名和學號-12 開關(guān)控制蜂鳴器發(fā)聲_第4頁
《物聯(lián)網(wǎng)技術(shù)及應用》課件 查娟 7 統(tǒng)計姓名和學號-12 開關(guān)控制蜂鳴器發(fā)聲_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

3/10/20241物聯(lián)網(wǎng)技術(shù)及應用

統(tǒng)計姓名和學號

3/10/20242統(tǒng)計姓名和學號Python數(shù)據(jù)結(jié)構(gòu)3/10/20243統(tǒng)計姓名和學號(1)列表列表中包含元素,相鄰元素之間需要用“,”隔開,且列表中所有元素要放在“[]”中。列表的格式如下:列表名稱=[元素1,元素2,…,元素n]liebiao1=[8,’python’,”人生苦短,我用Python”,[“物聯(lián)網(wǎng)”,”云計算”,”大數(shù)據(jù)”]]舉個例子:列表名稱元素1元素3元素4元素23/10/20244統(tǒng)計姓名和學號如果列表中沒有元素,創(chuàng)建一個空列表:emptylist=[]列表創(chuàng)建好之后,我們可以使用for循環(huán)來遍歷列表:liebiao1=[8,'python',"人生苦短,我用Python",["物聯(lián)網(wǎng)","云計算","大數(shù)據(jù)"]]forjinliebiao1:print(j)3/10/20245統(tǒng)計姓名和學號liebiao1=[8,'python',"人生苦短,我用Python",["物聯(lián)網(wǎng)","云計算","大數(shù)據(jù)"]]print(liebiao1[0])print(liebiao1[1])print(liebiao1[2])print(liebiao1[3])采用下標訪問指定列表元素:運行結(jié)果:3/10/20246統(tǒng)計姓名和學號(2)字典定義字典時,所有元素放在{}中,每個元素都包含“鍵”和“值”兩部分內(nèi)容,相鄰元素之間用逗號分隔。字典的語法格式如下:dictname={'key':'value1','key2':'value2',...,'keyn':valuen}一個元素字典名稱元素的鍵元素的值3/10/20247統(tǒng)計姓名和學號同一字典中的元素各個鍵必須唯一,不能重復;鍵是不可變的,字符串、元組和整數(shù)都可以作為鍵。注意:3/10/20248統(tǒng)計姓名和學號

#使用字符串作為keydict1={'數(shù)學':90,'科學':95,'語文':85}print(dict1)創(chuàng)建字典舉例1:創(chuàng)建字典舉例2:#使用元組和數(shù)字作為keydict2={(10,30):'good',10:[4,5,6]}print(dict2)3/10/20249統(tǒng)計姓名和學號創(chuàng)建字典舉例3:#創(chuàng)建空字典dict3={}print(dict3)三個案例的運行結(jié)果:3/10/202410統(tǒng)計姓名和學號dict1={'數(shù)學':90,'科學':95,'語文':85}print(dict1['科學'])如何訪問字典中的某一個元素?打印結(jié)果:3/10/202411統(tǒng)計姓名和學號3/10/202412小結(jié)列表字典Python的兩種數(shù)據(jù)類型:3/10/202413Thankyou3/10/202414物聯(lián)網(wǎng)技術(shù)及應用

模塊引入

3/10/202415模塊引入哥白尼,布魯諾,開普勒還有伽利略等科學巨人哥白尼,布魯諾,開普勒還有伽利略等3/10/202416模塊引入Python也是站在巨人的肩膀上3/10/202417模塊引入(1)創(chuàng)建一個模塊3/10/202418模塊引入if__name__==“__main__”:雙下滑線空格3/10/202419模塊引入引入模塊采用關(guān)鍵字import,表示導入模塊,用法為:import模塊名mokuai2.py運行模塊引入從mokuai2.py的角度去看,只能導入這部分內(nèi)容,下面的if語句是不導入的mokuai2.py中增加調(diào)用mokuai1的函數(shù)。調(diào)用格式為:模塊名.函數(shù)模塊引入保存mokuai2.py,并運行mokuai2.py模塊引入以time模塊為例,導入time庫,調(diào)用time庫中的sleep(delaytime)函數(shù),函數(shù)功能為延遲delaytime時間,入?yún)挝粸槊?。importtimeforiinrange(5): print("helloworld") time.sleep(5)#延遲5s3/10/202423小結(jié)創(chuàng)建模塊,引入模塊(關(guān)鍵字import)模塊私有部分if__name__==“main”:模塊名.函數(shù)/變量3/10/202424任務(wù)練習創(chuàng)建文件mokuai.py。在mokuai.py中導入math庫。在mokuai.py中定義計算圓形周長的函數(shù),入?yún)閳A形半徑,周長計算公式中的π采用math.pi來表示。打印計算的周長值。調(diào)用函數(shù),計算圓形半徑為1的圓形周長。3/10/202425Thankyou3/10/202426物聯(lián)網(wǎng)技術(shù)及應用

變量未定義異常處理

3/10/202427變量未定義異常處理根據(jù)變量的作用范圍,一般可以劃分為兩種:全局變量全局變量是在函數(shù)體內(nèi)和函數(shù)體外都能使用的變量,全局變量的定義是需要放在函數(shù)體外的。局部變量局部變量是一種作用在函數(shù)體內(nèi)的變量,只能在函數(shù)體內(nèi)使用3/10/202428變量未定義異常處理value=3defb1():print(value)defb2(): value=2print(value)b1()b2()print(value)這段代碼的運行結(jié)果是什么呢?代碼示例:3/10/202429變量未定義異常處理3/10/202430變量未定義異常處理局部變量全局化:global局部變量函數(shù)體內(nèi)變量的全局化可以加一個global關(guān)鍵詞定義,格式如下:變量未定義異常處理變量未定義異常處理value=3defb1():print(value)defb2():

globalvaluevalue=2print(value)b1()b2()print(value)增加一句globalvalue這段代碼的運行結(jié)果又是什么呢?代碼示例:變量未定義異常處理Python中異常處理可以采用try…except語句。具體格式為:try:

語句1except:

語句23/10/202434變量未定義異常處理try:

語句1except異常碼:

語句2帶有異常碼的格式:try:

語句1exceptKeyboardInterrupt:

語句2鍵盤中斷異常碼3/10/202435變量未定義異常處理defshifanyanshi1(): globalj j=10defdayinghanshu(): try: print(j) except: print("tryerror")dayinghanshu()shifanyanshi1()dayinghanshu()3/10/202436小結(jié)全局變量局部變量try……except……語句3/10/202437任務(wù)練習定義loop()函數(shù),函數(shù)功能為循環(huán)打印“helloworld”,如果遇到鍵盤中斷則退出循環(huán),并打印輸出“keyboardinterrupthappens”。調(diào)用loop函數(shù)運行,查看運行結(jié)果。定義全局變量k,賦值為字符串類型“quanjubianliang”,編寫函數(shù)1,函數(shù)1中對該全局變量k進行重新賦值“newvalue”,打印變量k。編寫函數(shù)2,函數(shù)2中定義局部變量k,k=“jububianliang”,打印變量k。調(diào)用a1(),a2()函數(shù),并打印變量k。查看運行結(jié)果。3/10/202438Thankyou3/10/202439物聯(lián)網(wǎng)技術(shù)及應用

類的創(chuàng)建及使用

3/10/202440類的創(chuàng)建及使用面向過程:將衣服扔進盆里→放入洗滌劑→放水→浸泡衣服→清洗衣服→擰干衣服→曬衣服面向?qū)ο螅含F(xiàn)在將這個洗衣服的部分流程動作(放水,浸泡衣服,清洗衣服,擰干衣服)賦予給了洗衣機,這時候?qū)ο笳Q生了,就是洗衣機!3/10/202441類的創(chuàng)建及使用空間站:3/10/202442類的創(chuàng)建及使用創(chuàng)建類創(chuàng)建__init__()方法創(chuàng)建其他方法屬性3/10/202443類的創(chuàng)建及使用(1)創(chuàng)建類定義類采用關(guān)鍵字class實現(xiàn),定義格式如下:class類名: “類的注釋信息”

類體#具體內(nèi)容,包含屬性、方法等。3/10/202444類的創(chuàng)建及使用3/10/202445類的創(chuàng)建及使用(2)創(chuàng)建__init__()方法創(chuàng)建類通常也會創(chuàng)建一個__init__()函數(shù),該函數(shù)的第一個入?yún)⒐潭閟elf,其后還可以增加其他入?yún)?。每次?chuàng)建該類的實例時,__init__()函數(shù)都會執(zhí)行一遍,而不需要單獨調(diào)用。這就避免了有些代碼重復,從而簡化代碼。3/10/202446類的創(chuàng)建及使用3/10/202447類的創(chuàng)建及使用(3)創(chuàng)建其他方法在類中,變量稱之為類屬性,函數(shù)稱為類實例方法。除了__init__(self)方法外,還可以創(chuàng)建其他的函數(shù)。和__init__(self)方法不同的是,其他的函數(shù)要通過實例化訪問后才可以執(zhí)行,不會自動執(zhí)行。和__init__(self)方法相同的是,創(chuàng)建的其他函數(shù)必須包含第一個入?yún)elf,其他入?yún)⒖梢愿鶕?jù)需要設(shè)定,也可以沒有。3/10/202448類的創(chuàng)建及使用3/10/202449類的創(chuàng)建及使用(4)屬性python中屬性細分一下有三種:類屬性定義在類中且在類函數(shù)之外的變量方法屬性定義在類函數(shù)中的變量方法轉(zhuǎn)換屬性將類函數(shù)轉(zhuǎn)換為私有屬性的情況3/10/202450類的創(chuàng)建及使用在python語言中,默認的創(chuàng)建的類屬性和實例方法都是可以在類體外進行修改的,如果要限制其在類體外修改,可以設(shè)置為私有屬性,變成只讀內(nèi)容。設(shè)置私有屬性采用@property關(guān)鍵詞,則可以將方法轉(zhuǎn)換為私有屬性。3/10/202451類的創(chuàng)建及使用classfruit: aa="統(tǒng)計個人水果愛好"#類屬性 def__init__(self,xingming,zhonglei): print("initstarts") self.xingming=xingming#方法屬性

self.zhonglei=zhonglei#方法屬性print(fruit.aa) @property#方法轉(zhuǎn)換屬性 deftongji(self): return(str(self.xingming)+"最愛吃的是"+str(self.zhonglei))shuiguo=fruit("小紅","蘋果")print(shuiguo.xingming)print(shuiguo.aa)print(shuiguo.tongji)3/10/202452類的創(chuàng)建及使用classfruit: aa="統(tǒng)計個人水果愛好"#類屬性 def__init__(self,xingming,zhonglei): print("initstarts") self.xingming=xingming#方法屬性

self.zhonglei=zhonglei#方法屬性print(fruit.aa) @property#方法轉(zhuǎn)換屬性 deftongji(self): return(str(self.xingming)+"最愛吃的是"+str(self.zhonglei))shuiguo=fruit("小紅","蘋果")print(shuiguo.xingming)print(shuiguo.aa)print(shuiguo.tongji)3/10/202453類的創(chuàng)建及使用classfruit: aa="統(tǒng)計個人水果愛好"#類屬性 def__init__(self,xingming,zhonglei): print("initstarts") self.xingming=xingming#方法屬性

self.zhonglei=zhonglei#方法屬性print(fruit.aa) @property#方法轉(zhuǎn)換屬性 deftongji(self): return(str(self.xingming)+"最愛吃的是"+str(self.zhonglei))shuiguo=fruit("小紅","蘋果")print(shuiguo.xingming)print(shuiguo.aa)print(shuiguo.tongji)3/10/202454小結(jié)類的創(chuàng)建Init方法類其他方法屬性3/10/202455任務(wù)練習定義一個類,類名為vegetables。vegetables類中創(chuàng)建__init__()方法,需要增加兩個參數(shù)xingming和zhonglei,功能為打印“蔬菜的品種有很多”。將xingming和zhonglei兩個參數(shù)分別賦值到新定義的兩個方法屬性中。創(chuàng)建方法1,函數(shù)名為shucai,功能為打印字符串:xingming+"最喜歡的蔬菜是"+zhonglei。創(chuàng)建方法2,函數(shù)名為mytaste,功能為打印字符串:xingming+"最喜歡的蔬菜是"+zhonglei。將方法2轉(zhuǎn)換成私有屬性。實例化類,實例化名稱為veg1,入?yún)?小強","西蘭花"。采用veg1訪問shucai。重新賦值方法屬性zhonglei為“青菜”,再訪問一次shucai。實例化類,實例化名稱為veg2,入?yún)?小明","胡蘿卜",采用veg2訪問mytaste,重新賦值方法屬性zhonglei為“洋蔥”,再訪問一次shucai。3/10/202456Thankyou3/10/202457物聯(lián)網(wǎng)技術(shù)及應用

蜂鳴器報警

3/10/202458蜂鳴器報警生活中常見的各種報警裝置3/10/202459RPi.GPIO是一個包含了樹莓派GPIO引腳控制的庫,官方的樹莓派系統(tǒng)中默認已經(jīng)安裝了RPi.GPIO。importRPi.GPIOasGPIO#as表示重命名蜂鳴器報警RPi.GPIO庫3/10/202460蜂鳴器報警使用RPi.GPIO庫,需要了解RaspberryPi上的IO引腳編號:WiringPiBCM功能名物理引腳功能名BCMWiringPi

3.3V125V

82SDA.1345V

93SCL.156GND

74GPIO.778TXD1415

GND910RXD1516017GPIO.01112GPIO.1181227GPIO.21314GND

322GPIO.31516GPIO.4234

3.3V1718GPIO.52451210MOSI1920GND

139MISO2122GPIO.62561411SCLK2324CE0810

GND2526CE1711300SDA.02728SCL.0131215GPIO.212930GND

226GPIO.223132GPIO.2612262313GPIO.233334GND

2419GPIO.243536GPIO.2716272526GPIO.253738GPIO.282028

GND3940GPIO.2921293/10/202461在RPi.GPIO中,引腳編號方式常用的有三種,第一種是使用BOARD編號系統(tǒng)第二種是BCM編號系統(tǒng)第三種是WiringPi編號3/10/202462RPi.GPIO庫中常用的函數(shù)介紹蜂鳴器報警GPIO.setmode(boardmode)函數(shù)GPIO.setup(pin,mode)GPIO.PWM(pin,frequency)函數(shù)GPIO.setwarnings(True/Flase)函數(shù)GPIO.input(pin)函數(shù)GPIO.output(pin,value)函數(shù)GPIO.cleanup()函數(shù)3/10/202463GPIO.setmode函數(shù)GPIO.setmode(GPIO.BCM/GPIO.BOARD)函數(shù)的功能是設(shè)置樹莓派引腳的編號方式。參數(shù)可以是BCM模式或者BOARD模式。如果是C語言編程還可以是wringPi編號方式。蜂鳴器報警3/10/2024642.GPIO.setup(pin,mode)函數(shù)的功能是設(shè)置樹莓派引腳的模式。函數(shù)共有兩個參數(shù),第一個參數(shù)pin代表樹莓派引腳,取值范圍為1~40。第二個參數(shù)mode為要設(shè)置的引腳模式,一般有兩種,GPIO.IN模式和GPIO.OUT模式。GPIO.IN模式表示該引腳為輸入模式,GPIO.OUT模式表示該引腳為輸出模式。如果需要對輸出模式的引腳設(shè)置初始電平,GPIO.setup(pin,GPIO.OUT,initial=GPIO.HIGH)或GPIO.setup(pin,GPIO.OUT,initial=GPIO.LOW)。蜂鳴器報警3/10/2024653.GPIO.PWM函數(shù)GPIO.PWM(pin,frequency)函數(shù)的功能是設(shè)定引腳pin的驅(qū)動PWM方波,第二個參數(shù)frequency表示方波頻率。通常GPIO.PWM函數(shù)需要實例化后使用啟動和停止操作,例如:gpiopwm=GPIO.PWM(pin,frequency),啟動PWM采用gpiopwm.start(dutyration),參數(shù)dutyration表示方波占空比,取值范圍為0~100。關(guān)閉PWM則采用gpiopwm.stop(),無需參數(shù)。蜂鳴器報警3/10/2024664.GPIO.setwarnings函數(shù)

GPIO.setwarnings(False)函數(shù)的功能是移除告警。

GPIO.setwarnings(True)函數(shù)的功能是保留告警。5.GPIO.input函數(shù)GPIO.input(pin)函數(shù)的功能是讀取引腳pin的值。6.GPIO.output函數(shù)GPIO.output(pin,value)函數(shù)的功能是輸出value值給引腳pin。value可以是1,表示輸出高電平給引腳pin。Value如果是0,表示輸出低電平給引腳pin。蜂鳴器報警3/10/2024677.GPIO.cleanup函數(shù)GPIO.cleanup()函數(shù)的功能是清除腳本中的編號方式以及釋放腳本中使用到的引腳。通常在腳本文件最后使用,相當于格式化引腳。蜂鳴器報警3/10/202468

蜂鳴器,采用直流電壓供電,是一種常見的發(fā)聲器件,廣泛應用于電子計算機、報警器、玩具等等領(lǐng)域。

無源蜂鳴器具有如下優(yōu)點:價格便宜、結(jié)構(gòu)簡單、使用方便可以調(diào)節(jié)頻率,發(fā)出不同的聲音蜂鳴器報警3/10/202469擴展板中蜂鳴器電路圖原理圖默認為BCM編碼方式,如果設(shè)置為BOARD編碼方式:GPIO.setmode(GPIO.BOARD),則蜂鳴器的引腳編號是?蜂鳴器報警3/10/202470蜂鳴器報警物理引腳即BOARD編碼方式,BCM和BOARD對應關(guān)系WiringPiBCM功能名物理引腳功能名BCMWiringPi

3.3V125V

82SDA.1345V

93SCL.156GND

74GPIO.778TXD1415

GND910RXD1516017GPIO.01112GPIO.1181227GPIO.21314GND

322GPIO.31516GPIO.4234

3.3V1718GPIO.52451210MOSI1920GND

139MISO2122GPIO.62561411SCLK2324CE0810

GND2526CE1711300SDA.02728SCL.0131215GPIO.212930GND

226GPIO.223132GPIO.2612262313GPIO.233334GND

2419GPIO.243536GPIO.2716272526GPIO.253738GPIO.282028

GND3940GPIO.2921293/10/202471蜂鳴器報警任務(wù)要求:使用板載自帶蜂鳴器循環(huán)播放一首歌曲。任務(wù)效果:以上海灘的簡譜為例,播放上海灘簡譜純音樂。3/10/202472Buzzer=11def

setup():

#初始化函數(shù)

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BOARD)

#

設(shè)置樹莓派編號方式

GPIO.setup(Buzzer,

GPIO.OUT)

#

設(shè)置蜂鳴器引腳模式為輸出模式

global

Buzz

Buzz

=

GPIO.PWM(Buzzer,

440)

#

給蜂鳴器PWM驅(qū)動方波,初始頻率為440

Buzz.start(50)

#

設(shè)定PWM占空比50%初始化蜂鳴器報警3/10/202473def

loop():

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論