6-1 功能簡介 6-4 實驗成果 6-2 電路說明 6-5 延伸應用與練習 6-3 程式設計

Slides:



Advertisements
Similar presentations
定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
Advertisements

H T U 報告者:周振聰 僑生處 主任. h T U 免會考成績入學 h T U 未來望 您想學 一技之長嗎 ? 歡迎參加莊敬建教班 不但三年免學費,且 保證讓您學到一技之 長,脫離貧窮,邁向 光明的人生 免試入學.
人機介面 Arduino 簡介 授課教師 開課單位. Arduino 簡介 Arduino 是一塊 Open source 的 Simple i/o 介面板,並 且具有使用類似 java, C 語言的開發環境。 可以快速使用 Arduino 語言 ( 基於 wiring) 與 Flash 或 Processing…
桃園地景藝術節 最近桃園在舉辦桃園地景藝術節,種共有五大主題區, 分別是:黃色小鴨展區、巨型蓮花展區、草間點點展區、范姜 古厝展區、新屋水巷展區。那這些景點到底個展覽什麼呢?讓 我們繼續看下去 …… 。
4-2 、聚落的演變 人口的分布 自然環境特性、交通便利性及就業 機會等因素,常影響人們對於居住地點 的選擇。 臺灣西部地區的平原和盆地,地勢 較為低平、開發較早,在肥沃的土壤、 便捷的交通網路等有利的條件下,工商 業往來頻繁,人口較為密集。
我国青少年题材邮票欣赏 一、各个历史时期的重大题材 二、青少年德、智、体题材 三、童话题材 四、少儿绘画创作题材 五、儿童附捐邮票
小一家長會 訓育訊息 德性培育組 余家濂主任
加快培育和发展战略性新兴产业 科技部调研室 胥和平
2014年语言文字工作总结 党委学生工作部 2014年12月5日.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
火灾自救安全提示.
第3章: 產業與競爭環境 張緯良 世新大學資訊管理系.
高雄市復華高級中學 校務分享簡介 簡報人:康木村 校長.
第二章 项目一:企业厂区与车间平面设计 1.
文明建设,气象先行 ——农安县气象局 2.
當那時候,末底改坐在朝門,王的太監中有兩個守門的,辟探和提列,惱恨亞哈隨魯王,想要下手害他。(斯2:21)
滑雪美食街 組員:林韋伶、張雅弦、王佑盛、朱坤賢.
汪清县气象局创建省级文明单位工作展示 2016年8月
高架水塔扶搖直上 南區水塔定案設計說明-眾志成城 廣告塔樓:夜間以LED燈光輔助效果 太陽能板: 提供抽水機電力及夜間照明用電使用
青岛市数字证书认证中心 2011年4月.
第8章 机床操作 主讲:臧红彬 博士.
Arduino单片机基础及开发应用 姜凯耀
2006年台灣醫學中心大搜查 聰明病人 完全就醫指南.
榕桥中学 校园文化建设情况汇报.
弘ㄧ大師-李叔同.
2016年上半年工作汇报 后勤与保卫管理处 二○一六年七月.
Arduino Wifi 模組 學生:楊御政 指導老師:林得裕 老師.
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
Arduino 基本知識.
微處理機原理與應用 Chapter 1 簡介 Chung-Min Wu, Ph.D
智慧電子應用設計導論(1/3) Sensor-III
使用Android控制Arduino 史先强
內容:串列傳輸 實作:Arduino to PC 、 Arduino to Arduino 簡報:廖崇義
动手玩转Arduino (三) 串口输入输出
電子技術(三) 小專題報告 紅外線感溫顯示器
102年度新北市立三重商工旗艦計畫實施方案 先進車用電子控制技術培育計畫
当那时候,末底改坐在朝门,王的太监中有两个守门的,辟探和提列,恼恨亚哈随鲁王,想要下手害他。(斯2:21)
13-1 功能簡介 13-4 實驗成果 13-2 電路說明 13-5 延伸應用與練習 13-3 程式設計
CH5 數位訊號 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
電腦硬體裝修 授課數位教材.
Arduino单片机基础 周弋
    Arduino 1602 LCD 量測電壓顯示 LCD 示波器    林品成 月.
