Здравствуйте. С ардуино "общаюсь" совсем недавно,новичек. В просторах интернета нашел статью -"Бегущая строка"на примере светодиодной матрицы и ардуино мега http://habrahabr.ru/post/129569/.
Немного переделав код получил необходимое,однако появился "дребезг" в отображении.Что нужно подправить в коде,чтобы его убрать?Долно читаться слово "Hello" .Спасибо.
01 | const int row[8]={23,25,27,29,31,33,35,37}; |
02 | const int col[8]={39,41,43,45,47,49,51,53}; |
07 | {0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
08 | 0,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0, |
09 | 0,1,1,1,1,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0, |
10 | 0,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,1,0,1,0,0, |
11 | 0,1,0,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,0, |
12 | 0,1,0,0,1,0,1,1,1,0,1,1,1,0,1,1,1,0,0,1,0,0,0, |
13 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
14 | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
19 | for ( int x=0; x<8; x++) |
21 | pinMode(row[x],OUTPUT); |
22 | pinMode(col[x],OUTPUT); |
24 | for ( int x=0; x<8; x++) |
26 | digitalWrite(row[x],HIGH); |
36 | void paint(boolean screen[8][23], int v) |
39 | for ( int c=0; c <v; c ++) |
46 | digitalWrite(row[x], LOW); |
47 | digitalWrite(col[y], HIGH); |
48 | delayMicroseconds(dms); |
49 | digitalWrite(row[x], HIGH); |
50 | digitalWrite(col[y], LOW); |
54 | digitalWrite(row[x], HIGH); |
55 | digitalWrite(col[y], LOW); |
56 | delayMicroseconds(dms); |
57 | digitalWrite(row[x], HIGH); |
58 | digitalWrite(col[y], LOW); |
64 | void scroll(boolean screen[8][23]) |
67 | for ( int x=0; x<8; x++) |
69 | buf[x][0]=screen[x][0]; |
71 | for ( int x=0; x<8; x++) |
72 | for ( int y=0; y<23; y++) |
74 | screen[x][y]=screen[x][y+1]; |
76 | for ( int x=0; x<8; x++) |
78 | screen[x][23-1]=buf[x][0]; |
http://youtu.be/b0Mj7p3GjHA
Один раз уже говорил о таком, но раз уместно, повторюсь. :)
Попробуй заменить digitalWrite на запись в порт. http://tronixstuff.com/2011/10/22/tutorial-arduino-port-manipulation/
Добавлю только, что если нужно писать не все 8 ног сразу, то нужно пользоваться битовыми операциями, чтобы не изменить атрибуты определенных пинов. http://www.arduino.cc/en/Reference/PortManipulation
То есть например, при конфигурации
1
DDRD = B11111110;
// sets Arduino pins 1 to 7 as outputs, pin 0 as input
2
DDRD = DDRD | B11111100;
// this is safer as it sets pins 2 to 7 as outputs
3
// without changing the value of pins 0 & 1, which are RX & TX
При записи (PORTx) и чтении (PINx) то же самое.
Через порты пробывал,зажигаются строки полностью или ряды матрицы.При этом возникает нагрев микроконтроллера ардуины.
Посмотрел мельком, по ссылке на хабр один только код. Чего вы там насоединяли, номиналы и прочее - схему бы знать...
И новый код, конечно.
Только у меня 7х6.Измененный код в первом сообщении в спойлере
Схема это хорошо, а в коде что поменялось? Всё те же digitalWrite. Ну и комментировать код полезно, не только для окружающих, но и для себя.
Что касается функций paint и scroll: во-первых, двумерные массивы по уму передаются каким-то другим способом, во-вторых, переменные и массивы row, col, v, dms, A - типа как глобальные, передавать их как аргументы не надо - функции итак их видят.
Куда "+" на схеме цепляется, на 5v ардуины чтоли? Точно греется контроллер, а не стаб?
Вот к примеру такой код
01
void
setup
()
02
{
03
DDRA = B01111111;
// set PORTA (digital 7~0)
04
// to output
05
DDRB = B00111111;
// PORTB (6~0)
06
}
07
08
byte
a = B00000001;
09
byte
b = B01000000;
10
11
void
krider()
// движение солбца влево
12
{
13
for
(
int
k=0; k<1; k++)
// количество повторов функции
14
{
15
for
(
int
z=0; z<7; z++)
// на сколько столбцов сдвигать
16
{
17
PORTA = a << z;
// сдвиг
18
delay(400);
// пауза между переключением следующего столбца
19
}
20
}
21
}
22
23
void
on()
// функция включения столбца(может быть любой столбец)
24
{
25
{
26
PORTA = b;
// включение 7 столбца
27
}
28
}
29
30
void
loop
()
31
{
32
krider();
33
delay(500);
34
on();
35
delay(500);
36
}
Как я понимаю можно включать только полностью строку и столбцы.Как например букву какую нибудь вывести?
Код ...
1
void
setup
()
2
{
3
DDRA = B01111111;
// set PORTA (digital 7~0)
4
// to output
5
DDRB = B00111111;
// PORTB (6~0)
6
}
... немного напрягает. PORTB - это с 8 до 13, а с 0 до 7 это PORTD, про PORTA вообще не слышал. Какая именно ардуина?
И PORTB конфигурируется, но не используется у вас. :) Таким образом не ясно, какие ноги управляют 315-ми, а какие 361-ми.
Если хочется зажечь светодиод (0;3) например, тогда надо на 315-е надо дать 00000001, а на 361-е дать 11110111 (раз открываются нулём)
ардуина мега2560 - PORTА 0-7(22-29 гнезда), PORTB 0-7 (53,42,51,50,10,11,12,13) соответственно. Без инициализации PORTB нет 0 на 361-ых. Для анодов 22-28 выводы,для катодов 53-50,10 и 11.Как зажечь светодиод это понятно.Не понятно как зажечь несколько светодиодов.К примеру "+"
Так как если дать на 315-ые 0001000, а на 361-ые 00110111 рисунка "+" не получится,а будет светиться только 1 светодиод
Зажечь несколько - поставить несколько единиц (нулей) в соответствующих разрядов регистров портов.
Так как если дать на 315-ые 0001000, а на 361-ые 00110111 рисунка "+" не получится,а будет светиться только 1 светодиод
будут все светодиоды светиться прямоугольниками
на PIC16 в статье со схемы как-то реализуется вращение знака "+"
http://www.radiohlam.ru/program/images/diode_matrix_prg2.gif
Считаю необходимо всетаки использывать массивы вроде
1
boolean [7][6] =
2
{0,0,0,1,0,0,0,
3
0,0,0,1,0,0,0,
4
0,1,1,1,1,1,0,
5
0,0,0,1,0,0,0,
6
0,0,0,1,0,0,0,
7
0,0,0,0,0,0,0}
Ну логично, символы/изображения по другому задавать не ахти развлечение. Надо просто придумывать, как на основе этого массива кидать команды на все ноги сразу.
1
byte
pixelString(){
// "преобразование" строки массива в байт
2
byte
res=0;
//результат
3
int
i;
4
for
(i=0;i<8;i++){
//установка битов в соответствии с данными из массива, скажем так
5
if
(array[i]) res=res|(1<<i);
//если в ячейке глобального массива единица ...
6
}
// побитовое ИЛИ позволяет сохранить без изменения уже установленные единицы
7
return
res;
8
9
}
Пример. Просто демонстрация концепции, конкретно под это переделывать надо.
Нашел на вродебы что-то необходимое
01
unsigned
char
screen_buffer [8];
02
screen_buffer [0] = 0x8;
// 00001000
03
screen_buffer [1] = 0x8;
// 00001000
04
screen_buffer [2] = 0x3E;
// 00111110
05
screen_buffer [3] = 0x8;
// 00001000
06
screen_buffer [4] = 0x8;
// 00001000
07
screen_buffer [5] = 0x8;
// 00001000
08
screen_buffer [6] = 0x0;
// 00000000
09
screen_buffer [7] = 0x0;
// 00000000
10
for
(
char
i=0; i<8; i++)
11
{
12
PORTA = (1 << i);
// включили столбец i
13
PORTB = screen_buffer [i];
// зажгли нужные пиксели столбца
14
delay ();
15
}
Вот код
01
const
int
row[8] = {53,52,51,50,10,11,12,13};
02
const
int
col[8] = {22,23,24,25,26,27,28,29};
03
int
v=5;
04
int
dms=200;
05
06
boolean Plus [8][8] =
07
{0,0,0,1,0,0,0,0,
08
0,0,0,1,0,0,0,0,
09
0,1,1,1,1,1A,0,0,
10
0,0,0,1,0,0,0,0,
11
0,0,0,1,0,0,0,0,
12
0,0,0,0,0,0,0,0,
13
0,0,0,0,0,0,0,0,
14
0,0,0,0,0,0,0,0};
15
16
void
setup
()
17
{
18
for
(
int
i=0; i<8; i++)
19
{
20
pinMode(row[i],OUTPUT);
21
pinMode(col[i],OUTPUT);
22
}
23
for
(
int
i=0; i<8; i++)
24
{
25
digitalWrite(row[i],HIGH);
26
}
27
}
28
29
void
loop
()
30
{
31
paint(Plus , v);
32
33
}
34
35
void
paint(boolean screen[8][8],
int
v)
36
{
37
int
i, j;
38
for
(
int
c=0; c <v; c ++)
39
{
40
for
(i=0; i<8; i++)
41
for
(j=0; j<8; j++)
42
{
43
if
(screen[i][j]==1)
44
{
45
digitalWrite(row[i], LOW);
46
digitalWrite(col[j], HIGH);
47
delayMicroseconds(dms);
48
digitalWrite(row[i], HIGH);
49
digitalWrite(col[j], LOW);
50
}
51
else
52
{
53
digitalWrite(row[i], HIGH);
54
digitalWrite(col[j], LOW);
55
delayMicroseconds(dms);
56
digitalWrite(row[i], HIGH);
57
digitalWrite(col[j], LOW);
58
}
59
}
60
}
61
}
Все с тем же применением digitalWrite()
1
const
int
row[8] = {53,52,51,50,10,11,12,13};
2
const
int
col[8] = {22,23,24,25,26,27,28,29};
Можно заменить
1
DDRB = B11111111;
2
DDRA = B11111111;
в остальной части не понимаю как на порты перевести
Что-то замена не прошла удачно. Изначальный код(в предидущем сообщении) работает. Чтобы не загромождать код массивами. Наверное надо библиотеку из массивов делать,при чередовании отображаемых символов
Короче, разбейте задачу "перевода на порты" на задачи поменьше, а то я перестал понимать, что здесь происходит.
А с заменой row[8] = {53,52,51,50,10,11,12,13} на DDRB = B11111111... Использование DDRB заменяет восьмикратный вызов функции pinMode(X,OUTPUT). Причём тут массив с номерами ног? Спойлер: ни при чём.
Извиняюсь за "мысли вслух". Пытаюсь отобразить символ "+" во вращении с помощью кода из 18 поста(в спойлере) - путем добавления других массивов в коде.
Получился такой код
001
const
int
row[8] = {53,52,51,50,10,11,12,13};
002
const
int
col[8] = {22,23,24,25,26,27,28,29};
003
int
v=10;
//время отображения пикселя
004
int
dms=200;
005
006
boolean A [8][8] =
007
{0,0,0,1,0,0,0,0,
008
0,0,0,1,0,0,0,0,
009
0,1,1,1,1,1,0,0,
010
0,0,0,1,0,0,0,0,
011
0,0,0,1,0,0,0,0,
012
0,0,0,0,0,0,0,0,
013
0,0,0,0,0,0,0,0,
014
0,0,0,0,0,0,0,0};
015
016
boolean B [8][8] =
017
{0,0,0,0,1,0,0,0,
018
0,1,0,1,0,0,0,0,
019
0,0,1,1,1,0,0,0,
020
0,0,0,1,0,1,0,0,
021
0,0,1,0,0,0,0,0,
022
0,0,0,0,0,0,0,0,
023
0,0,0,0,0,0,0,0,
024
0,0,0,0,0,0,0,0};
025
026
boolean C [8][8] =
027
{0,0,0,0,1,0,0,0,
028
0,1,1,0,1,0,0,0,
029
0,0,0,1,0,0,0,0,
030
0,0,1,0,1,1,0,0,
031
0,0,1,0,0,0,0,0,
032
0,0,0,0,0,0,0,0,
033
0,0,0,0,0,0,0,0,
034
0,0,0,0,0,0,0,0};
035
036
boolean D [8][8] =
037
{0,1,0,0,0,1,0,0,
038
0,0,1,0,1,0,0,0,
039
0,0,0,1,0,0,0,0,
040
0,0,1,0,1,0,0,0,
041
0,1,0,0,0,1,0,0,
042
0,0,0,0,0,0,0,0,
043
0,0,0,0,0,0,0,0,
044
0,0,0,0,0,0,0,0};
045
046
boolean E [8][8] =
047
{0,0,1,0,0,0,0,0,
048
0,0,1,0,1,1,0,0,
049
0,0,0,1,0,0,0,0,
050
0,1,1,0,1,0,0,0,
051
0,0,0,0,1,0,0,0,
052
0,0,0,0,0,0,0,0,
053
0,0,0,0,0,0,0,0,
054
0,0,0,0,0,0,0,0};
055
056
boolean F [8][8] =
057
{0,0,1,0,0,0,0,0,
058
0,0,0,1,0,1,0,0,
059
0,0,1,1,1,0,0,0,
060
0,1,0,1,0,0,0,0,
061
0,0,0,0,1,0,0,0,
062
0,0,0,0,0,0,0,0,
063
0,0,0,0,0,0,0,0,
064
0,0,0,0,0,0,0,0};
065
066
void
setup
()
067
{
068
069
{
070
DDRB = B11111111;
071
DDRA = B11111111;
072
}
073
074
{
075
PORTB = B11111111;
076
}
077
}
078
079
void
loop
()
080
{
081
paint(A, v);
082
delay(100);
083
paint(B, v);
084
delay(100);
085
paint(C, v);
086
delay(100);
087
paint(D, v);
088
delay(100);
089
paint(E, v);
090
delay(100);
091
paint(F, v);
092
delay(100);
093
094
}
095
096
void
paint(boolean screen[8][8],
int
v)
097
{
098
int
i, j;
099
for
(
int
c=0; c <v; c ++)
100
{
101
for
(i=0; i<8; i++)
102
for
(j=0; j<8; j++)
103
{
104
if
(screen[i][j]==1)
105
{
106
digitalWrite(row[i], LOW);
107
digitalWrite(col[j], HIGH);
108
delayMicroseconds(dms);
109
digitalWrite(row[i], HIGH);
110
digitalWrite(col[j], LOW);
111
}
112
else
113
{
114
digitalWrite(row[i], HIGH);
115
digitalWrite(col[j], LOW);
116
delayMicroseconds(dms);
117
digitalWrite(row[i], HIGH);
118
digitalWrite(col[j], LOW);
119
}
120
}
121
}
122
}
void
paint не удалось изменить
http://www.instructables.com/id/Persistence-of-Vision-Wand/
родственная тема.....
001
#include <avr/pgmspace.h>
002
String povtext =
" Z E N I T "
;
003
byte
RefreshRate = 2 ;
004
int
Dlina_Text = povtext.length() ;
005
byte
Data_B = 0 ;
006
byte
Data_C = 0 ;
007
byte
Data_D = 0 ;
008
byte
t ;
009
byte
l ;
010
byte
n ;
011
//=================================================================================================================================================================
012
boolean Letter_TEST []= {
013
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
014
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
015
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
016
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
017
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
018
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
019
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
020
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
021
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
022
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
023
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
024
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
025
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
026
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
027
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
028
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
029
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
030
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
031
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
032
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, };
033
//=================================================================================================================================================================
034
boolean Letter_A [] PROGMEM = {
035
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
036
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
037
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
038
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
039
1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
040
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
041
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
042
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
043
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
044
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
045
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
046
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
047
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
048
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
049
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
050
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
051
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
052
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
053
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
054
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, };
055
//=================================================================================================================================================================
056
boolean Letter_B [] PROGMEM = {
057
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
058
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
059
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
060
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
061
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
062
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
063
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
064
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
065
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
066
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
067
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
068
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
069
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
070
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
071
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
072
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
073
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
074
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
075
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
076
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, };
077
//=================================================================================================================================================================
078
boolean Letter_C [] PROGMEM = {
079
0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0,
080
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
081
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
082
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
083
1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1,
084
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
085
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
086
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
087
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
088
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
089
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
090
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
091
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
092
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
093
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
094
1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1,
095
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
096
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
097
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
098
0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, };
099
//=================================================================================================================================================================
100
boolean Letter_D [] PROGMEM = {
101
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
102
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
103
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
104
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
105
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
106
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
107
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
108
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
109
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
110
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
111
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
112
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
113
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
114
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
115
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
116
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
117
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
118
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
119
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
120
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, };
121
//=================================================================================================================================================================
122
boolean Letter_E [] PROGMEM = {
123
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
124
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
125
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
126
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
127
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
128
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
129
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
130
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
131
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
132
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
133
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
134
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
135
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
136
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
137
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
138
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
139
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
140
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
141
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
142
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
143
//=================================================================================================================================================================
144
boolean Letter_F [] PROGMEM = {
145
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
146
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
147
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
148
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
149
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
150
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
151
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
152
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
153
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
154
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
155
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
156
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
157
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
158
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
159
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
160
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
161
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
162
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
163
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
164
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, };
165
//=================================================================================================================================================================
166
boolean Letter_G [] PROGMEM = {
167
0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
168
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
169
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
170
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
171
1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1,
172
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
173
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
174
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
175
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
176
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
177
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
178
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
179
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
180
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
181
1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
182
1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1,
183
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
184
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
185
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
186
0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, };
187
//=================================================================================================================================================================
188
boolean Letter_H [] PROGMEM = {
189
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
190
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
191
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
192
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
193
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
194
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
195
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
196
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
197
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
198
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
199
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
200
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
201
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
202
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
203
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
204
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
205
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
206
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
207
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
208
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, };
209
//=================================================================================================================================================================
210
boolean Letter_I [] PROGMEM = {
211
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
212
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
213
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
214
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
215
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
216
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
217
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
218
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
219
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
220
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
221
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
222
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
223
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
224
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
225
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
226
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
227
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
228
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
229
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
230
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
231
//=================================================================================================================================================================
232
boolean Letter_J [] PROGMEM = {
233
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
234
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
235
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
236
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
237
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
238
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
239
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
240
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
241
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
242
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
243
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
244
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
245
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
246
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
247
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
248
1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0,
249
1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
250
1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
251
0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
252
0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, };
253
//=================================================================================================================================================================
254
boolean Letter_K [] PROGMEM = {
255
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
256
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
257
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
258
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
259
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
260
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
261
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0,
262
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0,
263
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
264
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
265
1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
266
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
267
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
268
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0,
269
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0,
270
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
271
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
272
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
273
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
274
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, };
275
//=================================================================================================================================================================
276
boolean Letter_L [] PROGMEM = {
277
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
278
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
279
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
280
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
281
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
282
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
283
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
284
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
285
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
286
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
287
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
288
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
289
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
290
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
291
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
292
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
293
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
294
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
295
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
296
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
297
//=================================================================================================================================================================
298
boolean Letter_M [] PROGMEM = {
299
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
300
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
301
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
302
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
303
1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
304
1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
305
1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
306
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
307
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
308
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
309
1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1,
310
1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1,
311
1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1,
312
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
313
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
314
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
315
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
316
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
317
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
318
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, };
319
//=================================================================================================================================================================
320
boolean Letter_N [] PROGMEM = {
321
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
322
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
323
1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
324
1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
325
1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
326
1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1,
327
1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1,
328
1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1,
329
1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
330
1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
331
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
332
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
333
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
334
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
335
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
336
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,
337
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
338
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
339
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
340
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, };
341
//=================================================================================================================================================================
342
boolean Letter_O [] PROGMEM = {
343
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
344
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
345
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
346
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
347
1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
348
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
349
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
350
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
351
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
352
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
353
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
354
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
355
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
356
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
357
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
358
1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
359
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
360
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
361
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
362
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, };
363
//=================================================================================================================================================================
364
boolean Letter_P [] PROGMEM = {
365
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
366
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
367
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
368
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
369
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
370
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
371
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
372
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
373
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
374
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
375
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
376
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
377
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
378
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
379
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
380
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
381
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
382
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
383
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
384
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, };
385
//=================================================================================================================================================================
386
boolean Letter_Q [] PROGMEM = {
387
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
388
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
389
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
390
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
391
1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
392
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
393
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
394
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
395
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
396
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
397
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
398
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
399
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
400
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
401
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,
402
1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
403
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
404
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
405
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
406
0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, };
407
//=================================================================================================================================================================
408
boolean Letter_R [] PROGMEM = {
409
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
410
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
411
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
412
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
413
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
414
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
415
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
416
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
417
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
418
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
419
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
420
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
421
1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0,
422
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
423
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
424
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
425
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
426
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
427
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
428
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, };
429
//=================================================================================================================================================================
430
boolean Letter_S [] PROGMEM = {
431
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
432
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
433
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
434
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
435
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
436
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
437
1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
438
0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
439
0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
440
0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
441
0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
442
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0,
443
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
444
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
445
0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
446
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
447
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
448
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
449
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
450
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, };
451
//=================================================================================================================================================================
452
boolean Letter_T [] PROGMEM = {
453
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
454
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
455
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
456
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
457
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
458
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
459
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
460
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
461
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
462
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
463
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
464
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
465
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
466
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
467
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
468
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
469
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
470
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
471
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
472
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, };
473
//=================================================================================================================================================================
474
boolean Letter_U [] PROGMEM = {
475
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
476
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
477
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
478
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
479
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
480
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
481
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
482
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
483
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
484
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
485
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
486
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
487
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
488
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
489
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
490
1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1,
491
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
492
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
493
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
494
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, };
495
//=================================================================================================================================================================
496
boolean Letter_V [] PROGMEM = {
497
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
498
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
499
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
500
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
501
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
502
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
503
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
504
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
505
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
506
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
507
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
508
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
509
0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
510
0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0,
511
0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0,
512
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
513
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
514
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
515
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
516
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, };
517
//=================================================================================================================================================================
518
boolean Letter_W [] PROGMEM = {
519
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
520
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
521
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
522
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
523
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
524
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
525
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
526
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
527
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
528
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
529
1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
530
1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1,
531
1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1,
532
1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1,
533
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
534
1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
535
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
536
0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0,
537
0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0,
538
0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, };
539
//=================================================================================================================================================================
540
boolean Letter_X [] PROGMEM = {
541
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
542
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
543
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
544
0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
545
0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0,
546
0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0,
547
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
548
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
549
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
550
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
551
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
552
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
553
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
554
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
555
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
556
0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0,
557
0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0,
558
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
559
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
560
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, };
561
//=================================================================================================================================================================
562
boolean Letter_Y [] PROGMEM = {
563
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
564
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
565
1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
566
0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
567
0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0,
568
0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0,
569
0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
570
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
571
0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
572
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
573
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
574
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
575
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
576
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
577
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
578
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
579
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
580
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
581
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
582
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, };
583
//=================================================================================================================================================================
584
boolean Letter_Z [] PROGMEM = {
585
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
586
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
587
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
588
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
589
0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,
590
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
591
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0,
592
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0,
593
0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
594
0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
595
0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
596
0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0,
597
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0,
598
0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
599
0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
600
0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
601
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
602
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
603
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
604
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, };
605
//=================================================================================================================================================================
606
void
sendToWand( boolean LetterArray[] ){
607
for
( t = 0 ; t < 12 ; t++ ){
608
for
( l = 0 ; l < 6 ; l++ ){
609
Data_B = Data_B << 1;
610
Data_B |= pgm_read_byte_near( LetterArray + ( l * 12 + t ) ) ;
611
}
612
for
( l = 6 ; l < 14 ; l++ ){
613
Data_C = Data_C << 1 ;
614
Data_C |= pgm_read_byte_near( LetterArray + ( l * 12 + t ) ) ;
615
}
616
for
( l = 14 ; l < 20 ; l++ ){
617
Data_D = Data_D << 1 ;
618
Data_D |= pgm_read_byte_near( LetterArray + ( l * 12 + t ) ) ;
619
}
620
PORTB = Data_B ;
621
PORTD = Data_C ;
622
PORTC = Data_D ;
623
// через сдвиговый резистор
624
delay( RefreshRate ) ;
625
Data_B = 0 ;
626
Data_C = 0 ;
627
Data_D = 0 ;
628
// через сдвиговый резистор
629
}
630
}
631
//=================================================================================================================================================================
632
void
sendToWandMW( boolean LetterArray[] ){
633
for
( t=0 ; t < 15 ; t++ ){
634
for
( l=0 ; l < 6 ; l++ ){
635
Data_B = Data_B << 1 ;
636
Data_B |= pgm_read_byte_near( LetterArray + ( l * 15 + t ) ) ;
637
}
638
for
( l=6 ; l < 14 ; l++ ){
639
Data_C = Data_C << 1 ;
640
Data_C |= pgm_read_byte_near( LetterArray + ( l * 15 + t ) ) ;
641
}
642
for
( l=14 ; l < 20 ; l++ ){
643
Data_D = Data_D << 1 ;
644
Data_D |= pgm_read_byte_near( LetterArray + ( l * 15 + t ) ) ;
645
}
646
PORTB = Data_B ;
647
PORTD = Data_C ;
648
PORTC = Data_D ;
649
// через сдвиговый резистор
650
delay( RefreshRate ) ;
651
Data_B = 0 ;
652
Data_C = 0 ;
653
Data_D = 0 ;
654
// через сдвиговый резистор
655
}
656
}
657
//=================================================================================================================================================================
658
void
setup
() {
659
DDRB = 0xFF ;
660
DDRC = 0xFF ;
661
DDRD = 0xFF ;
662
for
(
byte
j = 0 ; j < 20 ; j++ ){
663
for
(
byte
i = 0 ; i < 6 ; i++ ){
664
Data_B = Data_B << 1 ;
665
Data_B |= Letter_TEST [ ( i * 20 + j ) ] ;
666
}
667
for
(
byte
i = 6 ; i < 14 ; i++ ){
668
Data_C = Data_C << 1 ;
669
Data_C |= Letter_TEST [ ( i * 20 + j ) ] ;
670
}
671
for
(
byte
i = 14 ; i < 20 ; i++ ){
672
Data_D = Data_D << 1 ;
673
Data_D |= Letter_TEST [ ( i * 20 + j ) ] ;
674
}
675
PORTB = Data_B ;
676
PORTD = Data_C ;
677
PORTC = Data_D ;
678
delay(150);
679
}
680
Data_B = 0 ;
681
Data_C = 0 ;
682
Data_D = 0 ;
683
PORTB = Data_B ;
684
PORTD = Data_C ;
685
PORTC = Data_D ;
686
}
687
//=================================================================================================================================================================
688
void
loop
() {
689
PORTB = 0 ;
690
PORTD = 0 ;
691
PORTC = 0 ;
692
delay( RefreshRate * 3 ) ;
693
for
( n = 0 ; n < Dlina_Text ; n++ ) {
694
if
( povtext.charAt( n ) ==
'A'
) {
695
sendToWand( Letter_A ) ;
696
}
697
else
if
( povtext.charAt( n ) ==
'B'
) {
698
sendToWand( Letter_B ) ;
699
}
700
else
if
( povtext.charAt( n ) ==
'C'
) {
701
sendToWand( Letter_C ) ;
702
}
703
else
if
( povtext.charAt( n ) ==
'D'
) {
704
sendToWand( Letter_D );
705
}
706
else
if
( povtext.charAt( n ) ==
'E'
) {
707
sendToWand( Letter_E ) ;
708
}
709
else
if
( povtext.charAt( n ) ==
'F'
) {
710
sendToWand( Letter_F ) ;
711
}
712
else
if
( povtext.charAt( n ) ==
'G'
) {
713
sendToWand( Letter_G ) ;
714
}
715
else
if
( povtext.charAt( n ) ==
'H'
) {
716
sendToWand( Letter_H ) ;
717
}
718
else
if
( povtext.charAt( n ) ==
'I'
) {
719
sendToWand( Letter_I ) ;
720
}
721
else
if
( povtext.charAt( n ) ==
'J'
) {
722
sendToWand( Letter_J ) ;
723
}
724
else
if
( povtext.charAt( n ) ==
'K'
) {
725
sendToWand( Letter_K ) ;
726
}
727
else
if
( povtext.charAt( n ) ==
'L'
) {
728
sendToWand( Letter_L ) ;
729
}
730
else
if
( povtext.charAt( n ) ==
'M'
) {
731
sendToWandMW( Letter_M ) ;
732
}
733
else
if
( povtext.charAt( n ) ==
'N'
) {
734
sendToWand( Letter_N ) ;
735
}
736
else
if
( povtext.charAt( n ) ==
'O'
) {
737
sendToWand( Letter_O ) ;
738
}
739
else
if
( povtext.charAt( n ) ==
'P'
) {
740
741
}
742
else
if
( povtext.charAt( n ) ==
'Q'
) {
743
sendToWand( Letter_Q ) ;
744
}
745
else
if
( povtext.charAt( n ) ==
'R'
) {
746
747
}
748
else
if
( povtext.charAt( n ) ==
'S'
) {
749
750
}
751
else
if
( povtext.charAt( n ) ==
'T'
) {
752
sendToWand( Letter_T ) ;
753
}
754
else
if
( povtext.charAt( n ) ==
'U'
) {
755
sendToWand( Letter_U ) ;
756
}
757
else
if
( povtext.charAt( n ) ==
'V'
) {
758
sendToWand( Letter_V ) ;
759
}
760
else
if
( povtext.charAt( n ) ==
'W'
) {
761
sendToWandMW( Letter_W ) ;
762
}
763
else
if
( povtext.charAt( n ) ==
'X'
) {
764
sendToWand( Letter_X ) ;
765
}
766
else
if
( povtext.charAt( n ) ==
'Y'
) {
767
sendToWand( Letter_Y ) ;
768
}
769
else
if
( povtext.charAt( n ) ==
'Z'
) {
770
sendToWand( Letter_Z ) ;
771
}
772
else
if
( povtext.charAt( n ) ==
' '
) {
773
PORTB = 0 ;
774
PORTD = 0 ;
775
PORTC = 0 ;
776
delay( RefreshRate * 3 ) ;
777
}
778
PORTB = 0 ;
779
PORTD = 0 ;
780
PORTC = 0 ;
781
delay( RefreshRate ) ;
782
}
783
PORTB = 0 ;
784
PORTD = 0 ;
785
PORTC = 0 ;
786
delay( RefreshRate * 3 ) ;
787
}
788
//=================================================================================================================================================================
Получился такой код
Вместо такого можно сделать просто трехмерный массив, кстати говоря.
Вообще, лучше додумать, как показывать один конкретный кадр. Скетч должен выводить кадр из некого буфера (специального массива) бесконечно долго - тут задача динамической индикации: показать одну строку (столбец) кадра, через какое-то малое время показать следующую и т.д. А формировать сигналы на транзисторы образом, крайне похожим на код из #16 (предчувствуя затык - для PNP "сдвиг нуля" можно сделать побитовой инверсией "~" того, что будет от двигания единицы).
Потом по ходу работы загонять в буфер кадра другую картинку. И пока вы не наворотили дофига вложенных циклов с delay, изучите пример BlinkWithoutDelay.
Честно говоря весь код понимаю смутно. Точнее содержимое функций мне не понятно. Вот к примеру в #22 понятно только, что в setup обявлены порты. В loop порядок вывода значений на табло. Функция paint - вывод на массивов на табло,а то что в этой функции происходит не ясно.
На схему свою в #5 гляньте, код понятнее станет. В #22 в двух циклах просматриваются все 64 ячейки "кадра" (8 столбцов, 8 строк). Если светодиод надо зажечь (в ячейке массива - единица), выставляется единица на базу NPN транзистора и ноль на базу PNP транзистора. Тогда транзисторы открываются, ток течёт, светодиод загорается. Потом контроллер ждёт сколько-то микросекунд и вырубает этот светодиод обратными операциями. А вот коде для случая, если светодиод гореть не должен, в коде светодиод тушится дважды зачем-то. Либо по невнимательности писавшего, либо чтобы времени одинакого тратилось.
Это если двумерный массив, переданный в функцию таким способом, хавается прогой.
Прикупил для полной картины светодиодную матрицу 8х8.Для начала решил запустить просто бегущий ряд - полоса бегает то вправо, то влево(в общем бегущие огни) вот код
01
unsigned
char
upDown=1;
// начинаем с движения вверх
02
unsigned
char
cylon=0;
// определяет очередность LED
03
void
setup
()
04
{
05
DDRA = B11111111;
06
DDRB = B11111111;
07
}
08
void
loop
()
09
{
10
PORTA = B10000000;
11
PORTB = B00000000;
12
if
(upDown==1){
// если идем вверх, то
13
cylon++;
14
if
(cylon>=7) upDown=0;
// когда достигнут наибольший номер LED, то в след. цикле идем вниз
15
}
16
else
{
17
cylon--;
18
if
(cylon==0) upDown=1;
// когда достигнут наименьший номер LED, то в след. цикле идем вверх
19
}
20
PORTA = 1 << cylon;
//сдвиг
21
delay(200);
// пауза 200 мс
22
}
Возник вопрос как сделать чтобы полоса бегала только с права налево,а не туда сюда?
Удалить операторы if(upDown==1) и else и ещё один из оставшихся после этого блоков операторов.
Останется либо только
1
cylon++;
2
if
(cylon>=7) upDown=0;
либо
1
cylon--;
2
if
(cylon==0) upDown=1;
Кто код-то писал? Всего 22 строчки - уж можно как-то в уме его выполнить и прикинуть, что получится.
При выше упомянутом изминении строка действительно бежит в одну из сторон,однако лишь однократно. Наверное нужно добавлять цикл?Нашел вот такой код
01
//программа 1 «Бегущие огни»
02
int
led = 1;
// глобальная переменная, хранящая номер «зажигаемого» вывода
03
void
setup
() {
04
DDRA = 255;
// все выводы порта A настраиваем как выходы
05
DDRB = 255;
06
07
}
08
void
loop
() {
09
PORTB = B00000000;
10
PORTA = led;
// «зажигаются» соответствующие выводы порта A
11
delay(200);
// задержка в 0,3 сек.
12
led = led<<1;
// сдвиг влево – если горел 1-й светодиод, то следующим зажжётся второй
13
if
(led > 128)
// 128 = B10000000
14
led = 1;
// после 8-го светодиода возвращаемся к первому
15
}
Строка бегает циклически в одном направлении,однако направление её движения слева направо, а хотелось бы справа налево(необходимо это для дальнейшего редактирования скетча и вместо полосы загонять символы).Редактировал код ,но ничего не вышлоДумаю направление(к чему двигаться в разработке бекущей строки из текста) взял правильно?
ПС. код из поста 27 вpят с сайта http://cxem.net
Так сделать наоборот и всё :)
led=128 вместо единицы изначально, сдвигать вправо >>. Потом if ( led < 1) led = 128. Даже как-то неудобно объяснять такие вещи.
Отредактировал код из
01
const
int
row[8]={23,25,27,29,31,33,35,37};
02
const
int
col[8]={39,41,43,45,47,49,51,53};
03
int
v=1;
04
int
dms=800;
05
06
boolean A[8][23] =
07
{0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
08
0,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,
09
0,1,1,1,1,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,
10
0,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,1,0,1,0,0,
11
0,1,0,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,0,
12
0,1,0,0,1,0,1,1,1,0,1,1,1,0,1,1,1,0,0,1,0,0,0,
13
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
14
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
15
};
16
17
void
setup
()
18
{
19
for
(
int
x=0; x<8; x++)
20
{
21
pinMode(row[x],OUTPUT);
22
pinMode(col[x],OUTPUT);
23
}
24
for
(
int
x=0; x<8; x++)
25
{
26
digitalWrite(row[x],HIGH);
27
}
28
}
29
30
void
loop
()
31
{
32
paint(A, v);
33
scroll(A);
34
}
35
36
void
paint(boolean screen[8][23],
int
v)
37
{
38
int
x, y;
39
for
(
int
c=0; c <v; c ++)
40
{
41
for
(x=0; x<8; x++)
42
for
(y=0; y<23; y++)
43
{
44
if
(screen[x][y]==1)
45
{
46
digitalWrite(row[x], LOW);
47
digitalWrite(col[y], HIGH);
48
delayMicroseconds(dms);
49
digitalWrite(row[x], HIGH);
50
digitalWrite(col[y], LOW);
51
}
52
else
53
{
54
digitalWrite(row[x], HIGH);
55
digitalWrite(col[y], LOW);
56
delayMicroseconds(dms);
57
digitalWrite(row[x], HIGH);
58
digitalWrite(col[y], LOW);
59
}
60
}
61
}
62
}
63
64
void
scroll(boolean screen[8][23])
65
{
66
boolean buf[8][1];
67
for
(
int
x=0; x<8; x++)
68
{
69
buf[x][0]=screen[x][0];
70
}
71
for
(
int
x=0; x<8; x++)
72
for
(
int
y=0; y<23; y++)
73
{
74
screen[x][y]=screen[x][y+1];
75
}
76
for
(
int
x=0; x<8; x++)
77
{
78
screen[x][23-1]=buf[x][0];
79
}
80
}
#1 поста на
01
const
int
row[8]={53,52,51,50,10,11,12,13};
02
const
int
col[8]={22,23,24,25,26,27,28,29};
03
int
v=5;
04
int
dms=400;
05
06
boolean A[8][44] =
07
{0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
08
0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
09
0,1,0,0,0,0,1,0,0,1,1,1,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,
10
0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
11
0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,
12
0,1,0,0,0,0,1,0,0,1,1,1,0,0,0,1,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
13
0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
14
0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0 };
15
16
void
setup
()
17
{
18
for
(
int
i=0; i<8; i++)
19
{
20
pinMode(row[i],OUTPUT);
21
pinMode(col[i],OUTPUT);
22
}
23
for
(
int
i=0; i<8; i++)
24
{
25
digitalWrite(row[i],HIGH);
26
}
27
}
28
29
void
loop
()
30
{
31
paint(A, v);
32
scroll(A);
33
}
34
35
void
paint(boolean screen[8][44],
int
v)
36
{
37
int
i, j;
38
for
(
int
c=0; c <v; c ++)
39
{
40
for
(i=0; i<8; i++)
41
for
(j=0; j<8; j++)
42
{
43
if
(screen[i][j]==1)
44
{
45
digitalWrite(row[i], LOW);
46
digitalWrite(col[j], HIGH);
47
delayMicroseconds(dms);
48
digitalWrite(row[i], HIGH);
49
digitalWrite(col[j], LOW);
50
}
51
else
52
{
53
digitalWrite(row[i], HIGH);
54
digitalWrite(col[j], LOW);
55
delayMicroseconds(dms);
56
digitalWrite(row[i], HIGH);
57
digitalWrite(col[j], LOW);
58
}
59
}
60
}
61
}
62
63
void
scroll(boolean screen[8][44])
64
{
65
boolean buf[44][1];
66
for
(
int
i=0; i<44; i++)
67
{
68
buf[i][0]=screen[i][0];
69
}
70
for
(
int
i=0; i<8; i++)
71
for
(
int
j=0; j<44; j++)
72
{
73
screen[i][j]=screen[i][j+1];
74
}
75
for
(
int
i=0; i<8; i++)
76
{
77
screen[i][44-1]=buf[i][0];
78
}
79
}