Я пытаюсь создать функцию, которая будет нарисовать линейный график в определенном окне на экране GLCD.MikroC, График рисования линии
Допустим, что ось 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
Но я не уверен, о том, как не перекладывать все предыдущие значения/Dots одно место влево на отрады (каждый раз, когда новое значение/точка добавляется на х-положении 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
}
Спасибо за ваш ответ! Если вы видите выше, я добавил то, что, по моему мнению, является основой для того, что вы делаете. Хотя я не могу получить правильные переменные/уравнения. Не могли бы вы мне помочь? – Felix
От 24 до 205 - 182 элемента, а не 181. Чтобы стереть/нарисовать все точки, вы должны использовать 'for (i1 = 0; i1
usr2564301