Тема: Глюк у меня в голове или в Freeduino?
Доброго дня суток.
Не так давно купил Freeduino. Осваиваю. Разные примеры с сайта Arduino.cc поделал. Радости нет предела.
Придумал себе обучающую задачку: POV
Идея проста, диоды в планке мигают в нужной последовательности. А если этой планкой провести в темноте, то из-за инертности наших глаз мы увидим надпись.

Схема подключения предельно проста:
А вот и сам скетч:
int timer = 2;
int x = 0;
int y = 0;
int pin_on [] = {7,6,5,4,3,12,11,10,9,8} ; // порядок подключения диодов
// матрица символа сердце
int heart [10][10] = {
{0,0,1,1,0,0,1,1,0,0},
{0,1,1,1,1,1,1,1,1,0},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,0},
{0,0,1,1,1,1,1,1,0,0},
{0,0,0,1,1,1,1,0,0,0},
{0,0,0,0,1,1,0,0,0,0},
};
// матрица символа I
int char_I [10][10] = {
{0,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,0},
{0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,1,1,0,0,0,0},
{0,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,0},
};
// матрица символа Y
int char_Y [10][10] = {
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,0,1,1,0,0,1,1,0,0},
{0,0,1,1,0,0,1,1,0,0},
{0,0,0,1,1,1,1,0,0,0},
{0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,1,1,0,0,0,0},
};
// матрица символа O
int char_O [10][10] = {
{0,0,0,1,1,1,1,0,0,0},
{0,1,1,1,1,1,1,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,1,1,1,1,1,1,0},
{0,0,0,1,1,1,1,0,0,0},
};
// матрица символа A
int char_A [10][10] = {
{0,0,1,1,1,1,1,1,0,0},
{0,1,1,1,1,1,1,1,0,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
};
// матрица символа B
int char_B [10][10] = {
{0,1,1,1,1,1,1,0,0,0},
{0,1,1,1,1,1,1,1,0,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,0,0,0},
};
// матрица символа C
int char_C [10][10] = {
{0,0,0,1,1,1,1,0,0,0},
{0,0,1,1,1,1,1,1,0,0},
{0,1,1,1,0,0,0,0,0,0},
{0,1,1,0,0,0,0,0,0,0},
{0,1,1,0,0,0,0,0,0,0},
{0,1,1,0,0,0,0,0,0,0},
{0,1,1,0,0,0,0,0,0,0},
{0,1,1,1,0,0,0,0,0,0},
{0,0,1,1,1,1,1,1,0,0},
{0,0,0,1,1,1,1,0,0,0},
};
// матрица символа U
int char_U [10][10] = {
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,0,0,0,0,1,1,0},
{0,1,1,1,1,1,1,1,1,0},
{0,0,0,1,1,1,1,0,0,0},
};
void setup() {
for (int thisPin = 0; thisPin < 10; thisPin++) {
pinMode(pin_on[thisPin], OUTPUT);
}
Serial.begin(9600);
}
void loop() {
delay(100);
Serial.println(" ");
Serial.println("A");
draw_symbol(char_A);
Serial.println(" ");
Serial.println("B");
draw_symbol(char_B);
Serial.println(" ");
Serial.println("C");
draw_symbol(char_C);
Serial.println(" ");
Serial.println("O");
draw_symbol(char_O);
// Если следующие три строки раскомментировать, то работать перестает.
// Serial.println(" ");
// Serial.println("Y");
// draw_symbol(char_Y);
}
void draw_symbol(int what_symbol[10][10])
{
for (int x = 0; x < 10; x++)
{
for (int y = 0; y < 10; y++)
{
if (what_symbol[y][x]==1)
{digitalWrite(pin_on[y], HIGH);
Serial.print("1"); }
else {
Serial.print("0");
digitalWrite(pin_on[y], LOW);}
}
Serial.println(" ");
delay(timer);
}
all_off();
delay(timer*2);
}
void all_off() {
for (int y = 0; y < 10; y++)
{digitalWrite(pin_on[y], LOW);}
}Все хорошо в таком варианте, но если раскомментировать три строчки, т.е. отображать еще одну букву, то работать наглухо перестает, причем если мониторить serial monitor, то фридуино выдает непонятные символы, а так же на плате мигает диод L.
Помогите диагностировать проблему.
