999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Arduino控制板“定時器”沖突的故障解決

2016-12-05 17:55:30任大奇謝作如
中國信息技術(shù)教育 2016年21期
關(guān)鍵詞:按鈕學(xué)生

任大奇++謝作如

最近,在教學(xué)《Arduino創(chuàng)意機器人》的過程中碰到了一個奇怪的問題。

故障描述

學(xué)生在學(xué)習(xí)了《換擋風(fēng)扇》一課后,做了一個用三個按鈕控制的“換擋風(fēng)扇”。如圖1所示,學(xué)生將三個按鈕模塊分別接在Arduino的數(shù)字口2、3、4上,風(fēng)扇接在數(shù)字口11上。接好硬件后,學(xué)生用米思齊(Mixly)軟件編寫了如圖2所示的程序,編譯并下載到Arduino中。學(xué)生按下按鈕2,風(fēng)扇開始慢速轉(zhuǎn)動,再按下按鈕3,風(fēng)扇加速轉(zhuǎn)動,按下按鈕1后,風(fēng)扇停止了轉(zhuǎn)動。

一切都很順利,于是筆者提議給這個作品增加遙控功能。學(xué)生們馬上興致勃勃地動手找到紅外遙控模塊,沒幾下就把硬件連接好了(在9號數(shù)字口上增加了紅外接收模塊),如圖3所示。

使用遙控器上的“1”“2”“3”鍵分別控制風(fēng)扇“停止轉(zhuǎn)動”“慢速轉(zhuǎn)動”“快速轉(zhuǎn)動”,程序并不復(fù)雜,很快便寫好了,如下頁圖4所示。

當(dāng)學(xué)生按下遙控器上的“3”鍵時,風(fēng)扇快速旋轉(zhuǎn)起來。但當(dāng)按下“2”鍵時,預(yù)期的慢速旋轉(zhuǎn)并沒有出現(xiàn),風(fēng)扇直接停止了轉(zhuǎn)動。學(xué)生又按了幾次“2”鍵,可是風(fēng)扇仍然紋絲不動,再按“3”鍵,風(fēng)扇也不動了。這時,學(xué)生趕緊檢查剛才寫的程序,再三檢查后確定程序沒有問題。那難道是硬件連接出問題了?仔細(xì)檢查后也沒有問題。一臉茫然的學(xué)生只好來求助筆者。于是,筆者查找遙控失效的原因。

首先,可以確定的是,風(fēng)扇不能工作在慢速狀態(tài)下的故障和加入了紅外線遙控有關(guān),因為本來是正常的。但它們之間會有什么關(guān)系呢?然后,筆者開始從它們的工作原理入手查找線索,考慮到遙控器遵循NEC協(xié)議,所以不論發(fā)送還是接收命令都需要產(chǎn)生38kHz的脈沖,于是便很自然地想到,紅外接收模塊工作時會使用到Arduino板的定時器,同時風(fēng)扇轉(zhuǎn)速的改變也是靠Arduino板定時器產(chǎn)生的PWM輸出實現(xiàn)的,那會不會是它們在使用定時器資源時產(chǎn)生了沖突呢?帶著這一疑問,筆者開始求證自己的推測。

技術(shù)分析

為了更好地理解求證過程,筆者先來解釋一下Arduino UNO的主芯片(Atmage328P)中的定時器。所謂的定時器類似于生活中的鬧鐘,只要開啟這個鬧鐘它就會根據(jù)設(shè)定的時間不斷去提醒。提醒的方式有兩種:一種是給CPU發(fā)送定時器中斷,另一種是直接在管腳上輸出脈沖電壓(PWM)。只是在同一個時間內(nèi)這個“小鬧鐘”只能設(shè)定一個定時時間,以一種方式工作,不能既當(dāng)“鬧鐘”,又輸出PWM。這種定時器在Atmage328P中共需要三個,分別是Timer0(0號定時器)、Timer1(1號定時器)和Timer2(2號定時器)。

為了確認(rèn)紅外遙控和風(fēng)扇PWM輸出在使用定時器資源上是否有沖突,首先,要確定風(fēng)扇PWM輸出所使用的是幾號定時器。查看Arduino UNO的原理圖,可以知道風(fēng)扇所接的11口是從Arduino主芯片(Atmage328P)的17號管腳引出的(如上頁圖5),筆者順藤摸瓜,查閱Atmage328P的數(shù)據(jù)手冊,得知此管腳(OC2A)正是2號定時器在PWM模式下輸出脈沖的管腳(如上頁圖6),也就是說要想風(fēng)扇慢速轉(zhuǎn),必須讓2號定時器工作在PWM模式下。接著,需要確認(rèn)紅外接收模塊使用的是幾號定時器。分析Mixly軟件中的Arduino代碼,可以看到程序加載了一個外部庫“IRremote.h”,在“Mixly0.97\arduino1.7.9\hardware\arduino\avr\libraries\IRremote”文件夾中找到該庫文件。打開該庫文件,發(fā)現(xiàn)其又引用了一個用于設(shè)置中斷的庫文件“IRremoteInt.h”,在這個文件的72行中發(fā)現(xiàn)了“#define IR_USE_TIMER2”這一句(如上頁圖7)。因此可知,針對Atmage328P芯片,紅外遙控模塊使用了2號定時器,至此可以確定問題的原因就是這兩個功能同時使用了2號定時器。

解決方案

問題的原因找到了,那怎么解決呢?筆者想到了兩種方法:

第一種方法是修改紅外遙控模塊使用的定時器。將“IRremoteInt.h”中的72行修改成“#define IR_USE_TIMER1”,強制紅外遙控使用1號定時器。保存庫文件后,筆者重新編譯下載,試著按下了遙控器上的“2”鍵,風(fēng)扇慢速地轉(zhuǎn)了起來,成功了!

但是,這種方法對沒有學(xué)習(xí)過類C語言的學(xué)生來說,有一定困難,而且改變了默認(rèn)庫中定時器的設(shè)置,可能會產(chǎn)生與其他模塊的沖突,所以這種方式只適合于硬件連接無法改變的情況使用。有沒有簡單點的方法呢?

還有一種方法就是更換風(fēng)扇連接的數(shù)字口。查看資料,筆者可以得知,Arduino UNO的各個具備PWM輸出功能的數(shù)字口及其定時器的對應(yīng)關(guān)系如上頁表所示。筆者將風(fēng)扇換到使用0號定時器的6號口上,修改程序中的端口,重新編譯下載后,測試也一切正常。學(xué)生覺得這種處理定時沖突的方式更簡單,只要記住6個可以輸出PWM的數(shù)字口對應(yīng)的定時器,換一下連接數(shù)字口就可以解決定時器資源沖突問題。

結(jié)語

至此,故障得到了很好的解決。通過這個過程,筆者總結(jié)了在進行Arduino制作時需要注意的幾點:

①用Arduino UNO實現(xiàn)一些簡單的互動功能的確很方便,但作品的功能一旦復(fù)雜,就容易出現(xiàn)各種資源沖突的問題。所以,應(yīng)用比較復(fù)雜的作品,最好選用硬件資源更加豐富的板子,如Arduino 2560、Arduino DUE等。

②如果作品中多處用到定時器,要合理分配定時器的使用。

③在使用數(shù)字口5、6的PWM功能時,盡量不要使用delay()延時函數(shù),因為這個函數(shù)是使用定時器0來產(chǎn)生延時。

④像紅外遙控模塊這樣需要用到定時器的模塊,盡量不要接在具有PWM功能的數(shù)字口上,以免造成干擾。

⑤將PWM輸出寫在不同程序段,能減少互相干擾的概率。

此外,筆者深刻體會到,創(chuàng)客教師和學(xué)生還應(yīng)該多了解一些單片機的原理、知識,才能“造”出更多有趣的作品,遇到問題也能得到有效解決。

猜你喜歡
按鈕學(xué)生
這些按鈕能隨便按嗎?
哪個是門鈴真正的按鈕
當(dāng)你面前有個按鈕
快把我哥帶走
《李學(xué)生》定檔8月28日
電影(2018年9期)2018-11-14 06:57:21
趕不走的學(xué)生
死循環(huán)
學(xué)生寫話
學(xué)生寫的話
內(nèi)心不能碰的按鈕
主站蜘蛛池模板: 国产精品无码翘臀在线看纯欲| 全午夜免费一级毛片| 91娇喘视频| 国产微拍一区二区三区四区| 在线欧美一区| 国产91九色在线播放| 午夜a级毛片| 国产 日韩 欧美 第二页| 亚卅精品无码久久毛片乌克兰| 亚洲精品波多野结衣| 亚洲无码高清一区二区| 亚洲福利片无码最新在线播放| 久久精品国产精品青草app| 看你懂的巨臀中文字幕一区二区| 国产一级毛片yw| 54pao国产成人免费视频 | 国产精品手机视频一区二区| 日韩无码视频播放| 国产精品无码AV中文| 国产在线视频二区| 欧洲亚洲一区| 喷潮白浆直流在线播放| 亚洲无码精彩视频在线观看| 99er精品视频| 成人va亚洲va欧美天堂| 99久久精品国产自免费| 在线不卡免费视频| 亚洲自拍另类| 又污又黄又无遮挡网站| 亚洲精品你懂的| 99国产在线视频| 日本成人在线不卡视频| 亚洲a级毛片| 久久91精品牛牛| 久久伊人操| 久久精品亚洲中文字幕乱码| 久久久久无码精品| 国产精品区视频中文字幕| 福利国产微拍广场一区视频在线| 久久香蕉国产线| 亚洲一区二区三区在线视频| 欧美高清视频一区二区三区| 久久婷婷综合色一区二区| 国产精品欧美激情| 91免费观看视频| 狠狠做深爱婷婷综合一区| 999在线免费视频| 又爽又大又黄a级毛片在线视频 | 伊人成人在线| 久久国产精品波多野结衣| 久精品色妇丰满人妻| 亚洲va精品中文字幕| 日本人妻丰满熟妇区| 成人午夜久久| 日韩欧美成人高清在线观看| 国产情侣一区二区三区| 亚洲精品手机在线| 亚洲无码不卡网| 国产人妖视频一区在线观看| 婷婷激情亚洲| 日韩欧美色综合| 中国一级特黄大片在线观看| 最新午夜男女福利片视频| a欧美在线| 国产精品久久久精品三级| 亚洲天堂成人在线观看| 免费在线看黄网址| 久久亚洲天堂| 久久国产精品夜色| 伊人查蕉在线观看国产精品| 精品国产成人a在线观看| 无码精油按摩潮喷在线播放 | 亚洲欧美日韩色图| 色有码无码视频| 欧美视频二区| 欧美午夜小视频| 久久久黄色片| 国产簧片免费在线播放| 69av在线| 久久久噜噜噜| 国产尹人香蕉综合在线电影| 国产91在线免费视频|