Игра Snake LED Matrix
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Приложения и онлайн-сервисы
|
Об этом проекте
Я сделал классную игровую консоль из Meccanoid и Erector, установленной в качестве каркаса, и использовал Сергея Ройза . кода (ПРОВЕРИТЬ), и я добавил в него дополнительные материалы и увеличил скорость, чтобы он двигался плавно. Я не буду объяснять, как сделать каркас, но рекомендую вам сделать его самостоятельно. Но вам нужна рама. Получайте удовольствие от этого, делайте то, что хотите. НАДЕЮСЬ, ЧТО ВАМ НРАВИТСЯ ЭТО ПРОЕКТ! Прокомментируйте, если у вас есть вопрос, и я надеюсь, что смогу ответить на него как можно скорее, и если у вас есть какие-либо рекомендации для моего следующего проекта, прокомментируйте и сообщите мне. Также мой фритзинг не работал, поэтому я просто скажу вам:
Схема:
Присоедините экран к Arduino Uno, чтобы у вас было больше розеток GND и 5 В без использования макета.
Матрица:
- От VCC до 5 В Arduino
- GND к GND Arduino
- DIN к цифровому выводу 10 на Arduino
- CS к цифровому выводу 9 на Arduino
- CLK к цифровому контакту 8 на Arduino
Джойстик:
- Вывод Gnd на Gnd на Arduino
- + 5–5 В на Arduino
- VRX в A0 на Arduino
- VRY в A1 на Arduino
- SW на цифровой контакт 2
Код
- Змея
Змейка C / C ++
Все, что вам нужно сделать, это скопировать и вставить код/ ** * Snake * Реализация классической игры Snake *, в которой змея постоянно перемещается, а игрок * должен избегать пересечений с самим собой и границами. * Когда змея ест пищу, она немного увеличивается и ускоряется. * * 23 июня 2016 г. * Авторы:Сергей Ройз и Хантер Баззелл * / # include/ * ПИН-коды джойстика * / # определить VRX A0 # определить VRY A1 # определить SW 2 / * Показать PIN-коды * / # определить CLK 8 # define CS 9 # define DIN 10 # define SIZE 8 # define ADVANCE_DELAY 20int snake [SIZE * SIZE] [2]; int length; int food [2], v [2]; bool is_game_over =false; long current_time; long prev_advance; int blink_count; const короткое сообщениеSpeed =5; LedControl lc =LedControl (DIN, CLK, CS, 1); void init_game () {prev_advance =current_time =0; blink_count =3; int half =РАЗМЕР / 2; длина =РАЗМЕР / 3; для (int я =0; я <длина; я ++) {змея [я] [0] =половина - 1; змея [i] [1] =половина + i; } еда [0] =половина + 1; еда [1] =половина - 1; v [0] =0; v [1] =-1;} void render () {for (int i =0; i =РАЗМЕР) {задержка (1000); showGameOverMessage (); вернуть истину; } если (голова [1] <0 || голова [1]> =РАЗМЕР) {задержка (1000); showGameOverMessage (); вернуть истину; } for (int i =0; i =0; i--) {snake [i + 1] [0] =snake [i] [0]; змея [i + 1] [1] =змея [i] [1]; } змея [0] [0] + =v [0]; змея [0] [1] + =v [1]; return false;} void setup () {pinMode (SW, INPUT_PULLUP); pinMode (VRX, ВХОД); pinMode (ВРИ, ВХОД); attachInterrupt (digitalPinToInterrupt (SW), перезапуск, RISING); lc.shutdown (0, ложь); lc.setIntensity (0, 8); init_game (); render ();} void loop () {если (! is_game_over) {clearScreen (); оказывать(); if (current_time - prev_advance> ADVANCE_DELAY) {is_game_over =advance (); prev_advance =current_time; }} еще {в то время как (blink_count> 0) {clearScreen (); задержка (300); оказывать(); задержка (300); blink_count--; }} readControls (); current_time ++;} аннулировать перезапуск () {init_game (); is_game_over =false;} void readControls () {int dx =map (analogRead (VRX), 0, 906, 2, -2); int dy =map (analogRead (VRY), 0, 906, -2, 2); if (dx! =0) {dx =dx / abs (dx);} if (dy! =0) {dy =dy / abs (dy);} if (dy! =0 &&v [0]! =0 ) {v [0] =0; v [1] =dy; } если (dx! =0 &&v [1]! =0) {v [0] =dx; v [1] =0; }} const PROGMEM bool gameOverMessage [8] [90] ={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 , 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 , 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 , 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0 , 0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0 , 0,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0 , 1,1,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0 , 1,1,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,1,1,0,0,1 , 1,0,0,1,1,0,0,1,1,0,0,1,1,1,0,1,1,1,0,0,1,1,0,0,0 , 0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1 , 0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0 , 0}, {0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,1,1,0 , 0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0 , 0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,0,0 , 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0 , 1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,0,1,0,1,1,0,0 , 1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1 , 1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,1,1,0,0,0 , 0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,1,1 , 0,0,1,1,0, 0,1,1,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0, 0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,1,1, 0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0, 1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,0, 1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,1,1,1,1, 0,0,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1, 0,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,1,1,1,0,0,0,0, 0,0,0,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,0, 0,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0}}; void showGameOverMessage () {for (int d =0; d
Производственный процесс
- Игровой контроллер Arduino
- Игра Arduino Pong на матрице 24x16 с MAX7219
- Игра Arduino Nano Tetris на самодельной матрице 16x8
- Arduino с Bluetooth для управления светодиодом!
- Светодиодная матрица + датчик движения дверной дисплей [Arduino Holiday]
- Четвероногий Arduino
- Игра Pixel Chaser
- Перекидные часы Arduino с одной светодиодной матрицей
- Цветовой микшер Arduino RGB
- Управление светодиодной матрицей с помощью Arduino Uno