小專題-霍爾電路之IC研究 組員:施怡儒 S 柯曄新 S 張久藝 S
8-1 功能簡介 8-4 實驗成果 8-2 電路說明 8-5 延伸應用與練習 8-3 程式設計
Arduino.
动手玩转Arduino (五) RF数据通信
智慧電子應用設計導論(1/3) Display
語法:Variables & Functions 實作:Digital out (Button+LED) 簡報:廖崇義
DHT11 溫溼度感測器 林品成 月.
9.1 家用电器.
近代物理实验期末报告 ——by 金宵 周逸卢
最速就業職種養成! 護理、軍人、職人 花蓮縣學生輔導諮商中心 適性輔導組 游賀凱
世外桃源~ 劍 潭 里 零碳排放里.
电路原理教程 (远程教学课件) 浙江大学电气工程学院.
    使用Arduino量測交流(AC)電壓    林品成 月.
    使用Arduino量測直流(DC)電壓    林品成 月.
亚博科技 Arduino视频教程 第8讲 蜂鸣器发声实验.
亚博科技 Arduino视频教程 第12讲 8乘8点阵.
物聯網期末報告 組員: 邱景柏 方嘉慶 陳約翰 洪銘陽
Arduino智慧機器人 觸鬚的觸碰式導航
知识点0204 夏普红外测距传感器 主讲人:宁波鄞州职业教育中心学校 陈浙 (Arduino功能模块与应用)
Arduino課程 液晶1602 中部自造者基地-雲科大.
感光世界 亞洲大學 資訊工程學系 學生:郭致翔、林壬午、黃智猷、陳奕升 指導教授:蔡志仁教授
相片典藏 臺北市立弘道國中總務處 防災校園建置計畫補助-個人防護具 品 名 數 量 30 4 工作手套 72 6 簡易雨衣 300
第五章 序列埠通訊 並列與序列通訊簡介 認識序列埠 認識字元資料類型 字串資料類型 從序列埠監控視窗觀察變數 從Arduino接收序列資料
科展心得分享 電子科教師:童信源.
Arduino单片机基础及应用开发 物理系 周孟磊 张卓.
第8章 输入/输出设备 I/O设备是计算机系统与外界交换信息的装置。从计算机系统结构来讲,CPU和主存储器合称为主机,而输入/输出设备独立于主机之外,因此又称为外部设备。
第2章 Arduino编程.
硬件基础知识及常见硬件故障处理.
Presentation transcript:

6-1 功能簡介 6-4 實驗成果 6-2 電路說明 6-5 延伸應用與練習 6-3 程式設計 第6章 輸入控制(開關) 6-1 功能簡介 6-4 實驗成果 6-2 電路說明 6-5 延伸應用與練習 6-3 程式設計

6-1 功能簡介 本實習希望進行按鈕開關的實驗,當壓放開關一次時LED 亮,再壓放開關一次時LED 滅,並周而復始運作。 系統方塊圖如圖 6-1 所示。 本實驗主要提到開關資料的讀取,以及開關彈跳問題的發生原因及解決方法。

6-2 電路說明 邏輯電路的輸入訊號除了由其他電路所送來的訊號外,最常見的輸入訊號就是開關,開關種類主要分為自動復歸型與非自動復歸型兩類。 自動復歸型開關(如圖6-2)是指當開關按下後,隨即改變開關狀態,當開關放開後隨即又回復原狀,例如按鈕開關(Push Button)即屬於此類型,電路符號為 。 非自動回復型開關(如圖6-3)是指當撥動開關後,其狀態會維持在某一狀態(例如導通ON 狀態),若要改變至關閉(OFF)狀態,則需要再一次撥動開關才行,例如搖頭開關、滑動開關,電路符號為 ;另外像二段式開關 、指撥開關\ (DIP Switch)、水銀開關等,皆屬於此類型。

6-2 電路說明

6-2 電路說明 以開關做為輸入元件,通常會接一個提升電阻到正電源或是接地端,不能讓開關空接,也就是當按鈕開關未按下(亦即OFF)時,會先有一個固定電壓給輸入端當作初始狀態。

6-2 電路說明 由於機械開關的特性,由某一接點投擲至另一接點的瞬間,會產生多次的彈跳現象,無論是接點由ON 至OFF 或由OFF 至ON,接點會經過閉合→打開→閉合→打開→…最後到穩定狀態的過程,此一現象稱為接點的彈跳現象,如圖 6-4 所示。 開關的彈跳時間通常不大於20ms(10ms~20ms)。

6-2 電路說明 一般而言,CPU 是以極快(與彈跳時間比較)的速度執行指令,這些彈跳的狀態會被偵測到,以致被CPU 誤以為按了好幾次(甚至數百次)。 為了避免這種誤判的現象,可以使用二種方式解決: 硬體(正反器、RC 電路或單擊電路)。 軟體(程式)。 就CPU控制而言,以軟體解決彈跳現象是較為經濟的方法,而處理彈跳現象的過程稱為「去彈跳」(debounce)。 解決彈跳的方法是當檢知開關被按下後,先延遲一段時間(約20ms ~ 50ms)用以避開彈跳現象後再確認,就可避免按一次鍵被讀到好幾次的問題。

