Прошу помощи с tft дисплеем MCUFRIEND_kbv

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

Всем привет, еле еле сделал "алгоритм" построения графика(меняя значение t0-t5 можно изменять сам график), знаю что ужасно, вы могли бы сделать в 5 раз лучше, но дело вдругом, как можно закрасить нижнюю часть графика? Вот скетч, тапками не кидать и не советовать что то поменять, прошу лишь помочь с закраской нижней части графика

#include "Adafruit_GFX.h"
#include "MCUFRIEND_kbv.h"
MCUFRIEND_kbv tft;
#define G 0x4FE0
#define GT 0x44A3
#define B 0x029F
int prev = 31;
int p0 = 31;
int p1 = 106;
int p2 = 181;
int p3 = 256;
int p4 = 331;
int p5 = 406;
int t0 = 5;
int t1 = 8;
int t2 = 18;
int t3 = 10;
int t4 = 15;
int t5 = 23;
int r1 = 2;
int r2 = 5;
int y;
int x;
int h = 10;
void setup() {
  tft.reset();
  Serial.begin(9600);
  uint16_t ID = tft.readID();
  tft.begin(ID);
  tft.setRotation(0);
  tft.invertDisplay(true);
  tft.fillScreen(0xCC92);
  tft.invertDisplay(1);

  int val0 = map(t0, 0, 30, 31, 315);
  int val1 = map(t1, 0, 30, 31, 315);
  int val2 = map(t2, 0, 30, 31, 315);
  int val3 = map(t3, 0, 30, 31, 315);
  int val4 = map(t4, 0, 30, 31, 315);
  int val5 = map(t5, 0, 30, 31, 315);

  Serial.println(val0);
  Serial.println(val1);
  Serial.println(val2);
  Serial.println(val3);
  Serial.println(val4);
  Serial.println(val5);
  // tft.drawFastVLine(20, 0, 300, YELLOW);
  // for (uint16_t a = 0; a < 5; a++) {
  // tft.drawLine(50, 50 + a, 100, 100 + a, b);
  // }
  // tft.fillCircle(8, 310, 8, G);
  // tft.fillCircle(8, 310, 4, GT);

  /* for (uint16_t a = 0; a < 3; a++) {
     tft.drawLine(40, 40 + a, 400, 40 + a, B);
     tft.drawLine(40 + a, 40, 40 + a, 500, B);

    }
    tft.fillTriangle(46,460,36,460,41,480,B);
    tft.fillTriangle(300,46,300,36,320,41,B);
    tft.setCursor(25,280);
    tft.setTextColor(B);
    tft.setTextSize(2);
    tft.setRotation(1);
    tft.println("0");
    tft.fillCircle(41, 279, 3, B);
    tft.setCursor(25,218);
    tft.println("7");
    tft.fillCircle(41, 223, 3, B);
    tft.setCursor(15,161);
    tft.println("14");
    tft.fillCircle(41, 167, 3, B);
    tft.setCursor(15,103);
    tft.println("21");
    tft.fillCircle(41, 111, 3, B);
    tft.setCursor(15,47);
    tft.println("28");
    tft.fillCircle(41, 54, 3, B);
    tft.setCursor(18,9);
    tft.println("C");
    for (uint16_t a = 0; a < 2; a++) {
    tft.drawCircle(8, 9, 3 - a, B);
    }
  */
  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(30, 30 + a, 400, 30 + a, B);
    tft.drawLine(30 + a, 30, 30 + a, 500, B);

  }
  tft.fillTriangle(36, 460, 26, 460, 31, 480, B);
  tft.fillTriangle(300, 36, 300, 26, 320, 31, B);
  tft.setCursor(13, 9);
  tft.setTextColor(B);
  tft.setTextSize(2);
  tft.setRotation(1);
  tft.println("C");
  for (uint16_t a = 0; a < 2; a++) {
    tft.drawCircle(8, 9, 3 - a, B);
  }
  tft.setRotation(1);
  tft.fillCircle(p0, 288, 3, B);
  tft.setCursor(28, 295);
  tft.println("1");

  tft.fillCircle(p1, 288, 3, B);
  tft.setCursor(101, 295);
  tft.println("2");

  tft.fillCircle(p2, 288, 3, B);
  tft.setCursor(176, 295);
  tft.println("3");

  tft.fillCircle(p3, 288, 3, B);
  tft.setCursor(251, 295);
  tft.println("4");

  tft.fillCircle(p4, 288, 3, B);
  tft.setCursor(325, 295);
  tft.println("5");

  tft.fillCircle(p5, 288, 3, B);
  tft.setCursor(400, 295);
  tft.println("6");

  tft.setRotation(0);

  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(val0, p0 + a, val1, p1 + a, B);
  }
  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(val1, p1 + a, val2, p2 + a, B);
  }
  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(val2, p2 + a, val3, p3 + a, B);
  }
  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(val3, p3 + a, val4, p4 + a, B);
  }
  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(val4, p4 + a, val5, p5 + a, B);
  }
  for (uint16_t a = 0; a < 2; a++) {
    tft.drawFastVLine(val5 + a, p5, 75, B);
  }



for (int a = 10; a < 29; a++) {
  tft.drawFastVLine(val5, prev, h, B);
  prev = prev + h + h;
}
prev = 31;
for (int a = 10; a < 25; a++) {
  tft.drawFastVLine(val4, prev, h, B);
  prev = prev + h + h;
}
prev = 31;
for (int a = 10; a < 21; a++) {
  tft.drawFastVLine(val3, prev, h, B);
  prev = prev + h + h;
}
prev = 31;
for (int a = 10; a < 18; a++) {
  tft.drawFastVLine(val2, prev, h, B);
  prev = prev + h + h;
}
prev = 31;
for (int a = 0; a < 4; a++) {
  tft.drawFastVLine(val1, prev, h, B);
  prev = prev + h + h;
}
prev = 31;
for (int a = 0; a < 0; a++) {
  tft.drawFastVLine(val0, prev, h, B);
  prev = prev + h + h;
}
prev = 31;
tft.fillCircle(val0, p0, r2, G);
tft.fillCircle(val0, p0, r1, GT);

tft.fillCircle(val1, p1, r2, G);
tft.fillCircle(val1, p1, r1, GT);

tft.fillCircle(val2, p2, r2, G);
tft.fillCircle(val2, p2, r1, GT);

tft.fillCircle(val3, p3, r2, G);
tft.fillCircle(val3, p3, r1, GT);

tft.fillCircle(val4, p4, r2, G);
tft.fillCircle(val4, p4, r1, GT);

tft.fillCircle(val5, p5, r2, G);
tft.fillCircle(val5, p5, r1, GT);

}

void loop() {
  // put your main code here, to run repeatedly:

}

Sonologist
Sonologist аватар
Offline
Зарегистрирован: 08.06.2018

А если так: строить график не точками, а вертикальными линиями от оси абсцисс до соответствующего значения?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ShadowFlash пишет:
не советовать что то поменять

Если ты хочешь ничего не менять, но чтобы при этом поведение программы поменялось, то ты ошибся форумом. Тебе вот сюда или вот сюда. Там есть соответствующие специалисты.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Sonologist пишет:

А если так: строить график не точками, а вертикальными линиями от оси абсцисс до соответствующего значения?

Ну, тебе ж сказали

ShadowFlash пишет:
не советовать что то поменять

а ты советуешь изменить построение графика :(

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash - я честно говоря, не вполне понял, что надо закрасить., но вообще закрашивание делается рисованием поверх рисунка цветом фона

Например, чтобы закрасить нижние 20 точек экрана - нужно нарисовать в той области закрашенный прямоугольник (не забыв предварительно выбрать для закраски цвет фона):

tft.fillRect(0, tft.height() -20, tft.width(), tft.height());

 

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

А как их соединять по горизонтали? Также точками, или есть еще какието команды?

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash пишет:

А как их соединять по горизонтали? Также точками, или есть еще какието команды?

кого "их"?

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

b707 пишет:

ShadowFlash - я честно говоря, не вполне понял, что надо закрасить., но вообще закрашивание делается рисованием поверх рисунка цветом фона

Например, чтобы закрасить нижние 20 точек экрана - нужно нарисовать в той области закрашенный прямоугольник (не забыв предварительно выбрать для закраски цвет фона):

tft.fillRect(0, tft.height() -20, tft.width(), tft.height());

 

Вот так должно быть

Сделал тоже через опу как сам график, поэтому все закрашивается очень медленно, рисовалось все линиями. Спасибо за идею с прямоугольником, попробую

 

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

b707 пишет:

ShadowFlash пишет:

А как их соединять по горизонтали? Также точками, или есть еще какието команды?

кого "их"?

Sonologist пишет:

вертикальными линиями от оси абсцисс

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

Ворота пишет:

ShadowFlash пишет:
не советовать что то поменять

Если ты хочешь ничего не менять, но чтобы при этом поведение программы поменялось, то ты ошибся форумом. Тебе вот сюда или вот сюда. Там есть соответствующие специалисты.

Вам плятят за то что вы под каждой темой чтото пишете? Не зная ответа на вопрос, лишь бы написать?

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash пишет:

Вот так должно быть

о, наконец-то понял

 

Цитата:
все закрашивается очень медленно, рисовалось все линиями. Спасибо за идею с прямоугольником, попробую

одним прямоугольником не обойдетесь, посмотрите, есть ли в библиотеке метод fillTriangle(). Если да - область под каждой парой точек разбиваете на прямоугольник и треугольник, каждый закрашиваете. Должно работать существенно быстрее линий

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash пишет:

Вам плятят за то что вы под каждой темой чтото пишете? Не зная ответа на вопрос, лишь бы написать?

не огрызайтесь, Ворота человек хороший, он просто резковат иногда...

2Ворота - не трогай парня :). он нормальный вопрос задал, просто спервого раза обьяснил кривовато.

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

b707 пишет:

о, наконец-то понял

одним прямоугольником не обойдетесь, посмотрите, есть ли в библиотеке метод fillTriangle(). Если да - область под каждой парой точек разбиваете на прямоугольник и треугольник, каждый закрашиваете. Должно работать существенно быстрее линий

Да есть, сегодня займусь, спасибо

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ShadowFlash пишет:

Сделал тоже через опу как сам график, поэтому все закрашивается очень медленно, рисовалось все линиями. Спасибо за идею с прямоугольником, попробую

рисовать надо было 

void drawFastVLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color); 
void drawFastHLine(uin86_t x0, uin86_t y0, uint8_t length, uint16_t color); 

 

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

xDriver пишет:

ShadowFlash пишет:

Сделал тоже через опу как сам график, поэтому все закрашивается очень медленно, рисовалось все линиями. Спасибо за идею с прямоугольником, попробую

рисовать надо было 

void drawFastVLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color); 
void drawFastHLine(uin86_t x0, uin86_t y0, uint8_t length, uint16_t color); 

 

Что имеете ввиду, сам график или закрашивание графика?

В любом случае, на сколько мне известно нельзя рисовать операторами drawFastHLine и drawFastVLine по диагонали

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ShadowFlash пишет:

xDriver пишет:

ShadowFlash пишет:

Сделал тоже через опу как сам график, поэтому все закрашивается очень медленно, рисовалось все линиями. Спасибо за идею с прямоугольником, попробую

рисовать надо было 

void drawFastVLine(uint16_t x0, uint16_t y0, uint16_t length, uint16_t color); 
void drawFastHLine(uin86_t x0, uin86_t y0, uint8_t length, uint16_t color); 

 

Что имеете ввиду, сам график или закрашивание графика?

В любом случае, на сколько мне известно нельзя рисовать операторами drawFastHLine и drawFastVLine по диагонали

ну очивидно же! про закраску.

 

а илюзий на счет fillrect и filltriangle я бы не строил, дольше вычислять координаты вершин будете, а в итоге они выливаются в drawline и drawpixel.

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash пишет:

В любом случае, на сколько мне известно нельзя рисовать операторами drawFastHLine и drawFastVLine по диагонали

еще бы :))))

Ведь это же Fast Vertical Line  :))))     И Horizontal

b707
Offline
Зарегистрирован: 26.05.2017

xDriver пишет:

дольше вычислять координаты вершин будете, а в итоге они выливаются в drawline и drawpixel.

координаты там вычислять не нужно вовсе, они все уже при рисовании самого графика вычислены. Другой вопрос, что закраска фигур, скорее всего, и правда реализована через линии... лень смотреть библиотеку :)

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

b707 пишет:

xDriver пишет:

дольше вычислять координаты вершин будете, а в итоге они выливаются в drawline и drawpixel.

координаты там вычислять не нужно вовсе, они все уже при рисовании самого графика вычислены. Другой вопрос, что закраска фигур, скорее всего, и правда реализована через линии... лень смотреть библиотеку :)

Я думаю что угодно будет быстрее чем мой способ :D

#include "Adafruit_GFX.h"
#include "MCUFRIEND_kbv.h"
MCUFRIEND_kbv tft;
#define G 0x4FE0
#define GT 0x44A3
#define B 0x029F
#define R 0x8986
int prev = 31;
int p0 = 31;
int p1 = 106;
int p2 = 181;
int p3 = 256;
int p4 = 331;
int p5 = 406;
int p6 = 500;
int t0 = 12;
int t1 = 6;
int t2 = 3;
int t3 = 20;
int t4 = 15;
int t5 = 24;
int r1 = 2;
int r2 = 4;
int y;
int x;
int h = 10;
void setup() {
  tft.reset();
  Serial.begin(9600);
  uint16_t ID = tft.readID();
  tft.begin(ID);
  tft.setRotation(0);
  tft.invertDisplay(true);
  tft.fillScreen(0xCC92);
  tft.invertDisplay(1);

  int val0 = map(t0, 0, 30, 31, 315);
  int val1 = map(t1, 0, 30, 31, 315);
  int val2 = map(t2, 0, 30, 31, 315);
  int val3 = map(t3, 0, 30, 31, 315);
  int val4 = map(t4, 0, 30, 31, 315);
  int val5 = map(t5, 0, 30, 31, 315);
  int valr0 = val0;
  int valr1 = val1;
  int valr2 = val2;
  int valr3 = val3;
  int valr4 = val4;
  int valr5 = val5;
  Serial.println(val0);
  Serial.println(val1);
  Serial.println(val2);
  Serial.println(val3);
  Serial.println(val4);
  Serial.println(val5);
  // tft.drawFastVLine(20, 0, 300, YELLOW);
  // for (uint16_t a = 0; a < 5; a++) {
  // tft.drawLine(50, 50 + a, 100, 100 + a, b);
  // }
  // tft.fillCircle(8, 310, 8, G);
  // tft.fillCircle(8, 310, 4, GT);

  /* for (uint16_t a = 0; a < 3; a++) {
     tft.drawLine(40, 40 + a, 400, 40 + a, B);
     tft.drawLine(40 + a, 40, 40 + a, 500, B);

    }
    tft.fillTriangle(46,460,36,460,41,480,B);
    tft.fillTriangle(300,46,300,36,320,41,B);
    tft.setCursor(25,280);
    tft.setTextColor(B);
    tft.setTextSize(2);
    tft.setRotation(1);
    tft.println("0");
    tft.fillCircle(41, 279, 3, B);
    tft.setCursor(25,218);
    tft.println("7");
    tft.fillCircle(41, 223, 3, B);
    tft.setCursor(15,161);
    tft.println("14");
    tft.fillCircle(41, 167, 3, B);
    tft.setCursor(15,103);
    tft.println("21");
    tft.fillCircle(41, 111, 3, B);
    tft.setCursor(15,47);
    tft.println("28");
    tft.fillCircle(41, 54, 3, B);
    tft.setCursor(18,9);
    tft.println("C");
    for (uint16_t a = 0; a < 2; a++) {
    tft.drawCircle(8, 9, 3 - a, B);
    }
  */
  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(30, 30 + a, 400, 30 + a, B);
    tft.drawLine(30 + a, 30, 30 + a, 500, B);

  }
  tft.fillTriangle(36, 460, 26, 460, 31, 480, B);
  tft.fillTriangle(300, 36, 300, 26, 320, 31, B);
  tft.setCursor(13, 9);
  tft.setTextColor(B);
  tft.setTextSize(2);
  tft.setRotation(1);
  tft.println("C");
  for (uint16_t a = 0; a < 2; a++) {
    tft.drawCircle(8, 9, 3 - a, B);
  }
  tft.setRotation(1);
  tft.fillCircle(p0, 288, 3, B);
  tft.setCursor(28, 295);
  tft.println("1");

  tft.fillCircle(p1, 288, 3, B);
  tft.setCursor(101, 295);
  tft.println("2");

  tft.fillCircle(p2, 288, 3, B);
  tft.setCursor(176, 295);
  tft.println("3");

  tft.fillCircle(p3, 288, 3, B);
  tft.setCursor(251, 295);
  tft.println("4");

  tft.fillCircle(p4, 288, 3, B);
  tft.setCursor(325, 295);
  tft.println("5");

  tft.fillCircle(p5, 288, 3, B);
  tft.setCursor(400, 295);
  tft.println("6");

  tft.setRotation(0);

  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(val0, p0 + a, val1, p1 + a, B);
  }
  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(val1, p1 + a, val2, p2 + a, B);
  }
  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(val2, p2 + a, val3, p3 + a, B);
  }
  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(val3, p3 + a, val4, p4 + a, B);
  }
  for (uint16_t a = 0; a < 3; a++) {
    tft.drawLine(val4, p4 + a, val5, p5 + a, B);
  }
  for (uint16_t a = 0; a < 2; a++) {
    tft.drawFastVLine(val5 + a, p5, 75, B);
  }



  for (int a = 10; a < 29; a++) {
    tft.drawFastVLine(val5, prev, h, B);
    prev = prev + h + h;
  }
  prev = 31;
  for (int a = 10; a < 25; a++) {
    tft.drawFastVLine(val4, prev, h, B);
    prev = prev + h + h;
  }
  prev = 31;
  for (int a = 10; a < 21; a++) {
    tft.drawFastVLine(val3, prev, h, B);
    prev = prev + h + h;
  }
  prev = 31;
  for (int a = 10; a < 18; a++) {
    tft.drawFastVLine(val2, prev, h, B);
    prev = prev + h + h;
  }
  prev = 31;
  for (int a = 0; a < 4; a++) {
    tft.drawFastVLine(val1, prev, h, B);
    prev = prev + h + h;
  }
  prev = 31;
  for (int a = 0; a < 0; a++) {
    tft.drawFastVLine(val0, prev, h, B);
    prev = prev + h + h;
  }
  prev = 31;
  tft.fillCircle(val0, p0, r2, G);
  tft.fillCircle(val0, p0, r1, GT);

  tft.fillCircle(val1, p1, r2, G);
  tft.fillCircle(val1, p1, r1, GT);

  tft.fillCircle(val2, p2, r2, G);
  tft.fillCircle(val2, p2, r1, GT);

  tft.fillCircle(val3, p3, r2, G);
  tft.fillCircle(val3, p3, r1, GT);

  tft.fillCircle(val4, p4, r2, G);
  tft.fillCircle(val4, p4, r1, GT);

  tft.fillCircle(val5, p5, r2, G);
  tft.fillCircle(val5, p5, r1, GT);


// ТУТ ПОШЛА ЗАКРАСКА ГРАФИКА
  for (uint16_t a = 0; a < 500; a++) {
    tft.drawLine(val0, p0, val1, p1, R);
    if (val0 < val1) {
      if (val1 == 30) {
        val0 = val0 - 1;
        if (val0 == 30) {
          break;
        }
      }
      if (val0 == 30) {
        val1 = val1 - 1;
        if (val1 == 30) {
          break;
        }
      } else {
        val0 = val0 - 1;
        val1 = val1 - 1;
      }
    } else {
      if (val0 == 30) {
        val1 = val1 - 1;
        if (val1 == 30) {
          break;
        }
      }
      if (val1 == 30) {
        val0 = val0 - 1;
        if (val0 == 30) {
          break;
        }
      } else {
        val1 = val1 - 1;
        val0 = val0 - 1;
      }
    }
  }

  for (uint16_t a = 0; a < 500; a++) {
    tft.drawLine(valr1, p1, valr2, p2, R);
    if (valr1 < valr2) {
      if (valr2 == 30) {
        valr1 = valr1 - 1;
        if (valr1 == 30) {
          break;
        }
      }
      if (valr1 == 30) {
        valr2 = valr2 - 1;
        if (valr2 == 30) {
          break;
        }
      } else {
        valr1 = valr1 - 1;
        valr2 = valr2 - 1;
      }
    } else {
      if (valr1 == 30) {
        valr2 = valr2 - 1;
        if (valr2 == 30) {
          break;
        }
      }
      if (valr2 == 30) {
        valr1 = valr1 - 1;
        if (valr1 == 30) {
          break;
        }
      } else {
        valr2 = valr2 - 1;
        valr1 = valr1 - 1;
      }
    }
  }

  for (uint16_t a = 0; a < 500; a++) {
    tft.drawLine(val2, p2, val3, p3, R);
    if (val2 < val3) {
      if (val3 == 30) {
        val2 = val2 - 1;
        if (val2 == 30) {
          break;
        }
      }
      if (val2 == 30) {
        val3 = val3 - 1;
        if (val3 == 30) {
          break;
        }
      } else {
        val2 = val2 - 1;
        val3 = val3 - 1;
      }
    } else {
      if (val2 == 30) {
        val3 = val3 - 1;
        if (val3 == 30) {
          break;
        }
      }
      if (val3 == 30) {
        val2 = val2 - 1;
        if (val2 == 30) {
          break;
        }
      } else {
        val3 = val3 - 1;
        val2 = val2 - 1;
      }
    }
  }

  for (uint16_t a = 0; a < 500; a++) {
    tft.drawLine(valr3, p3, valr4, p4, R);
    if (valr3 < valr4) {
      if (valr4 == 30) {
        valr3 = valr3 - 1;
        if (valr3 == 30) {
          break;
        }
      }
      if (valr3 == 30) {
        valr4 = valr4 - 1;
        if (valr4 == 30) {
          break;
        }
      } else {
        valr3 = valr3 - 1;
        valr4 = valr4 - 1;
      }
    } else {
      if (valr3 == 30) {
        valr4 = valr4 - 1;
        if (valr4 == 30) {
          break;
        }
      }
      if (valr4 == 30) {
        valr3 = valr3 - 1;
        if (valr3 == 30) {
          break;
        }
      } else {
        valr4 = valr4 - 1;
        valr3 = valr3 - 1;
      }
    }
  }

  for (uint16_t a = 0; a < 500; a++) {
    tft.drawLine(val4, p4, val5, p5, R);
    if (val4 < val5) {
      if (val5 == 30) {
        val4 = val4 - 1;
        if (val4 == 30) {
          break;
        }
      }
      if (val4 == 30) {
        val5 = val5 - 1;
        if (val5 == 30) {
          break;
        }
      } else {
        val4 = val4 - 1;
        val5 = val5 - 1;
      }
    } else {
      if (val4 == 30) {
        val5 = val5 - 1;
        if (val5 == 30) {
          break;
        }
      }
      if (val5 == 30) {
        val4 = val4 - 1;
        if (val4 == 30) {
          break;
        }
      } else {
        val5 = val5 - 1;
        val4 = val4 - 1;
      }
    }
  }

  for (uint16_t a = 0; a < 500; a++) {
    tft.drawLine(valr5, p5, valr5, p6, R);
    valr5 = valr5 - 1;
    if (valr5 == 30) {
      break;
    }
  }

}

void loop() {
  // put your main code here, to run repeatedly:

}

 

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash пишет:

Я думаю что угодно будет быстрее чем мой способ :D

вы бы не хвастались, а давно переписали бы по-нормальному. И начните с добавления массива для точек графика - а то рисование 6 точек шестью одинаковыми блоками кода просто режет глаз.

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

b707 пишет:

ShadowFlash пишет:

Я думаю что угодно будет быстрее чем мой способ :D

вы бы не хвастались, а давно переписали бы по-нормальному. И начните с добавления массива для точек графика - а то рисование 6 точек шестью одинаковыми блоками кода просто режет глаз.

Думаю пока памяти хватает, не критично. А так какие еще есть советы, кроме массивов?

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash пишет:

Думаю пока памяти хватает, не критично. А так какие еще есть советы, кроме массивов?

после такого ответа - никакие.

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

b707 пишет:

после такого ответа - никакие.

Как все у вас строго :D

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash пишет:

Как все у вас строго :D

просто копипаста блоков кода вместо использования циклов - это признак полного неумения программировать. И "улучшать" такой код без перехода на массив - бессмысленно.

Более того, я считю саму просьбу что-то подсказать по такому коду - неуважением к тому. кто будет копаться в этой "помойке"

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

b707 пишет:

это признак полного неумения программировать.

Дык так и есть

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash пишет:

Дык так и есть

ну тогда начните с изучения циклов. Ваш код в итоге сократится раза в 4 и "улучшать" его станет в 6 раз проще.

Не говоря уж о том, что код построения графика, рассчитанный на жестко заданное число точек, на 6 - и не работающий скажем на 3х точках или 300х -никому не нужная бредятина.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ShadowFlash пишет:

Думаю пока памяти хватает, не критично. А так какие еще есть советы, кроме массивов?

b707, ты по-прежнему считаешь, что

b707 пишет:
он нормальный вопрос задал, просто спервого раза обьяснил кривовато.

???

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ShadowFlash пишет:

Дык так и есть

Тогда слушай, что тебе знающие люди говорят и делай, а не думай, что критично, а что - нет.

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

b707 пишет:

Не говоря уж о том, что код построения графика, рассчитанный на жестко заданное число точек, на 6 - и не работающий скажем на 3х точках или 300х -никому не нужная бредятина.

Всмысле никому? а мне?) Будем мониторить погоду за последние 6 дней

 

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

О, воротА с ноги ворвались :D

b707
Offline
Зарегистрирован: 26.05.2017

Ворота пишет:

b707, ты по-прежнему считаешь, что он нормальный вопрос задал

ну вопрос то его от этого не изменился :)

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ShadowFlash пишет:

Не зная ответа на вопрос, лишь бы написать?

В том-то и дело, что я знаю ответ на вопрос и он таков: без изменений в программе ничего не изменится. Так что просьба из твоего первого поста невыполнима в принципе. А если вместо признания косяка ты начинаешь качать права - никогда не будешь программировать. Перед компьютером качать права бесполезно - он не понимает.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

b707 пишет:

ну вопрос то его от этого не изменился :)

Так вопрос-то был не то, чтобы нормальный. Вопрос был "как сделать, чтобы закрашивалось, но в программе ничего не менять". Ответ динственный - никак :)

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash пишет:

Всмысле никому? а мне?) Будем мониторить погоду за последние 6 дней

я так понимаю - пока вы вопрос задавали - тон был вежливым и уважительным. а как ответ получили - можно и не миндальничать?

ну-ну. Не плюй в колодец...

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

Ворота пишет:

b707 пишет:

ну вопрос то его от этого не изменился :)

Так вопрос-то был не то, чтобы нормальный. Вопрос был "как сделать, чтобы закрашивалось, но в программе ничего не менять". Ответ динственный - никак :)

Ну все правильно, менять нельзя, но добавлять то можно

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

b707 пишет:

ShadowFlash пишет:

Всмысле никому? а мне?) Будем мониторить погоду за последние 6 дней

я так понимаю - пока вы вопрос задавали - тон был вежливым и уважительным. а как ответ получили - можно и не миндальничать?

ну-ну. Не плюй в колодец...

Если Вас как то задел - извините, не хотел.

b707
Offline
Зарегистрирован: 26.05.2017

Ворота пишет:

если вместо признания косяка ты начинаешь качать права - никогда не будешь программировать. Перед компьютером качать права бесполезно - он не понимает.

ну да, ошибся я. Думал нормальный новичок, зочет научится. а оказалась

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

добавили, рисуется медлено, чего еще хотите ?

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash пишет:

Ну все правильно, менять нельзя

"нельзя" или просто лень?

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

Охх, что мне не нравится в форумах, это то что большинство такие высокомерные, до жути, как будто решают вопросы мировых масштабов.

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

b707 пишет:

ShadowFlash пишет:

Ну все правильно, менять нельзя

"нельзя" или просто лень?

Изначальный вопрос гласит нельзя, моя цель на сейчас, что бы все попросту работало, оптимизация это уже следующий шаг. Если конечно памяти хватит)

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ShadowFlash пишет:

Ну все правильно, менять нельзя, но добавлять то можно

Ты опять пытаешься выкрутиться, вместо того, чтобы просто признать неверную формулировку вопроса. Если у тебя таков обычный стиль поведения - тебе будет очень трудно програмировать. Ты будешь вечно "не пойми кому" доказывать, что ты-то написал всё правильно, а тупой компилятор ... Привыкай спокойно признавать ошибки и переделывать. Без этого в программировании никак. И нормально воспринимать шутки (типа моего первого поста), тоже привыкай. Не программируют без таких навыков..

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

Ворота пишет:

ShadowFlash пишет:

