1. 程式人生 > >第二章 LCD液晶顯示屏&聲控裝置&播放音樂&遙控器

第二章 LCD液晶顯示屏&聲控裝置&播放音樂&遙控器

sound 下機 當前 default 代碼 pre 顯示器 結構 star

這節我將帶大家了解亮寧機器人編程的基礎部分。

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液晶顯示屏&聲控裝置&播放音樂&遙控器