蜂鳴器 ( 會說話的鬧鐘 )

過去分別有介紹過按鈕開關和蜂鳴器的用法,在這個範例裡面,我們會把按鈕開關和蜂鳴器結合,實際做出一個具備貪睡功能的鬧鐘 也就是按下按鈕開關之後,會過個幾分鐘再叫,此外在按下開關的時候,電腦還會透過語音朗讀的功能發音報時!

參考:按鈕開關蜂鳴器

範例影片展示

接線與實作

如果使用馬克一號,因為只有一個 GND,所以我們用麵包板共地,如果是用 Fly 就可以接不同的 GND 即可,這裏按鈕開關的訊號腳接 10,蜂鳴器則是接 11。

由於 Webduino 支援開發板種類只會越來越多,接線圖先使用馬克一號與 Fly 示範,對於其他開發板來說,只要按照同樣的方式接線,仍會一樣的效果

馬克一號接線示意圖:

馬克一號接線蜂鳴器與按鈕開關

Fly 接線示意圖:

Fly 接線蜂鳴器與按鈕開關

實際接線圖:

馬克一號接線蜂鳴器與按鈕開關

馬克一號接線蜂鳴器與按鈕開關

操作解析

打開 Webduino Blockly 編輯工具 ( https://blockly.webduino.io ),因為這個範例會用網頁「顯示文字」來顯示時鐘的時間以及鬧鐘的時間,所以要先打開 Webduino Blockly 的網頁互動測試區,下拉選單選擇「顯示文字」,此時在右下角會出現對應的積木功能可以選擇。

網頁互動測試

開始之前先來練習一下,如何用「迴圈」與「等待」做出時鐘的效果,無窮迴圈有兩種形式,一種是「當」,表示「當發生什麼事情」的時候會啟動迴圈,另外一種是「直到」,表示「直到發生什麼事情」的時候就會停止迴圈

迴圈積木

放入一個重複迴圈,下拉選單選擇「直到」,透過顯示文字的積木,將現在的時間顯示出來,顯示完之後接續一個等待一秒的積木,這樣每次回圈執行的當下都會等待一秒,畫面中也會看到時間一秒一秒的顯示出來。

重複的積木在「基本功能 > 迴圈」目錄下,時間的積木在「進階功能 > 控制台」目錄下,等待的積木在「進階功能 > 等待」目錄下。

迴圈與等待積木

瞭解如何做個小時鐘之後,就正式開始,把開發板放到畫面中,放入蜂鳴器的積木名稱設定 buzzer 腳位 14,放入按鈕開關的積木名稱設定 button 腳位 10。

蜂鳴器相關積木在「輸入輸出 > 蜂鳴器」目錄下,按鈕開關積木在「輸入輸出 > 按鈕開關」目錄下。

蜂鳴器與按鈕開關積木

再放入三個變數,第一個變數 clock 表示鬧鐘響鈴的時刻,後方接著鬧鐘時刻的文字,check 則是判斷是否貪睡的「真/否」邏輯,sleep 則是按下按鈕開關後,貪睡的時間。

變數積木在「變數」目錄下,文字輸入積木在「基本功能 > 文字」目錄下,真/否邏輯積木在「基本功能 > 邏輯」目錄下,數字積木在「基本功能 > 數學式」目錄下。

設定鬧鐘積木

建立一個名為 time 的流程,裡頭就放入剛剛我們練習的小時鐘迴圈,比較不同的是,這邊透過 now 來裝載當前的時間,這樣子我們待會才可以做出時間到了鬧鐘就響鈴的效果。

流程的積木在「流程」目錄下,建立字串的積木在「基本功能 > 文字」目錄下,可以透過藍色小齒輪增加缺口。

設定響鈴積木

time 流程只有這樣子還不夠,裡頭還需要進行邏輯的判斷,如果「當前的時間等於鬧鐘的時間」,就讓蜂鳴器播放音樂,同時把文字變色、check 從「否」變成「真」,到這個步驟我們就已經完成了鬧鐘的基本流程。

邏輯相關積木在「基本功能 > 邏輯」目錄下。

設定鬧鐘播放音樂

接著來實作按下開關會「語音朗讀報時」的流程,建立另外一個新流程,命名為 talk,用「朗讀文字」唸出目前的時刻,因為需要唸出「幾點幾分幾秒」,所以使用建立字串的積木來完成這個功能,這個 talk 流程會在按下按鈕開關的時候觸發。

語音朗讀積木在「進階功能 > 語音朗讀」目錄下。

設定報時積木

再來看到「貪睡」的流程,新增一個流程,名稱叫做 newClock,貪睡的流程會在按鈕開關按下的時候觸發,裡面一開始先放入三個變數,分別用 hour 表示按下開關當下的小時、minute 表示按下開關當下的分鐘數、second 表示按下開關當下的秒數,接著把分鐘數加上我們貪睡的分鐘數 sleep。

加減數學式的積木在「基本功能 > 數學式」目錄下。

設定貪睡積木

因為分鐘數如果純粹相加,有可能會發生大於 60 的狀況,這時候就要把分鐘數近位變成小時,而小時也有不能大於 23 的狀況,因此這裡放入兩個邏輯做判斷,如果 minute 大於 59,就讓 hour 加 1,如果 hour 大於 23,就把 hour 歸零,最後再把重設的鬧鐘文字顯示出來。

設定時間積木

現在已經有了「小時鐘 time」、「朗讀報時 talk」和「貪睡 newClock」的三個流程,最後一個流程就是按鈕開關的流程,命名流程為 btn,流程裡放入當按鈕開關按下的時候,如果 check 為真,表示蜂鳴器正在演奏 ( 鬧鐘正在叫 ),就把蜂鳴器停下來,並把文字變成黑色 ( 因為鬧鐘叫的時候文字是紅色 ),同時執行 talk 朗讀報時和 newClock 貪睡的流程。

如果長按按鈕開關,就表示要把鬧鐘關起來,所以就讓 clock 變成「無」,然後在朗讀一次時間。

按鈕控制鬧鐘積木

到這邊已經把「鬧鐘」、「朗讀」、「貪睡」、「開關」四個流程全部完成,最後一步就是回到開發板,在最後面加入 time 和 btn,這樣在開發板上線的時候,才會啟動這兩個流程。

啟動流程積木

填入裝置 Device ID,確認開發板上線,輸入鬧鐘時間、貪睡時間等資訊,點選右上方紅色按鈕執行,具備貪睡和語音報時的鬧鐘就開始運作了。

解答:https://goo.gl/pWLn5m

相關參考