Snake game trên Arduino

Đây là dự án trên arduino đầu tiên của mình. Mục đích chính là dùng arduino để điều khiển hiển thị trên LED ma trận. Phần code game mình lấy từ game snake trên board Stellaris mình viết trước đó trên phòng lab của trường.

Mua sắm

  • Arduino Uno
  • 1 x 8×8 LED matrix
  • 2 x 74HC595 shift registers
  • 8 x B562 PNP transistors (PNP loại khác cũng được)
  • 4 x pushbuttons
  • 8 x 330 resistors
  • 8 x 1k resistors
  • 8 x 10k resistors
  • và một đống dây

Schematics:

Việc cần làm đầu tiên là xác định các chân điều khiển hàng và cột của LED matrix. Các bạn có thể tra datasheet hoặc thử nối trực tiếp một vài chân với nguồn và suy luận ra sơ đồ chân của matrix.

 

 

Sơ đồ mạch khá đơn giản. Con 74HC595 đầu tiên dùng nối với transitor PNP và điều khiển hàng của LED matrix. Việc nối với PNP giúp đảm bảo cung cấp đủ dòng cho LED matrix. Con 74HC595 còn lại làm nhiệm vụ điều khiển các cột.

Còn lại là 4 nút bấm, ta nối với pin 3-6 của Arduino.

Tụi nó hoạt động như thế nào?

  • LED ma trận có 8 chân điều khiển cột và 8 chân điều khiển hàng, tổng cộng là 16 chân, nếu như cắm toàn bộ lên arduino thì sẽ không đủ. Bởi vậy, ta dùng 2 thanh ghi dịch 74HC595 để điều khiển 16 chân này (1 để điểu khiển cột và 1 để điều khiển hàng). Với 2 thanh ghi dịch 74HC595, ta chỉ cần dùng 3 chân trên arduino để gửi tín hiệu ra các chân LED, quá là tiết kiệm, ích nước lợi nhà.
  • Để gửi tín hiệu từ arduino sang 2 iC 74HC595, mình dùng 2 hàm phía bên dưới.

  • Để hiểu nhiều hơn về cơ chế quét LED, các bạn có thể xem bài viết này: <link>

Arduino sketch

https://github.com/haiphamngoc/arduinoSnakeGame

Kết quả: