Я пытаюсь создать функцию, которая будет рисовать линейный график в определенном окне на экране GLCD.
Предположим, что ось x окна проходит от пикселя 24 до 205 (слева направо), а ось y проходит от пикселя 55 до 5 (от низкого до высокого).
Мне просто нужен график, чтобы добавить новое значение (или точку) всякий раз, когда доступны новые данные. Таким образом, я могу вызвать обновление графика в процедуре сбора данных. Это не проблема.
Последнее значение всегда нужно добавлять в самую правую позицию на графике, которая равна 205. Поэтому мне нужно будет очистить эту линию и нарисовать новое значение/точку. Тоже без проблем.
T6963C_line(205, 5, 205, 55, T6963C_BLACK); //Clearing the whole line
T6963C_dot(205, posy, T6963C_WHITE); //Drawing new dot
Но в чем я не уверен, так это в том, как сместить все предыдущие значения/точки на одно место влево при обновлении (каждый раз, когда новое значение/точка добавляется в x-позицию 205), пока оно не достигнет границы окна , то есть 22.
Любая помощь будет очень признательна!
ДОБАВЛЕНИЕ:
int posy1[181];
int i1;
for(i1 = 0; i1 < 181 - 1; i1++)
{
T6963C_dot(i1 + 24, posy1[i1], T6963C_BLACK); //Erase old dots
}
for(i1 = 0; i1 < 181 - 1; i1++)
{
posy1[i1] = posy1[i1 + 1]; //Shift array
}
posy1[181] = EQ; //Add new value (EQ) to array
for(i1 = 0; i1 < 181 - 1; i1++)
{
T6963C_dot(i1 + 24, posy1[i1], T6963C_WHITE); //Redraw dots
}