2016/05/20

Arduino練習:打字小遊戲,使用矩陣鍵盤和文字型LCD

這一篇講的很簡略,沒有詳細介紹。

成品是個打字小遊戲,LCD會不斷出現1、2、3、*、#、A、B等字元,玩家要按下矩陣鍵盤相對應的鍵,才能消掉,消得越快,分數越高。有點類似遊樂場裡的打鱷魚(或打地鼠)。

所需零件:

  • Arduino Uno板。
  • I2C介面文字型LCD,相容Hitachi HD44780,之後將使用Arduino內建程式庫LiquidCrystal。
  • 4x4矩陣鍵盤。
  • 5V蜂鳴器或小喇叭(0.5W、8Ω)。
LCD正面照。
LCD背面照,I2C介面的針腳在右上方,旁邊有個微型可變電阻,作用是調整對比。
4x4矩陣鍵盤,雖有9針,但其實只8針有用。
電路圖如下,另可下載,注意,我的板子是Uno。
LCD的SDA接到Arduino的A4(SDA)。
LCD的SCL接到Arduino的A5(SCL)。
LCD的GND,接地。
LCD的GCC,接5V。

蜂鳴器(長腳)或小喇叭(紅線),接到Arduino的5。
蜂鳴器(短腳)或小喇叭(黑線),接地。 

4x4矩陣鍵盤,針腳從左到右(共8針、最後一針無用)、接到Arduino的13~6(8個腳位)。

然後是草稿碼,需要兩套程式庫,KeypadLiquidCrystal_I2C。若直接從Arduino IDE的程式庫管理員安裝LiquidCrystal_I2C,LCD只會出現方塊,不知為何,所以我從網路上找了一套可正常運作的。

遊玩時,LCD上一列會不斷出現字元,玩家要按鍵盤消去;下一列有倒數時間,以及分數,消得越快,分數越高。
你能得幾分呢?

12 comments:

  1. 我試過了可是程式碼編譯就不通過了

    ReplyDelete
    Replies
    1. 嗯,有問題,就想辦法解決囉。

      Delete
  2. 請問LCD一定要在後面焊上 LCM1602 IIC V1 控制板嗎?

    ReplyDelete
    Replies
    1. 非必要。
      一般LCD,要接比較多的線路,請參考
      http://yehnan.blogspot.tw/2012/02/arduinoliquidcrystallcdhitachi-hd44780.html

      Delete
    2. 那用MEGA 2560的板子應該也可以對吧
      還是說需要注意甚麼地方?

      Delete
    3. yes.

      做了才知道。

      Delete
    4. 發現LCD上面只會顯示方塊,有自己安裝新的兩套程式庫
      請問是甚麼問題啊

      Delete
    5. 線路接錯。
      程式碼的初始化LCD的部分錯了。
      對比沒調好。

      Delete
    6. 程式碼的部分我是先直接複製您的程式想先確認是否可以動作
      發現我I2C控制板的位址是0x3F 我也將位址改為0x3F了
      線路的部分也是造老師您的電路圖接
      程式庫的部分也有上網找並下載
      還是沒有正確顯示

      Delete
    7. 你都這麼說了,我也不知道問題在哪。
      換換程式庫試試看吧。

      Delete
  3. 一直出現error: ../Wire/Wire.h: No such file or directory
    #include <../Wire/Wire.h>
    compilation terminated.
    exit status 1
    開發板 Arduino/Genuino Uno 編譯錯誤。
    改成 #include 也一樣無法解決
    沒有改期他程式編碼

    ReplyDelete
    Replies
    1. 改成 #include 小於Wire.h大於

      Delete