Странное отображение на TFT LCD 3,5" дисплее (arduino)

Возникла проблема - когда информация выводится на дисплей(320х480), она выводится в квадратах - то есть всё отображается, но разбито на отдельные части. Как это исправить? введите сюда описание изображения

#include <Adafruit_GFX.h>    // Ядро графической библиотеки
#include <Adafruit_TFTLCD.h> // Специфика аппаратного обеспечения
#include <MCUFRIEND_kbv.h>   // Специфика работы с разными чипами
#include "Ucglib.h"

#define BLACK   0x0000 // черный
#define BLUE    0x001F // синий
#define RED     0xF800 // красный
#define GREEN   0x07E0 // зелёный
#define CYAN    0x07FF // голубой
#define MAGENTA 0xF81F // малиновый
#define YELLOW  0xFFE0 // жёлтый
#define WHITE   0xFFFF // белый

MCUFRIEND_kbv tft;

const int trigPin = 6;
const int echoPin = 5;
int Ymax = 320;
int Xmax = 480;
int base = 8;
int pos = base+6;
int deg=0;
int x;
int val =200;
int j = 2;
Servo myServo; 

long duration;
int distance;
int k;

void setup(void)
{
 delay(1000);
  myServo.write(80);
 tft.reset(); //сброс дисплея
 uint16_t identifier = tft.readID(); //чтение идентификатора чипа
 tft.begin(identifier); //инициализация дисплея
 tft.invertDisplay(true); //установка чёрной подсветки для ILI9481
 
 pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
 pinMode(echoPin, INPUT); // Sets the echoPin as an Input
 Serial.begin(9600);
 myServo.attach(3); // Defines on which pin is the servo motor attached

}

void loop(void)
{
 tft.setRotation(1);
 

fix(); 

  for ( x=80; x >= 10; x--){  
    
 distance = calculateDistance();
 tft.println(distance); 
 
k = map(x, 80, 10, 15,480); 
 myServo.write(k);
 if (distance < 30){
   int f = x+6;
   //tft.fillScreen(BLACK);
tft.drawLine(Xmax/2, pos, -val*cos(radians(f*2)), val*sin(radians(f*2)), GREEN);//(Xmax/2, Ymax, -val*cos(radians(f*2)), val*sin(radians(f*2)));                     !!!!!!
 }
//ucg.setColor(0, 207, 0);
//ucg.drawLine(Xmax/2, pos, -200*cos(radians(x*2)),200*sin(radians(x*2)));

int d = x+1;
//ucg.setColor(0, 207, 0);
                        //ucg.drawLine(Xmax/2, pos, -200*cos(radians(d*2)),200*sin(radians(d*2)));
int c = x+2;
//ucg.setColor(0, 207, 0);
                          //ucg.drawLine(Xmax/2, pos, -200*cos(radians(c*2)),200*sin(radians(c*2)));
int b = x+3;
//ucg.setColor(0, 102, 0);
                           //ucg.drawLine(Xmax/2, pos, -200*cos(radians(b*2)),200*sin(radians(b*2)));
int a = x+4;
//ucg.setColor(0, 102, 0);
                         //ucg.drawLine(Xmax/2, pos, -200*cos(radians(a*2)),200*sin(radians(a*2)));
int e = x+5;
tft.drawLine(Xmax/2, pos, -200*cos(radians(e*2)),200*sin(radians(e*2)), GREEN);
 tft.setTextColor(RED);
 tft.setCursor(160,0);
 //tft.setPrintDir(2);
 tft.print("Deg :"); 
 deg = map (x, 80, 10 , 0, 180); 
 tft.setCursor(120,0);
//  tft.setPrintDir(2);
 tft.print(deg);
 tft.setCursor(10,0);
 tft.print(distance); 
 tft.setTextColor(BLUE);
 tft.setCursor(90,38);
 //tft.setPrintDir(2);
 tft.print("0.25");
 tft.setCursor(90,70);
 tft.print("0.50");
 tft.setCursor(90, 110);
 tft.print("1.00");
  }
 
 
 //tft.fillScreen(BLACK);
 
 fix();

  
 for ( x=10; x <= 80; x++)
 {  
   distance = calculateDistance();
   Serial.println(distance); 
   k = map(x, 10, 80, 165,15); 
 myServo.write(k);
 if (distance < 10){
   int e = x-5;
  // tft.setTextColor(RED);
   tft.drawLine(Xmax/2, pos, -val*cos(radians(e*2)),val*sin(radians(e*2)), RED);
 }
 
 
 tft.drawLine(Xmax/2, pos, -200*cos(radians(x*2)),200*sin(radians(x*2)), GREEN);

int a = x-1;

 tft.drawLine(Xmax/2, pos, -200*cos(radians(a*2)),200*sin(radians(a*2)), GREEN);

int b = x-2;
  tft.drawLine(Xmax/2, pos, -200*cos(radians(b*2)),200*sin(radians(b*2)), GREEN);

int c = x-3;
  tft.drawLine(Xmax/2, pos, -200*cos(radians(c*2)),200*sin(radians(c*2)), GREEN);

int d = x-4;
 tft.drawLine(Xmax/2, pos, -200*cos(radians(d*2)),200*sin(radians(d*2)), WHITE);
 tft.setTextColor(RED);
 tft.setCursor(160,0);
 tft.print("Deg :"); 
 deg = map (x, 10, 80 , 0, 180); 
 tft.setCursor(120,0);
 tft.print(deg); 
 tft.setCursor(10,0);
 tft.print(distance); 
 tft.setTextColor(BLUE);
 tft.setCursor(90,38);
 tft.print("0.25");
 tft.setCursor(90,70);
 tft.print("0.50");
 tft.setCursor(90,110);
 tft.print("1.00");


 }
 //tft.fillScreen(BLACK);
 
}







void fix(){
//tft.setTextColor(RED);
//tft.drawDisc(Xmax/2, base, 5, UCG_DRAW_LOWER_RIGHT);
//tft.drawDisc(Xmax/2, base, 5, UCG_DRAW_LOWER_LEFT);



//tft.setColor(225, 255, 50);
tft.drawCircle(80, base, 115, UCG_DRAW_LOWER_RIGHT);
tft.drawCircle(80, base, 115, UCG_DRAW_LOWER_LEFT);  
 
tft.drawCircle(80, base, 78, UCG_DRAW_LOWER_RIGHT);
tft.drawCircle(80, base, 78, UCG_DRAW_LOWER_LEFT);

tft.drawCircle(80, base, 40, UCG_DRAW_LOWER_RIGHT);
tft.drawCircle(80, base, 40, UCG_DRAW_LOWER_LEFT);

//tft.drawLine(0, base, 160,base);


//tft.drawRect(100, 0, 30, 30, WHITE); 
 

 
}


int calculateDistance(){ 
 
 digitalWrite(trigPin, LOW); 
 delayMicroseconds(2);
 // Sets the trigPin on HIGH state for 10 micro seconds
 digitalWrite(trigPin, HIGH); 
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH); // Reads the echoPin, returns the sound wave travel time in microseconds
 distance= duration*0.034/2;
 return distance;
}```

Ответы (0 шт):