Доброго времени суток. Сделал бегущую строку на Arduino из трех матриц. Все работает идеально, НО есть проблема. Arduino не тянет длинные фразы. Заканчивается память. Решил хранить массив информации на компьютере и передавать его на плату через comпорт. Массив вида: unsigned char disp1[1][8]={ {0x00,0x90,0xD7,0x3F,0x3F,0xD7,0x90,0x00}, }; То есть в comпорт должны прийти данные вида: 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 А потом эти данные присваиваются массиву. И вот тут я попал в тупик. Нужна помощь.
0x - это только тип представления числа, кода символа. массив Код (Text): unsigned char disp1[1][8]={ {0x00,0x90,0xD7,0x3F,0x3F,0xD7,0x90,0x00}, }; эквивалентен массиву Код (Text): unsigned char disp1[1][8]={ {0,144,215,63,63,215,144,0}, }; Перевод стринга сом-порта "144" в byte, а потом в char, по-моему достаточно просто. Внимание вопросы: 1. А массивы строк не пытались закинуть в Progmem? 2. Зачем создаете двухмерный массив, а используете как одномерный.
Спасибо большое! Попробую. Так правда намного легче. Progmem, знаю про эту память, но не стал возиться. Решил сразу глобально увеличить) Это многомерный массив. Привел одну строчку чтобы было легче объяснять.
Ядро можно взять отсюда http://wiki.amperka.ru/конспект-arduino:светильник-управляемый-по-usb только убрал комментарии и вывод не на светодиод, а обратно в монитор. Код (Text): String message; void setup() { Serial.begin(9600); } void loop() { while (Serial.available()) { char incomingChar = Serial.read(); if (incomingChar >= '0' && incomingChar <= '9') { message += incomingChar; } else if (incomingChar == '\n' or incomingChar == ',' ) { Serial.println(message.toInt()); message = ""; } } } message.toInt() возвращает целочисленное значение, его и нужно закидывать в массив. Доработать, чтобы ',' перебирал индексы массива.
А не проще вводить не непонятными кодами, а нормальными строковыми символами, а в контроллере хранить соответствия между символом и включенными светодиодами? http://arduino.ru/forum/programmirovanie/begushchaya-stroka-na-svetodiodnykh-matritsakh
Возможно, но я не понимаю как потом заставить его двигаться. Так в массиве хранится информация сразу целого экрана. При большой длинне выводимого слова количество строк доходит до 300. К сожалению более рационального придумать не смог.