роботы робототехника микроконтроллеры


 Страниц (11): В начало « ... 3 4 5 6 [7] 8 9 10 11 »   

> Без описания
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



Окей)) Буду по 1му перепаивать, может найду засранца
(Добавление)
Цитата:
У вас такой опыт большой чтобы из головы без схемы паять?

Ну как бы схема не сложная, припаял детали, открыл датащиты, и уже припаивал, что куда.
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



а в Игле поюзать для красоты разводки? Улыбка
Одного засранца я нашел в темной комнате. Бросил китайский фонарик чинить, выключил свет, пошел курить, стемнело быстро. Возвращаюсь- вот он, светится голубиньким. Они у меня белые были, видать не все переходы сгорели.
Если зрение хорошее- попробуйте визуально, контактики внутри сгоревшего отличались от других по цвету.
Ну и конечно это все при условии что лед сгорел, а не что еще. Замешательство
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



Можете плз подсказать, как реализовать передачу данных из двумерного массива в сдвиговый регистр. к примеру массив 4х4.
А то что то пока в голову ничего не идет =(((
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



skyburn, а схему нарисуйте Улыбка
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



Все)) Спасибо)) Сегодня когда засыпал, понятно, что из головы не шли алгоритмы, я еще раз хорошо подумал, прикинул все, и сообразил вот это
CODE:
#include <tiny2313.h>
#include <delay.h>
unsigned char ram[4][4]={ //мой массив с изображением.
{1,0,1,0},
{0,1,0,1},
{1,0,1,0},
{0,1,0,1}};
unsigned char min[4][4]={ //массив для последовательной подачи отрицательного контакта
{1,1,1,0},
{1,1,0,1},
{1,0,1,1},
{0,1,1,1}};
int a,b;

main()
{
DDRB=0xff;

for(;;)
{for(a=0;a<4;a++) //что б построить матрицу 4х4 нужно 4 раза заполнить ее 8ю байтами.
{for(b=0;b<4;b++) //первыми нужно затолкать значения отрицательных ног
{PORTB.0=min[a][b];
PORTB.1=0;
PORTB.1=1;
}
for(b=0;b<4;b++) // дальше вывод строки из массива с картинкой
{PORTB.0=ram[a][b];
PORTB.1=0;
PORTB.1=1;
}
PORTB.2=1; // ну и защелкнуть все это и повторить но для другой строки
PORTB.2=0;
}}}
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



Теперь вопрос о анимации. Как это лучше сделать?
 
 Top
Белый Волк Супермодератор Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  



skyburn
Если важно, чтобы устройство было автономным - желательно использовать для каждого светодиода только один бит, а также сделать анимацию программной: вращения геометрических примитивов, движение цифр, букв и т.п.
Если автономность не важна - подключите микроконтроллер через USART к компьютеру и используйте спрайтовую анимацию.
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



ммм не совсем вас понял, в каком смысле использовать для каждого светодиода только один бит?

Мне нужно что б оно было автономным
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



в том смысле что у вас сейчас на один кадр тратится 16 байт, хотя очевидно достаточно двух
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



Можете немного подробней обьяснить, как мне использовать 2 байта вместо 16?
(Добавление)
Для той шахмотной доски, понятно, что можно и в 2 байта уложиться. А если рисунок будет сложным. Я просто может не так вас понял
(Добавление)
Цитата:
а также сделать анимацию программной: вращения геометрических примитивов, движение цифр, букв и т.п.

Не ну понятно)) А как ее еще можно сделать?)
 
 Top
Белый Волк Супермодератор Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  



skyburn
Говоря "программная анимация" я говорил о математических вычислениях и построениях линий, я подчёркивал её отличие от спрайтовой анимации, где каждый кадр сохранён отдельным изображением.

Для матрицы 4х4, как верно заметил cjA, необходимо только 2 байта. В одном байте 8 бит. В двух байтах - 16. К примеру, есть два байта:

0b00010010
0b01001000

Если вывести в первую тетраду первого байта, во вторую строку - вторую, в третью - первую тетраду второго байта, в четвёртую строку - вторую тетраду второго байта, то матрица отобразит:

0001
0010
0100
1000
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



ухх, а не подскажете где по подробнее можно об этом узнать. А то мне многое не понятно. К примеру почему именно 2 байта. И как их загнать в сдвиговый регистр
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



skyburn пишет:
как их загнать в сдвиговый регистр
ну я ведь вам вроде бы давал ссылку на объяснение сдвигового регистра и как он работает?
Или вам программно непонятно, как биты выдвигать?
Можно, кстати, ещё аппаратный SPI поднапрячь - вообще красота будет.
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



оставте 4х4, может потом захочется 10х10
просто держите в голове что у вас уже 8 кадров.
что-то типа
PORTB.0=( ram[a][b] >> номер_кадра);

(не охота думать как это на Си граммотно сделать Замешательство )
 
 Top
Белый Волк Супермодератор Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  



skyburn
Вы знакомы с операциями >> и <<? (на Pascal - shl и shr)
 
 Top
Страниц (11): В начало « ... 3 4 5 6 [7] 8 9 10 11 »
« Делаем роботов »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru