Светодиодная змейка
Светодиодная змейка
Доброго времени суток! Требуется помощь в реализации змейки, не знаю в каком направлении двигаться. Есть матрица из светодиодов 4х8 нужно чтоб по её периметру зажигались светодиоды. Как бы бегающая змейка по периметру. Надеюсь на помощь!

- Вложения
-
- 8R6Haw2FkUc.jpg
- (66.35 КБ) 592 скачивания
- Реклама
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Светодиодная змейка
Какой конкретно помощи ожидаете от форумчан ?
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Светодиодная змейка
В лоб: составляете таблицу из "кадров" и по таймеру выводите.
Не в лоб: конечный автомат, массив состояния всех светодиодов, задаёте начальное состояние, сдвиг, пока не дойдёт, задаёте следующее состояние, опять сдвиг.
На каком языке пишете программы?
Не в лоб: конечный автомат, массив состояния всех светодиодов, задаёте начальное состояние, сдвиг, пока не дойдёт, задаёте следующее состояние, опять сдвиг.
На каком языке пишете программы?
Re: Светодиодная змейка
Пишу на AVR Си. Немножко не понял про конечный автомат. Вот допустим пошла змейка по первому порту 0х00000111, 0х000001110, 0х00011100 ... 0х11100000 вот она дошла до низу дальше должна по сути повернуть вправо, как видно по таблице требуется задействовать сразу несколько портов а не один. В дальнейшем нужно будет ещё кнопки приделать , одна кнопка ускоряет другая замедляет третья меняет направление.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18637
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Светодиодная змейка
абстрагируйтесь от байтов, представьте себе ваш "экранчик", как двумерный массив точек.
напишите функцию, которая этот двумерный массив выведет на реальные порты/светодиоды (вот в ней надо будет мозговать с битами и портами).
также создайте функцию, которая рисует точку в этом массиве (в ней тоже придется с битами и байтами мудрить, для 32 точек можно и без битов, только байтами обойтись).
а потом работайте только с массивом при помощи этой функции: нарисовали в массиве змейку по точкам в массиве - вызвали функцию вывода - проанализировали кнопки - рассчитали новое положение змейки - нарисовали змейку по точкам в массиве... и так все время
автомат тут не первостепенное
напишите функцию, которая этот двумерный массив выведет на реальные порты/светодиоды (вот в ней надо будет мозговать с битами и портами).
также создайте функцию, которая рисует точку в этом массиве (в ней тоже придется с битами и байтами мудрить, для 32 точек можно и без битов, только байтами обойтись).
а потом работайте только с массивом при помощи этой функции: нарисовали в массиве змейку по точкам в массиве - вызвали функцию вывода - проанализировали кнопки - рассчитали новое положение змейки - нарисовали змейку по точкам в массиве... и так все время
автомат тут не первостепенное
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Светодиодная змейка
Делаете класс ТОЧКА с координатами X,Y и методом Зажечь/Потушить.
Делаете связный список из объектов класса ТОЧКА.
При добавлении элемента в список вызываете метод Зажечь.
Движение заключается в том, что последний элемент списка переносится из хвоста в голову. При этом сначала вызывается метод потушить, а потом задаются новые координаты и метод Зажечь. Новые координаты при перемещении вычисляются из координат первого элемента списка и нажатой кнопки.
Всё
Делаете связный список из объектов класса ТОЧКА.
При добавлении элемента в список вызываете метод Зажечь.
Движение заключается в том, что последний элемент списка переносится из хвоста в голову. При этом сначала вызывается метод потушить, а потом задаются новые координаты и метод Зажечь. Новые координаты при перемещении вычисляются из координат первого элемента списка и нажатой кнопки.
Всё
Re: Светодиодная змейка
[uquote="VladislavS",url="/forum/viewtopic.php?p=3422144#p3422144"]Делаете связный список из объектов класса ТОЧКА.[/uquote]
Зачем там связный список, достаточно кольцевого буфера, а для змейки бегающей по периметру хватит и обычного массива во флеше.
Зачем там связный список, достаточно кольцевого буфера, а для змейки бегающей по периметру хватит и обычного массива во флеше.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18637
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Светодиодная змейка
Да и на счёт кольцевого буфера сомнения... Достаточно знать координаты двух точек: начала и конца.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Светодиодная змейка
Это сегодня змейка по периметру бегает, а завтра начнутся зигзаги и изменения длины. Лучше изначально сделать "на вырост". Каждый начинающий программист просто обязан написать свой связный список с шашками и стюардессами. Что, уже и постебаться нельзя? 
Re: Светодиодная змейка
Методы, классы...
Буфер матрицы точек и добавляем алгоритм перемещения.
Хоть "покадрово".
(правда то на ассемблере
)

Буфер матрицы точек и добавляем алгоритм перемещения.
Хоть "покадрово".
(правда то на ассемблере
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18637
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Светодиодная змейка
если взять какой-нибудь AVR или PIC, то со связным списком будут проблемы: там и простой массив не всякий влезает.VladislavS писал(а):Каждый начинающий программист просто обязан написать свой связный список с шашками и стюардессами.
кстати, змейку я так и не сделал ни разу в своей жизни... тряхнуть, что ли, стариной?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