Ну все правильно, менять нельзя, но добавлять то можно

Ты опять пытаешься выкрутиться, вместо того, чтобы просто признать неверную формулировку вопроса. Если у тебя таков обычный стиль поведения - тебе будет очень трудно програмировать. Ты будешь вечно "не пойми кому" доказывать, что ты-то написал всё правильно, а тупой компилятор ... Привыкай спокойно признавать ошибки и переделывать. Без этого в программировании никак. И нормально воспринимать шутки (типа моего первого поста), тоже привыкай. Не программируют без таких навыков..

Хмм. Я перечитал вопрос и не понял неверно сформулировал, я написал именно то, что имел ввиду. Ошибки признаю, в которых действитель ошибся, например код - помойка :) На счет шуток уж незнаю, вы второй раз отвечаете на мой вопрос, и второй раз смешно "шутите".

b707
Offline
Зарегистрирован: 26.05.2017

Ворота, да брось ты его. Типичный "мне нужно что бы работало сейчас, а разбираться я буду потом". Напишет еще пару сообщений и уйдет навсегда

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Да, b707, после #42 я уже всё понял.

О-о-о, так это ж qwerty13rus! Знал бы - и "не торговался бы". Нехрен ники менять. Не менял бы, я бы и не писал ничего :))))

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ShadowFlash пишет:
На счет шуток уж незнаю, вы второй раз отвечаете на мой вопрос, и второй раз смешно "шутите".
Так, а я про что? Я и говорю - привыкай!

b707
Offline
Зарегистрирован: 26.05.2017

Ворота пишет:

О-о-о, так это ж qwerty13rus

что, неужели? Да, ну неправда...

Столько времени ардуино занимается - а до сих пор массивы не знает? Неужели такой тупой?

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

Уже на оскорбления перешли. Об этом я и говорю, такое самомнение как будто вчера спасли призидента. b707 или тебя в детстве обидели, а теперь таким образом хочешь самоутвердиться?

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

Ворота пишет:

ShadowFlash пишет:
На счет шуток уж незнаю, вы второй раз отвечаете на мой вопрос, и второй раз смешно "шутите".
Так, а я про что? Я и говорю - привыкай!

Из за одного тебя привыкать? Много чести. Обойдусь без таких "полезных" советов

b707
Offline
Зарегистрирован: 26.05.2017

ShadowFlash пишет:

Уже на оскорбления перешли. Об этом я и говорю, такое самомнение как будто вчера спасли призидента. b707 или тебя в детстве обидели, а теперь таким образом хочешь самоутвердиться?

По сути возражения есть? Ну что-нибудь типа "нет, я не кверти13, вы перепутали"?

Потому как если угадали правильно - то и пенять нечего. Сколько вы тут и на Амперке тем создали - в основном с элементарными, простейшими вопросами - а все не можете понять, что надо сесть за учебники и пройти хотя бы базовый курс, все тешите себя иллюзиями, что "вот сейчас эту проблему решу - а дальше получится". НЕ ПОЛУЧИТСЯ.

Я в ваши темы на Амперке уже стараюсь не заходить - тупость одна. И тут бы слова не сказал. если б знал, кто пишет.

ShadowFlash
Offline
Зарегистрирован: 20.06.2019

b707 пишет:

ShadowFlash пишет:

Уже на оскорбления перешли. Об этом я и говорю, такое самомнение как будто вчера спасли призидента. b707 или тебя в детстве обидели, а теперь таким образом хочешь самоутвердиться?

По сути возражения есть? Ну что-нибудь типа "нет, я не кверти13, вы перепутали"?

Потому как если угадали правильно - то и пенять нечего. Сколько вы тут и на Амперке тем создали - в основном с элементарными, простейшими вопросами - а все не можете понять, что надо сесть за учебники и пройти хотя бы базовый курс, все тешите себя иллюзиями, что "вот сейчас эту проблему решу - а дальше получится". НЕ ПОЛУЧИТСЯ.

Я в ваши темы на Амперке уже стараюсь не заходить - тупость одна. И тут бы слова не сказал. если б знал, кто пишет.

Я уже писал что кверти это я, пароля от него нет. Вот сейчас эту проблему решу, а дальше буду разбираться с остальными? Проблемы надо решать по мере их поступления. Думаю обойдусь без таких через чур умных советчиков