第二章 LCD液晶顯示屏&聲控裝置&播放音樂&遙控器
這節我將帶大家了解亮寧機器人編程的基礎部分。
LCD液晶顯示屏
LCD液晶顯示屏是在實現某種功能和調試中不可缺少的部分,接下來我帶大家學習,如何使用LCD液晶顯示屏。
首先我們把LCD液晶顯示屏插入主板的指定接口,然後接上數據線,打開Arduino輸入以下程序。
代碼:1-1 lcd液晶顯示器
#include <LNDZ.h> lc lcd; //聲明一個lcd設備 void init() { lcd.begin(16, 2);//告訴電腦當前顯示器是一行16個字符,2行的規格 lcd.bg(1); //開啟背光,0則是關閉背光 } void repeat() { lcd.clear();//清屏 lcd.print("Welcome to LCD");//輸出內容 delay(200);//防止閃屏 }
上傳程序成功後,你會在機器人的LCD液晶顯示器上看到"Welcome to LCD"字樣。在這裏先和大家講一下亮寧機器人程序的結構,首先#include<LNDZ.h>是亮寧機器人的標準庫,機器會從void init()開始執行程序,執行完後就開始執行void repeat()裏面的程序,你可以把這個函數理解為while(1){...}。這就是亮寧機器人程序的基本結構。
聲控裝置
大家應該都看過樓梯間的聲控開關吧,那聲控開關到底是采用什麽樣的原理,下面我來帶領大家探究一下。
首先我們還是電腦接上數據線並打開Arduino輸入以下程序:
代碼:1-2 聲控裝置
#include <LNDZ.h> lc lcd; void init() { lcd.begin(16, 2); lcd.bg(1); } void repeat() { int d=sound();//獲取聲音的值 lcd.clear(); lcd.print(d); delay(200); }
在上傳程序成功後你可以看到LCD液晶顯示器上會出現一個數字,你試著在主板旁邊擊掌,顯示器上的數值會隨著你擊掌的聲音越大而越小,所以你可以通過值來判斷當前的聲音大小。
播放音樂
還記得第零章的警報程序嗎!仔細研究的同學會發現,機器人發聲是因為“beep()”起到的作用。因為“beep(300)”,這個函數的意思是鳴叫300ms;然後“delay(200)”,這個函數的意思是延遲200ms,也就是暫停機器發出聲音200ms。你會覺得這個聲音很單調乏味,所以下面我來帶領大家學習一下亮寧機器人怎麽實現音樂的播放。首先我們一起來了解下機器人發聲函數的基本用法。
#include <LNDZ.h> void init() { B_start(); tone(11,2); //括號第一個參數為音符,第二個參數表示停留時間 參數*100ms tone(11,2);//11~17表示低音的1~7 tone(21,2); //21~27表示中音的1~7 tone(31,2); //31~37表示高音的1~7 }
在學習完發聲函數的基本用法後,我們再來用亮寧機器人彈一首《兩只老虎》吧!可能有的人會想說,哇就彈《兩只老虎》的音樂,音符程序就要寫這麽多,要是更大的曲子該怎麽辦呀!現在該發揮你的聰明才智的時候了,下面請看以下的程序代碼。
代碼:1-3 兩只老虎音樂
#include <LNDZ.h> #define YIN 20 double t[32][2] = { {1, 3}, {2, 3}, {3, 3}, {1, 3}, {1, 3}, {2, 3}, {3, 3}, {1, 3}, {3, 3}, {4, 3}, {5, 6}, {3, 3}, {4, 3}, {5, 6}, {5, 1.5}, {6, 1.5}, {5, 1.5}, {4, 1.5}, {3, 3}, {1, 3}, {5, 1.5}, {6, 1.5}, {5, 1.5}, {4, 1.5}, {3, 3}, {1, 3}, {1, 3}, {-5, 3}, {1, 6}, {1, 3}, {-5, 3}, {1, 6} }; void init() { B_start(); for (int i = 0; i < 32; ++i) t[i][0] = t[i][0] + 20; } void repeat() { for (int i = 0; i < 32; ++i){ tone((int)t[i][0], t[i][1]);//音符,停留時間*100 } }
這樣寫是不是代碼量要小很多了!所以程序不要盲目地編寫,在寫之前要想想怎麽“偷懶”哦!
上傳完程序,按下開始按鈕。你就會聽見機器播放《兩只老虎》了,是不是很棒。你也可以嘗試一下其他音樂。
遙控器
#include <LNDZ.h> ir ykq;//聲明遙控器 der jst;//聲明接收器 void init() { ykq.start(); B_start(); } void repeat() { if (ykq.decode(&jst)) { //機器收到遙控信號 switch (jst.value) //判斷按下哪個鍵 { case one: { beep(500); } break; case two: { tone(17, 10); } break; case three: { tone(37, 10); } break; default: break; } ykq.next(); } }
程序上傳完畢後,用遙控分別按下1,2,3鍵後,機器會發出不同的聲音。通過觀察和實驗代碼,大家應該對遙控器程序的基本使用方法有了一定的了解。不過一定要註意的是:這一段程序一定要放在repeat()裏面,因為機器要不停的檢測遙控所發出的信號。如果要查找其他的按鍵名,大家可以打開“亮寧機器人可視化編程系統”查找裏面的具體圖文模塊說明,在可視化編界面裏面會告訴你怎麽用。
第二章 LCD液晶顯示屏&聲控裝置&播放音樂&遙控器