Скорость работы дисплеев
- Войдите на сайт для отправки комментариев
Втр, 19/04/2016 - 17:35
Всем привет!
Имеется дисплей ILI9340. Многие видели такой или похожий.
Работает нормально. Но скорость полного обновления экрана у него больно уж низкая. Заливка наверное пол-секунды и секунду выполняется.
У NOKIA 108 дисплей на ILI9163C и на нем можно смотреть видео. Да, разрешение всего 160х128, но видео работает без фризов.
В чем подвох? Драйвер быстрее, или в телефон проц мощнее, или библиотеки Ардуино такие медленные?
Скорее всего, библиотеки по-разному написаны.
Плюс скорость заливки зависит от разрешения.
Ещё от интерфеса зависит - последовательный (медленный) или параллельный (быстрый).
Ещё от интерфеса зависит - последовательный (медленный) или параллельный (быстрый).
Как определить какой интерфейс используется?
Можно ли его выбрать програмно?
Явите миру чудо - покажите, с каким дисплеем работаете.
Явите миру чудо - покажите, с каким дисплеем работаете.
http://ru.aliexpress.com/item/1pcs-2-4-inch-New-For-UNO-R2-R3-A137-2-4-TFT-LCD-Shield-Touch/1928136731.html
Так сойдет?
Так сойдет?
Ну, если б Вы ещё и скетч показали ... а если и библиотеку, которой пользуетесь, то было бы полное счастье.
01
// IMPORTANT: Adafruit_TFTLCD LIBRARY MUST BE SPECIFICALLY
02
// CONFIGURED FOR EITHER THE TFT SHIELD OR THE BREAKOUT BOARD.
03
// SEE RELEVANT COMMENTS IN Adafruit_TFTLCD.h FOR SETUP.
04
05
#include <Adafruit_GFX.h> // Core graphics library
06
#include <Adafruit_TFTLCD.h> // Hardware-specific library
07
08
// The control pins for the LCD can be assigned to any digital or
09
// analog pins...but we'll use the analog pins as this allows us to
10
// double up the pins with the touch screen (see the TFT paint example).
11
#define LCD_CS A3 // Chip Select goes to Analog 3
12
#define LCD_CD A2 // Command/Data goes to Analog 2
13
#define LCD_WR A1 // LCD Write goes to Analog 1
14
#define LCD_RD A0 // LCD Read goes to Analog 0
15
16
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
17
18
// When using the BREAKOUT BOARD only, use these 8 data lines to the LCD:
19
// For the Arduino Uno, Duemilanove, Diecimila, etc.:
20
// D0 connects to digital pin 8 (Notice these are
21
// D1 connects to digital pin 9 NOT in order!)
22
// D2 connects to digital pin 2
23
// D3 connects to digital pin 3
24
// D4 connects to digital pin 4
25
// D5 connects to digital pin 5
26
// D6 connects to digital pin 6
27
// D7 connects to digital pin 7
28
// For the Arduino Mega, use digital pins 22 through 29
29
// (on the 2-row header at the end of the board).
30
31
// Assign human-readable names to some common 16-bit color values:
32
#define BLACK 0x0000
33
#define BLUE 0x001F
34
#define RED 0xF800
35
#define GREEN 0x07E0
36
#define CYAN 0x07FF
37
#define MAGENTA 0xF81F
38
#define YELLOW 0xFFE0
39
#define WHITE 0xFFFF
40
41
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
42
// If using the shield, all control and data lines are fixed, and
43
// a simpler declaration can optionally be used:
44
// Adafruit_TFTLCD tft;
45
46
47
void
setup
()
48
{
49
tft.reset();
50
51
uint16_t identifier = tft.readID();
52
tft.begin(identifier);
53
54
int
a, b, x1, y1,
55
w = (320),
56
h = (240);
57
tft.setRotation(1);
58
float
x2, y2, x3, y3, z2, z3;
59
long
c ;
60
tft.fillScreen(BLACK);
61
x1 = 160;
62
y1 = 120;
63
for
( a=1; a<=5; a++){
64
for
( b=1; b<=5; b++){
65
delay (500);
66
tft.fillScreen(BLACK);
67
68
for
(
int
i=0; i<=360; i+=1){
69
70
z2 = 3.14 * i / 180;
71
z3 = 3.14 * (i+4) / 180;
72
x2 = 160+80*sin(5*z2)*cos(a*z2);
73
x3 = 160+80*sin(5*z3)*cos(a*z3);
74
y2 = 120+80*cos(5*z2)*sin(b*z2);
75
y3 = 120+80*cos(5*z3)*sin(b*z3);
76
c = random (16, 65000);
77
78
79
tft.drawLine(x1, y1, x3, y3, c);
80
x1=x2;
81
y1=y2;
82
83
84
}
85
}
86
}
87
}
88
void
loop
()
89
{
90
}
Этот скетч рисует забавные фигурки цветными линиями. На момент написания я особо не вникал в управление цветом и рандомизатор накидал как умел.
Дисплей нормальный, либа фуфло полное, она и тормозит. Правда и в коде у Вас синусы с косинусами - не образчик скорости. Сильней всего тормозня либы проявляется на заливке всего экрана цветом.
Дисплей нормальный, либа фуфло полное, она и тормозит. Правда и в коде у Вас синусы с косинусами - не образчик скорости. Сильней всего тормозня либы проявляется на заливке всего экрана цветом.
А другие библиотеки есть для этого дисплея?
На счет "заливка пол-секунды" я слегка перегнул, но все равно до 25-30 фпс там далеко.
Много всякого есть под луной ;)
Прогнал для интереса код
01
int
m1 = millis();
02
for
(
byte
i=100;i;i--)
03
{
04
tft.fillScreen(0x0020);
05
06
}
07
int
m2 = millis();
08
char
s[10];
09
ltoa(m2-m1,s,10);
10
tft.drawString(0, 0,s, RED,1);
11
delay(3000);
Получил 7271. Т.е. экран перерисовывается за 72мсек или пошти 14ФПС. Но это на STM32 и самописной быстрой либой. Как илюстрация возможности экранчика.