Светодиодная змейка

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 2
Зарегистрирован: Ср июл 18, 2018 20:20:49

Сообщение DONit »

Доброго времени суток! Требуется помощь в реализации змейки, не знаю в каком направлении двигаться. Есть матрица из светодиодов 4х8 нужно чтоб по её периметру зажигались светодиоды. Как бы бегающая змейка по периметру. Надеюсь на помощь! :roll: :?
Вложения
8R6Haw2FkUc.jpg
(66.35 КБ) 594 скачивания
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Какой конкретно помощи ожидаете от форумчан ?
Реклама
Это не хвост, это антенна
Сообщения: 1492
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

В лоб: составляете таблицу из "кадров" и по таймеру выводите.
Не в лоб: конечный автомат, массив состояния всех светодиодов, задаёте начальное состояние, сдвиг, пока не дойдёт, задаёте следующее состояние, опять сдвиг.
На каком языке пишете программы?
Контактная информация:
Родился
Сообщения: 2
Зарегистрирован: Ср июл 18, 2018 20:20:49

Сообщение DONit »

Пишу на AVR Си. Немножко не понял про конечный автомат. Вот допустим пошла змейка по первому порту 0х00000111, 0х000001110, 0х00011100 ... 0х11100000 вот она дошла до низу дальше должна по сути повернуть вправо, как видно по таблице требуется задействовать сразу несколько портов а не один. В дальнейшем нужно будет ещё кнопки приделать , одна кнопка ускоряет другая замедляет третья меняет направление.
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

абстрагируйтесь от байтов, представьте себе ваш "экранчик", как двумерный массив точек.
напишите функцию, которая этот двумерный массив выведет на реальные порты/светодиоды (вот в ней надо будет мозговать с битами и портами).
также создайте функцию, которая рисует точку в этом массиве (в ней тоже придется с битами и байтами мудрить, для 32 точек можно и без битов, только байтами обойтись).
а потом работайте только с массивом при помощи этой функции: нарисовали в массиве змейку по точкам в массиве - вызвали функцию вывода - проанализировали кнопки - рассчитали новое положение змейки - нарисовали змейку по точкам в массиве... и так все время

автомат тут не первостепенное
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Делаете класс ТОЧКА с координатами X,Y и методом Зажечь/Потушить.

Делаете связный список из объектов класса ТОЧКА.

При добавлении элемента в список вызываете метод Зажечь.

Движение заключается в том, что последний элемент списка переносится из хвоста в голову. При этом сначала вызывается метод потушить, а потом задаются новые координаты и метод Зажечь. Новые координаты при перемещении вычисляются из координат первого элемента списка и нажатой кнопки.

Всё :)
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3422144#p3422144"]Делаете связный список из объектов класса ТОЧКА.[/uquote]
Зачем там связный список, достаточно кольцевого буфера, а для змейки бегающей по периметру хватит и обычного массива во флеше.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Да и на счёт кольцевого буфера сомнения... Достаточно знать координаты двух точек: начала и конца.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Это сегодня змейка по периметру бегает, а завтра начнутся зигзаги и изменения длины. Лучше изначально сделать "на вырост". Каждый начинающий программист просто обязан написать свой связный список с шашками и стюардессами. Что, уже и постебаться нельзя? :)
Друг Кота
Аватара пользователя
Сообщения: 15751
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Методы, классы...
Буфер матрицы точек и добавляем алгоритм перемещения.
Хоть "покадрово".
(правда то на ассемблере :wink: )
8)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

VladislavS писал(а):Каждый начинающий программист просто обязан написать свой связный список с шашками и стюардессами.
если взять какой-нибудь AVR или PIC, то со связным списком будут проблемы: там и простой массив не всякий влезает.
кстати, змейку я так и не сделал ни разу в своей жизни... тряхнуть, что ли, стариной? :tea:
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

Вернуться в «AVR»