ребята, помогите пожалуйста. уже всю голову сломал. есть процедура, отсылает по параллельному интерфейсу байты в экран, на вход процедуре подается символ. шесть байтов соответвующих изображению этого символа хранятся в двумерном массиве const int simv_kod[][6] почему если я вызываю процедуру SendLetter('A') то я получаю не то же самое если я явно задам индекс массива из которого брать байты. код во вложении. всю голову уже сломал почему так. код в сериал выводит вот это. Код (Text): 3E 0 3E 10 8 10 1000001 65 3E 50 90 90 FE 0 1000001 65 казалось бы индекс массива один даже побитово, а байты то из массива по этому индексу берутся разные! понимаю что затык в преобразовании типов, но где именно понять не могу.
опытным путем выяснил что проблема с индексами есть только когда размерность массива больше какой то определенной величины. оставил только латиницу и ограничился размерностью масссива [127][6]. если ктото знает почему если индекс массива большой то неправильно значения берутся буду очень рад обагатится инфой.
пробовал. дело не в преобразовании, видимо какой то баг с индексами. даже если в функцию передавать не char а int, то из массива берется какое то левое значение.
мне кажется это какой то лютый баг. с таким массивом, как у меня задан, ваще всю ардиуну клинит по части строк. она даже в сериал строку не может вывести. в любое место вставляешь Serial.println("Hello"); и скетч ничего не отправляет в порт, может отправлять только не символьные/строковые данные. массив сокращаешь до 127 символов и всё начинает работать.
У ардуины 2 Кб ОЗУ, там хранятся переменные. 128 * 6 * 2 = 1536 = 1.5 Кб 256 * 6 * 2 = 3072 = 3 Кб Экономьте память либо пихайте данные в progmem.