динамическая индикация

вот как то решился освоить динамическую индикацию
хммм до сих пор делаю
не хочет работать как я хочу и все тут
уже мозг болит да и в последнее время некогда
может кто подскажет))))
и так:
есть
светодиодная матрица DM3-8813GU-DA01 (8х8)
PinBoard
что хочется сделать:
а хочется что бы один пиксель матрицы
начиная своё движение от одного края
долетал до другого так сказать отлетал от неё
и летел под углом обратно (аля мячик)
хыыы пока получилось тока вот это

а вот сам проект narod.ru/disk/9467291001/led.zip.html
хыы ток сильно не ржите я в этом деле еще новичек

вот доделал хыы прикольно получилось
огромное спасибо Kitaro за код по больше бы таких людей

сама матрица DM3-8813GU-DA01 (8х8)

это аля макетка самопал)))))

так это все выглядит в сборе

а так это все работает блин радости нет придела
еще раз спасибо Kitaro
  • +3
  • 06 апреля 2011, 19:48
  • oss

Комментарии (15)

RSS свернуть / развернуть
НУ как бы динамическая индикация у тебя сделана, тут вопрос уже несколько в другом… Чё то бошка не особо варит предложить что то конкретное щас, но вообще надо наверное угол смотреть падения и оражения, расчитывать на какую точку смещаться дальше сравнивая с определённым углом… А если по 45 брать, так там просто… в зависимости от направления делаешь координаты x+-1 и y+- во время движения, а при отражении, рассмотриваем какая стена и куда летит…
0
у меня короче как не работает
вот он летит себе летит а потом ему как крышу снесет он начинает лететь обратно как будто была стена хотя он на середине
вот и не пойму че он так делает
0
Когда я делал сквош на Turbo Pascal 7, то алгоритм был таков:
Двигаем шарик в бесконечном цикле так (псевдокод):
X = X+Kx;
Y = Y+Ky;

Отскок от стен:
if X==Xmax
Kx=-Kx;

if X==Xmin
Kx=Abs(Kx);

if Y==Ymax
Ky=-Ky;

if Y==Ymin
Ky=Abs(Ky);
0
Ymax = Xmax = 8
0
тоже спасибо
но я не селен в турбо паскале
0
Главное алгоритм, из кода он понятен.
0
Сам еще чайник, но на асме, в лоб вышло так
переменные
Digit: .byte 4
XD: .byte 1
YD: .byte 1
Flag: .byte 1

Начальные значения
LDI Temp,2
STS XD,Temp
STS YD,Temp
LDI Temp,0b00000010
STS Flag,Temp
процедуру Display заменить на такое
LDS Temp,Flag
LDS Temp1,XD

SBRC Temp,1
INC Temp1
SBRS Temp,1
DEC Temp1
CPI Temp1,7
BRNE M1
ANDI Temp,0b11111101
M1:
CPI Temp1,0
BRNE M2
ORI Temp, 0b00000010
M2:
STS XD,Temp1
STS Flag,Temp

LDS Temp,Flag
LDS Temp1,YD

SBRC Temp,0
INC Temp1
SBRS Temp,0
DEC Temp1
CPI Temp1,7
BRNE M3
ANDI Temp,0b11111110
M3:
CPI Temp1,0
BRNE M4
ORI Temp, 0b00000001
M4:
STS YD,Temp1
STS Flag,Temp

LDS Temp1,XD
LDI Temp,0b00000001
M5:
CPI Temp1,0
BREQ M6
LSL Temp
DEC Temp1
JMP M5

M6: COM Temp
OUT PortA,Temp

LDS Temp1,YD
LDI Temp,0b00000001
M8:
CPI Temp1,0
BREQ M9
LSL Temp
DEC Temp1
JMP M8

M9:
OUT PortB,Temp

rcall Delay1
, в протеусе работает :)
0
Забыл каментить, поток сознания :)
что оно делает, сначала по флагам проверяет и изменяет значения Х, У, если достигли границы — меняет флаги +/- для Х и У соотв
потом формирует сигнал управления на порты, сходу ничего лучше, чем сдвигать «1» на кол-во Х и У не придумалось.
Сигнал на одном из портов инвертируем (зависит от индикатора и подключения, на одном порту бегает 0, на другом 1)
Какнибудь так :)
0
А редактировать свои посты можно ?? ;)
вот ссылка на переделаный проект и файл протеуса
0
блин, вот ссылка
0
Оно меня любит :)http://194.187.50.224/led.rar
тегом ссылка не получилось, попробуем в тупую :)
0
О_о как быстро спасибо большое
я уже вторую неделю голову ломаю
щас пока некогда на железе проверить
но как будет время проверю и дополню блог
тк я думаю я не один такой и многим бы было интересно
спасибо еще раз
0
Ссылка делается тегом <a href="link">Desc</a>.
Вот про Desc часто забывают, в результате ссылка есть, но кликать не на что.
0
А смысл тогда в кнопке — вставить ссылку ??
оно вроде как сразу предлагает вставить адрес :)
0
Она превращает в ссылку выделенный текст. Собственно, все кнопки с выделенным текстом и работают.
Еще можно просто ссылку написать, она автоматом распознается:
194.187.50.224/led.rar
У тебя не распозналась из-за того, что http слиплось с смайликом.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.