Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
unsigned char screen_buffer [8];
// ...
for (char i=0; i<8; i++)
{
PORTB = (1 << i); // включили столбец i
PORTC = screen_buffer [i]; // зажгли нужные пиксели столбца
delay ();
}
screen_buffer [0] = 0x1F; // 00011111
screen_buffer [0] = 0x3F; // 00111111
screen_buffer [0] = 0x6C; // 01101100
screen_buffer [0] = 0xCC; // 11001100
screen_buffer [0] = 0xCC; // 11001100
screen_buffer [0] = 0x6C; // 01101100
screen_buffer [0] = 0x3F; // 00111111
screen_buffer [0] = 0x1F; // 00011111
void shift (unsigned char &screen_buffer)
{
for (char i=0; i<7; i++)
{
screen_buffer [i] = screen_buffer [i+1];
}
screen_buffer [7] = 0x00;
}
unsigned char screen_buffer [256];
unsigned int position, endpos, column;
// здесь забиваем в screen_buffer всю строку
for (position = 0; position < 256; position++) // сдвиг окна
{
endpos = position + 8; // определяем правую границу окна
// вывод столбцов,
// попавших в окно
for (column=position; column<endpos; column++)
{
delay (1);
if (column > 255) continue; // проверка границ
PORTB = (1 << column); // включили столбец
PORTC = screen_buffer [column]; // зажгли нужные пиксели столбца
}
delay (1000);
}
«Бегущая строка» — динамическая индикация на примере светодиодной матрицы RL-M2388 и Arduino Mega