6-2 電路說明 圖 6-5 為本實驗的硬體電路圖,其中按鈕開關S1 接至D2,接一個提升電阻至正電源,形成未按時D2 被提升至+5V 為邏輯1,按下時D2 接地為邏輯0 的狀態;另外LED 接至D10,採低態動作。

6-2 電路說明

6-2 電路說明 1. Arduino Leonardo + 麵包板的接線圖 如圖 6-6 所示,本電路使用USB 提供的5V,不需外加電源。

6-2 電路說明 圖 6-7 所示為使用Arduino Leonardo + 麵包板擴展板的接線圖,其中按鈕開關有4 支接腳,未按時1、4 腳短路,2、3 腳短路,按下時4 支腳全短路。

6-2 電路說明 圖 6-8 為Leonardo 板(或OZONE)+Arminno 多功能實驗板接線情況,為簡化顯示,圖 6-8 只畫出多功能實驗板的區塊8 及區塊15。由於實驗板區塊15 為4x4 鍵盤矩陣電路,不同於單一顆按鈕開關的接法,故JP24上的pin3 應接地。

6-3 程式設計 Arduino IDE 內建了一些按鍵程式範例, 請選擇Examples 中的 02.Digital → Button。此程式是一個比較簡單的範例,按鍵按下時LED 亮,放開時LED 滅,程式結構中包含一開始的I/O 宣告,setup() 的I/O 電氣特性指定,主迴圈程式loop() 的內容。以下為Button 的部分程式碼。

6-3 程式設計 其中digitalRead(pin) 為讀取指定數位腳的指令, 傳回值為HIGH 或LOW。

6-3 程式設計 接著,以官方的Button 程式為基礎,開始修改內容以符合實驗要求;首先請看流程圖。

6-3 程式設計

6-3 程式設計

6-3 程式設計

6-3 程式設計

6-3 程式設計 1. const:常數宣告 此命令宣告變數在執行期間,數值是不會變動的,例如lenPin 在電路上就是D10,不會在執行過程中換成其它I/O,故適合宣告成常數,不會占用CPU 的暫存器資源。而任何非const 開頭的變數宣告,皆會占用CPU 資源。 2. boolean:布林資料型態 宣告正確的資料型態,有助於減少CPU 資源的占用,由於按鍵的狀態buttonState、led 值的狀態ledState都是非0 即1 的二位元狀態,故宣告成boolean 型態即可。 3. if(條件式){statement1 }else{statement2}:條件判斷指令   此命令是基本的條件式命令,如果if 命令中的條件式為「真」,則statement1 的敘述會被執行;如果條件式為「假」,則else 後的程式段statement2 就會被執行。

6-3 程式設計 4. while ( 條件式) { statement }:迴圈控制指令 此命令為前測迴圈指令, 如果命令中的條件式為「真」, 則 statement 的敘述會被執行,直到條件式不成立才離開迴圈。若條件式為1,代表條件式永遠成立,形成一個永久迴圈的結構while (1) { }。 5. break:強迫跳出迴圈指令   執行迴圈指令時,若有需要跳出迴圈,可使用break 強迫跳出。

6-4 實驗成果 一切準備就緒後,即可開始進行編譯程式,以及下載、燒錄、測試的工作; 首先請使用USB 傳輸線連接好個人電腦與Arduino Leonardo 板,並依第5-3 節中的實驗流程再練習一次,確認選擇微控制器板為Arduino Leonardo,選擇正確的串列傳輸埠及晶片燒錄方式,接著可點選圖示進行程式語法檢查、編譯及燒錄。 燒錄成功後,可按一下電路(圖 6-7 或圖 6-8)所標示的按鍵S1,試試下列三種狀況: 壓放一次LED 會亮,再壓放一次LED 會滅,並持續變化。 當壓下時LED 會立即轉態,即亮→滅,滅→亮,放開時則無任何變化,可明顯看出有無開關彈跳問題。 快速壓放按鍵,觀察LED 的轉態是否正常、是否順暢。

6-5 延伸應用與練習 有了讀取按鍵狀態的輸入能力後,還有哪些是可以延伸應用並練習的呢?以下帶領大家來思考一下! 6-5.1 使用millis() 函式解決彈跳問題 為了瞭解開關彈跳問題的影響,請試著將chap6-1.ino 程式中的行號33、38 刪除(或在行號前加入註解符號//),然後重新下載燒錄,測試表6-2 按鍵的壓放與LED 的顯示是否有異常,並記錄結果於表 6-2 中。

6-5 延伸應用與練習 實驗可發現,未加上防彈跳時間的延遲會造成開關資料讀取的錯誤,爾後遇到開關類元件的實作一定要特別注意。 Arduino IDE 中也有提供官方版的消除開關彈跳範例,請打開File → Examples → 02.Digital→Debounce。

6-5 延伸應用與練習 官方提供的Debounce 程式也是利用延遲時間消除開關彈跳,但不是利用delay() 函式,而是利用millis() 函式來處理,以下說明這兩個函式的差異。

6-5 延伸應用與練習 以下為使用millis() 完成的延遲副程式範例,其中行號1 開頭的void代表無傳回值,myDelay 為副程式名稱,duration 為傳入參數,資料型態為無符號長整數;若對副程式語法有點陌生,可先參看第3-2.7 節的說明。

6-5 延伸應用與練習 下列程式為使用millis() 函式完成的消除開關彈跳程式,紅字代表需修改的地方;礙於篇幅,刪除了部分官方Debounce 範例程式的註解。

6-5 延伸應用與練習

6-5 延伸應用與練習

6-5 延伸應用與練習 接著,請下載程式至Arduino Leonardo 控制板,測試結果是否正常,並觀察按鍵是壓下時改變LED 狀態,或是放開時改變LED 狀態? 若想得到壓下時改變LED 狀態,上列程式chap6-5-1.ino 應如何修改?

6-5 延伸應用與練習 6-5.2 按鈕開關與LED 亮度控制 延伸第6-5.1 節的millis() 函式的功能,思考該如何修改chap6-5-1.ino的程式,完成按鈕開關控制LED 亮度的實驗,功能敘述如下: 單步亮度調整:按鈕開關S1 每壓放一次,LED 亮度值加5,重複此動作,直到最亮(255)時,再反轉變成S1 每壓放一次,LED 亮度值減5,直到最暗時,再反轉回遞增。 自動亮度調整:久按S1 超過1 秒時,LED 變成自動亮度調整模式,會按原有變亮或變暗的方向持續變化,直到S1 放開為止。 可透過Serial Monitor 視窗,顯示LED 亮度值的變化,並持續循環。

6-5 延伸應用與練習 可綜合參考第5-5.2 節呼吸燈及第6-5.1 節使用millis() 解決彈跳的程式,完成本小節的功能要求。 單步與自動亮度調整功能的地方,就在現在與上次時間點的差值有無超過消除彈跳延遲時間(例如50ms)程式區塊的處理,程式碼如下。

6-5 延伸應用與練習 虛框線內代表已消除開關彈跳後的處理,可將單步與自動亮度調整的功能撰寫於虛框線內指示的地方;常數longPress為按鍵久按值的設定,longPress=1000(1 秒)。

6-5 延伸應用與練習 無論單步或自動亮度調整,都需要類似呼吸燈的亮度調整程式,因 此可寫一個名稱為ChangeBrightness() 的副程式, 方便共同呼叫使用,ChangeBrightness() 程式碼請看程式檔chap6_5_2.ino 行號51-64,是由第5-5.2 節呼吸燈的程式修改而成,每呼叫一次可依fadeAmount 遞增或遞減LED 亮度值一次。因此上方藍色字的程式碼可寫為:   if (buttonState==LOW) ChangeBrightness(); 代表S1 按鍵狀態為LOW(壓下)時呼叫亮度調整程式,達到本實驗 的要求。

6-5 延伸應用與練習

6-5 延伸應用與練習

6-5 延伸應用與練習

6-5 延伸應用與練習

6-5 延伸應用與練習 一切準備就緒後,接著開始進行編譯程式,以及下載、燒錄、測試的工作;請依以下步驟進行測試: 點選Tools → Serial Monitor,開啟 電腦端的Serial Monitor。 壓放開關S1 一次,觀察 Serial Monitor 上的數 值變化,每壓放一次數值 是否遞增加5,LED 亮度 是否有變化。

6-5 延伸應用與練習 當壓下S1 時Serial Monitor 會立即有數值變化,還是放開S1 時變化呢? 快速壓放按鍵,觀察Serial Monitor 上的數值與LED 亮度變化,是否符合預期,其中因為LED 為低態動作的電路結構,故數值愈少,LED 愈亮。 久按開關S1 超過1 秒後,觀察Serial Monitor 上的數值與LED 亮度,有否快速自動變化,放開時會立即停住。