← 專案持續維護2021–2022科技

掌上遊戲機・LED 點矩陣

8×8 貪食蛇

一片自己畫的電路板,插上 ESP32、8×8 LED 點矩陣和搖桿,就是一台掌上貪食蛇。旋鈕調速度,蛇吃到食物會變長,撞到自己就結束。

8×8 貪食蛇
  • 64 顆8×8 LED 點矩陣
  • 3 條線MAX7219 晶片只用 3 隻腳就能控制 64 顆 LED
  • 10~1000每走一格的毫秒數,旋鈕決定
  • 1 片自己設計的電路板

裡面有什麼

64 顆 LED
只要 3 條線

完成的貪食蛇:上面是 8×8 點矩陣,下面是搖桿
完成的貪食蛇:上面是 8×8 點矩陣,下面是搖桿
  • MAX7219專門驅動 LED 點矩陣的晶片。ESP32 只要用三條線(資料、時脈、選擇)把 64 顆 LED 的狀態送過去,掃描與亮度都交給它。
  • 搖桿兩個可變電阻,ESP32 讀它們的電壓,就知道往哪個方向推。
  • 旋鈕再一個可變電阻,用來調蛇的速度。

玩一下

轉旋鈕
蛇的速度怎麼變

按「開始」,用方向鍵或畫面上的按鈕控制方向。玩之前先轉轉看旋鈕,看每走一格要幾毫秒。

長度 3 最長 3

速度跟旋鈕不是直線關係:程式把旋鈕的比例取 3.5 次方,再換成 10~1000 毫秒。旋鈕轉到一半,蛇還是很快;最後一小段才突然變慢。

規則與速度照板子上的程式:起始長度 3、上下左右相通、撞到自己就結束、長到 64 格就贏。速度=10+990 ×(旋鈕比例)的 3.5 次方,單位是毫秒。

自己畫電路板

把麵包板上的線
變成一片板子

在麵包板上接線容易鬆脫,拿起來玩一下就斷。所以用 KiCad 把電路畫成一片電路板:ESP32 開發板插在中間,點矩陣模組、搖桿、蜂鳴器各有固定的位置,正反兩面的銅線把它們接起來。

設計檔存了三個版本。做好的成品,點矩陣模組和搖桿直接插在電路板上,接上電池就能玩。

  • 旋鈕轉一半,速度只到一半嗎? 不是。速度跟旋鈕比例的 3.5 次方有關:轉到一半,每格大約 97 毫秒,還是很快;剩下的一半旋鈕,才從 97 毫秒一路變慢到 1000 毫秒。
從設計檔畫出的電路板正面:ESP32、點矩陣模組、搖桿、蜂鳴器的位置
從設計檔畫出的電路板正面:ESP32、點矩陣模組、搖桿、蜂鳴器的位置

做一台貪食蛇會學到

從電路到程式

  • 串列傳輸。三條線就能控制 64 顆 LED,資料一個位元一個位元地送。
  • 類比讀值。搖桿與旋鈕都是可變電阻,ESP32 讀到 0 到 4095 的數字。
  • 電路板設計。零件的位置、走線、正反兩面,畫到可以打樣。
  • 改寫別人的程式。看懂公開的範例,改成自己板子的腳位。
  • 遊戲邏輯。蛇的身體怎麼記錄、怎麼判斷撞到自己。

相簿

成品與電路板

  • 完成的貪食蛇

  • 正反兩面的走線:橘色在正面、藍色在背面