Запустил сегодня дисплей на работе.
Дело было не только в "...бобине..."
В общем, был небольшой дефект разъёма.
Всё прозванивалось, вроде как нормально, но где-то видимо был "косяк".
Прогрел всё это дело феном, залил то, что прислал китаец (то, что выкладывал Бублик) и всё засветилось.
Немного омрачило радость то, что отображается картинка довольно медленно.
Ну да ладно, с этим как нибудь решим.
Tuchscreen ещё не испытывал - некогда пока что.
Всем большое спасибо за помощь и внимание к моей проблеме!
Успехов!
Парни, а как этот дисплей подружить в Due? На меге работает, переключаю порт и плату на Due и не компилируется код
Arduino: 1.5.6-r2 (Windows 7), Board: "Arduino Due (Programming Port)"
Build options changed, rebuilding all
In file included from UTFT_Demo_400x240.pde:13:
C:\Program Files (x86)\Arduino\libraries\UTFT/UTFT.h:64: fatal error: WProgram.h: No such file or directory
compilation terminated.
Этот дисплей заточен под 5 вольтовую МЕГУ у ДУЭ рабочее напряжение 3,3 вольта так что необходимо закоротить согласующие резисторные сборки (при трех вольтах они просто не нужны)
После общения с продавцом выяснилось, что основан на процессоре ILI9327 с 8-ми битным интерфейсом. Как упоминалось выше с актуальной UTFT подружить не удалось, из-за 8-ми битного интерфейса с библиотекой, что предоставил товарищ Бублик тоже, как я понимаю из-за иного расположения дата пинов. Переписывать библиотеку думалкой не дорос.
Продавец поделился рабочим кодом, у меня (MEGA 2560 IDE 1.05 и 1.5.6-r2) дисплей работет, тачскрин и SD не пробовал.
################
Из плюсов - работает.
Из минусов - работает медленно, нет шрифтов.
################
// ic:ili9327
#define LCD_RD A0
#define LCD_WR A1
#define LCD_RS A2
#define LCD_CS A3
#define LCD_REST A4
void Lcd_Writ_Bus(char VH)
{
unsigned char i,temp,data;
data=VH;
for(i=8;i<=9;i++)
{
temp=(data&0x01);
if(temp)
digitalWrite(i,HIGH);
else
digitalWrite(i,LOW);
data=data>>1;
}
for(i=2;i<=7;i++)
{
temp=(data&0x01);
if(temp)
digitalWrite(i,HIGH);
else
digitalWrite(i,LOW);
data=data>>1;
}
digitalWrite(LCD_WR,LOW);
digitalWrite(LCD_WR,HIGH);
}
void Lcd_Write_Com(char VH)
{
digitalWrite(LCD_RS,LOW);
Lcd_Writ_Bus(VH);
}
void Lcd_Write_Data(char VH)
{
digitalWrite(LCD_RS,HIGH);
Lcd_Writ_Bus(VH);
}
void Lcd_Write_Com_Data(int com,int dat)
{
Lcd_Write_Com(com);
Lcd_Write_Data(dat);
}
void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
{
Lcd_Write_Com(0x2a); // Set_column_address 4 parameters
Lcd_Write_Data(x1>>8);
Lcd_Write_Data(x1);
Lcd_Write_Data(x2>>8);
Lcd_Write_Data(x2);
Lcd_Write_Com(0x2b); // Set_page_address 4 parameters
Lcd_Write_Data(y1>>8);
Lcd_Write_Data(y1);
Lcd_Write_Data(y2>>8);
Lcd_Write_Data(y2);
Lcd_Write_Com(0x2c); // Write_memory_start
}
void Lcd_Init(void)
{
digitalWrite(LCD_REST,HIGH);
delay(5);
digitalWrite(LCD_REST,LOW);
delay(15);
digitalWrite(LCD_REST,HIGH);
delay(15);
digitalWrite(LCD_CS,HIGH);
digitalWrite(LCD_WR,HIGH);
digitalWrite(LCD_CS,LOW); //CS
Lcd_Write_Com(0xE9);
Lcd_Write_Data(0x20);
Lcd_Write_Com(0x11); //Exit Sleep
delay(100);
Lcd_Write_Com(0xD1);
Lcd_Write_Data(0x00);
Lcd_Write_Data(0x71);
Lcd_Write_Data(0x19);
Lcd_Write_Com(0xD0);
Lcd_Write_Data(0x07);
Lcd_Write_Data(0x01);
Lcd_Write_Data(0x08);
Lcd_Write_Com(0x36);
Lcd_Write_Data(0x48);
Lcd_Write_Com(0x3A);
Lcd_Write_Data(0x05);
Lcd_Write_Com(0xC1);
Lcd_Write_Data(0x10);
Lcd_Write_Data(0x10);
Lcd_Write_Data(0x02);
Lcd_Write_Data(0x02);
Lcd_Write_Com(0xC0); //Set Default Gamma
Lcd_Write_Data(0x00);
Lcd_Write_Data(0x35);
Lcd_Write_Data(0x00);
Lcd_Write_Data(0x00);
Lcd_Write_Data(0x01);
Lcd_Write_Data(0x02);
Lcd_Write_Com(0xC5); //Set frame rate
Lcd_Write_Data(0x04);
Lcd_Write_Com(0xD2); //power setting
Lcd_Write_Data(0x01);
Lcd_Write_Data(0x44);
Lcd_Write_Com(0xC8); //Set Gamma
Lcd_Write_Data(0x04);
Lcd_Write_Data(0x67);
Lcd_Write_Data(0x35);
Lcd_Write_Data(0x04);
Lcd_Write_Data(0x08);
Lcd_Write_Data(0x06);
Lcd_Write_Data(0x24);
Lcd_Write_Data(0x01);
Lcd_Write_Data(0x37);
Lcd_Write_Data(0x40);
Lcd_Write_Data(0x03);
Lcd_Write_Data(0x10);
Lcd_Write_Data(0x08);
Lcd_Write_Data(0x80);
Lcd_Write_Data(0x00);
Lcd_Write_Com(0x2A);
Lcd_Write_Data(0x00);
Lcd_Write_Data(0x00);
Lcd_Write_Data(0x00);
Lcd_Write_Data(0xeF);
Lcd_Write_Com(0x2B);
Lcd_Write_Data(0x00);
Lcd_Write_Data(0x00);
Lcd_Write_Data(0x01);
// Lcd_Write_Data(0x3F);
Lcd_Write_Data(0x8F); // on internet
Lcd_Write_Com(0x29); //display on
Lcd_Write_Com(0x2C); //display on
digitalWrite(LCD_CS,HIGH);
}
void H_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c)
{
unsigned int i,j;
Lcd_Write_Com(0x02c); //write_memory_start
digitalWrite(LCD_RS,HIGH);
digitalWrite(LCD_CS,LOW);
l=l+x;
Address_set(x,y,l,y);
j=l*2;
for(i=1;i<=j;i++)
{
Lcd_Write_Data(c);
}
digitalWrite(LCD_CS,HIGH);
}
void V_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c)
{
unsigned int i,j;
Lcd_Write_Com(0x02c); //write_memory_start
digitalWrite(LCD_RS,HIGH);
digitalWrite(LCD_CS,LOW);
l=l+y;
Address_set(x,y,x,l);
j=l*2;
for(i=1;i<=j;i++)
{
Lcd_Write_Data(c);
}
digitalWrite(LCD_CS,HIGH);
}
void Rect(unsigned int x,unsigned int y,unsigned int w,unsigned int h,unsigned int c)
{
H_line(x , y , w, c);
H_line(x , y+h, w, c);
V_line(x , y , h, c);
V_line(x+w, y , h, c);
}
void Rectf(unsigned int x,unsigned int y,unsigned int w,unsigned int h,unsigned int c)
{
unsigned int i;
for(i=0;i<h;i++)
{
H_line(x , y , w, c);
H_line(x , y+i, w, c);
}
}
void LCD_Clear(unsigned int j)
{
unsigned int i,m;
Lcd_Write_Com(0x02c); //write_memory_start
digitalWrite(LCD_RS,HIGH);
digitalWrite(LCD_CS,LOW);
Address_set(0,0,479,399);
for(i=0;i<480;i++)
for(m=0;m<400;m++)
{
Lcd_Write_Data(j);
}
digitalWrite(LCD_CS,HIGH);
}
void setup()
{
for(int p=2;p<10;p++)
{
pinMode(p,OUTPUT);
}
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,OUTPUT);
digitalWrite(A0, HIGH);
digitalWrite(A1, HIGH);
digitalWrite(A2, HIGH);
digitalWrite(A3, HIGH);
digitalWrite(A4, HIGH);
Lcd_Init();
LCD_Clear(0x00);
}
void loop()
{
for(int i=0;i<1000;i++)
{
Rect(random(300),random(300),random(300),random(300),random(65535)); // rectangle at x, y, with, hight, color
}
LCD_Clear(0x00);
}
Потратил часов 20 что бы подружить хоть с какой-то из графических библиотек, что нашел на просторах интернета, безрезультатно. Решил последовать совету много выше - текущий шилд в топку, а на сэкономленные за лекарства от нервов купить нормальный шилд.
Китайцы НЕПОБЕДИМЫ!!!
Или "счастливым" обладателям данного шилда, посвящается =)
Грустную историю о том как мне прислали вместо правильного шилда
такой как на верхнем фото, я рассказывал в 88 сообщении данной ветки. Но мы не привыкли отступать) и поискав продавана с наибольшим рейтингом и колличеством продаж я решил подстраховаться и перед заказом уточнить, что именно мне нужно. Китаец оказался очень отзывчивым и с радостью ответил на все мои вопросы и подтвердил, что продаваемый им дисплей собран именно на процессоре R61581 имеет разрешение 480х320 точек и 16ти битную шину данных - именно то, что на фотографии. Я успокоился и заказал две штуки.
Прошло три недели, вскрываю посылку... твою мать... и снова на меня смотрят те же унылые 8битные шилды на ILI9327, 8bit, 240x400..... Вот как теперь жить без веры в людей?
Делать нечего, будем строить на них. Огрызок UTFT присланной китайцем никак мне не нравился и было решено "модернизировать" последнюю на сегодня библиотеку Карлсена 2.77
// Enable or disable the use of a display shield designed for use on
// an Arduino Uno (or compatible) on an Arduino Mega
//
// ** Currently only available for 8bit display shields **
//
// Uncomment the following line to enable this feature
//#define USE_UNO_SHIELD_ON_MEGA 1
#define CHINA_MEGA 1
//********************************************************************
// *** Hardwarespecific defines ***
#define cbi(reg, bitmask) *reg &= ~bitmask
#define sbi(reg, bitmask) *reg |= bitmask
#define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);
#define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask);
#define cport(port, data) port &= data
#define sport(port, data) port |= data
#define swap(type, i, j) {type t = i; i = j; j = t;}
#define fontbyte(x) pgm_read_byte(&cfont.font[x])
#define regtype volatile uint8_t
#define regsize uint8_t
#define bitmapdatatype unsigned int*
для Arduino DUE вот тут:
\libraries\UTFT\hardware\arm\HW_ARM_defines.h
//********************************************************************
// ElecHouse TFT LCD/SD Shield for Arduino Due
// -------------------------------------
// Uncomment the following line if you are using this shield
//#define EHOUSE_DUE_SHIELD 1
//
// For this shield: RS=22, WR=23, CS=31, RST=33
//********************************************************************
// Если Вы используете китайский дисплей для Arduino MEGA
// -------------------------------------
// Uncomment the following line if you are using this shield
#define CHINA_MEGA 1
//
// For this shield: RS=38, WR=39, CS=40, RST=41
//********************************************************************
// *** Hardwarespecific defines ***
#define cbi(reg, bitmask) *reg &= ~bitmask
#define sbi(reg, bitmask) *reg |= bitmask
#define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask);
#define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask);
#define cport(port, data) port &= data
#define sport(port, data) port |= data
#define swap(type, i, j) {type t = i; i = j; j = t;}
#define fontbyte(x) cfont.font[x]
#define pgm_read_word(data) *data
#define pgm_read_byte(data) *data
#define bitmapdatatype unsigned short*
#if defined(TEENSYDUINO) && TEENSYDUINO >= 117
#define regtype volatile uint8_t
#define regsize uint8_t
#else
#define regtype volatile uint32_t
#define regsize uint32_t
#endif
В скетче инициализируем:
UTFT myGLCD(ILI9327_8,38,39,40,41);
// или
UTFT myGLCD(NIC35WS,38,39,40,41);
// или
UTFT myGLCD(31,38,39,40,41);
Вот, собственно и все)
p.s. чтобы шилд запустился на DUE необходимо закоротить резисторные сборки, иначе будет много помех на экране из-за низких уровней управляющих сигналов. Проверено работает, всем удачи!
p.p.s. к стати, на всех трех дисплеях были подорваны шлейфы тачскрина! Так что не удивляйтесь, если тач плохо работает или не работает вовсе... А паять их, скажу я Вам, такая >|<опа =)
Бублик, не подскажете что необходимо допилить в вашей измененной библиотеке, чтобы запустить такой же шилд как у Kybb'а на Arduino UNO? Пример его кода без изменений оживил мой дисплейчик. С библиотекой Touchscreen заработал и тач. Контроллеры в шилдах одинаковые ili9327, режим тоже 8бит. Без помощи сам допилить до конца библиотеку не смогу, опыта мало(
Бублик, не подскажете что необходимо допилить в вашей измененной библиотеке, чтобы запустить такой же шилд как у Kybb'а на Arduino UNO? Пример его кода без изменений оживил мой дисплейчик. С библиотекой Touchscreen заработал и тач. Контроллеры в шилдах одинаковые ili9327, режим тоже 8бит. Без помощи сам допилить до конца библиотеку не смогу, опыта мало(
Если так, то выходит, что данные передаются через порт Д, а это пины 0..7. По факту шилд работает через пины 2..9. Подозреваю, что именно здесь и кроется проблема и необходимо перепилить LCD_Writ_Bus()?
Если так, то выходит, что данные передаются через порт Д, а это пины 0..7. По факту шилд работает через пины 2..9. Подозреваю, что именно здесь и кроется проблема и необходимо перепилить LCD_Writ_Bus()?
Конечно же в HW_ATmega328Р.h =) я упустил что шилд к UNO цепляется...
Запутался я окончательно. Сдался и решил попробовать с более простого - старой версии UTFT от китайцев, доработанной Вами. Она проще. Вроде всё сделал, но результата нет. Мозг зато работать начинает, лишь пару дней назад из армии вернулся)
На данный момент картина следующая. НЕ каждый раз, но на дисплее появляется жизнь. Рисуются некие элементы. Картинка как на битой видюхе - с артефактами. НО реакция нестабильная. То белый экран, то что-то есть.
Запутался я окончательно. Сдался и решил попробовать с более простого - старой версии UTFT от китайцев, доработанной Вами. Она проще. Вроде всё сделал, но результата нет. Мозг зато работать начинает, лишь пару дней назад из армии вернулся)
На данный момент картина следующая. НЕ каждый раз, но на дисплее появляется жизнь. Рисуются некие элементы. Картинка как на битой видюхе - с артефактами. НО реакция нестабильная. То белый экран, то что-то есть.
Электроника - наука о контактах =)
Раз то есть то нет - пропадает контакт, начни с простого - добейся стабильной работы), подогни контакты, прозвони их!
На данный момент картина следующая. НЕ каждый раз, но на дисплее появляется жизнь. Рисуются некие элементы. Картинка как на битой видюхе - с артефактами. НО реакция нестабильная. То белый экран, то что-то есть.
вот у некоторых такая же ситуация с коврами на стене.. то вроде обычный ковер. а то бац и мультики показывает :)
Снова передернул питание. Экран остается белым. Питание. экран заполняется цветными полосами, но не сплошными, а с "выбоинами". Половина экрана заполняется черным. Питание. Экран белый. Питание. Вместо цветных сплошных полос экран заполняется полосами из гороха точек разной серости. Видео заснять пока не получилось. Ниче не рисует больше(
И дело не в контактах, т.к. скетч без библиотеки работает стабильно.
И дело не в контактах, т.к. скетч без библиотеки работает стабильно.
угу.. давай думать попорядку...
дисплей сам по себе в первом приближении кучка очень маленьких лампочек
что бы эти лампочки работали и еще что то рисовали им нужен контролер который их включает и выключает в заданом порядке..
к контролеру нужен процесор который будет говорить контролеру что включать а что выключать и когда.. примерно 30 раз в секунду на каждую лампочку...
что бы процесор работал правильно ему наверно нужно начинать с какой то точки поулчать инструкции и понимать что вот она пошла работа.. для этого у него есть RESET...
судя по тому что дергая питание на процесоре экрана тебе удалось там чего то там увидить.. то наверно у тебя пин ресет куда то не туда подоткнут...
Теперь совсем ничего не показывает. Раз отрисовывало то, что требуется, то команды ведь верные. Но раз нестабильно и с артефактами, то может инициализация нестабильно проходит.. Не понимаю как оно может то работать, то нет.
С утра дисплейчик оживал пару раз. Вот, что успел заснять. Цветные полосы не сплошные, графики тоже криво отрисовываются. В любой момент может засветиться белый экран. Как правило при включении ничего не происходит или просто мерцает экран.
Нашел в чем была проблема! Ура. Теперь все работает как часики. Причина была в выводе RD, подключенном к A0. При объявлении вывод игнорировался и при запуске жил своей жизнью в рандомном состоянии.
Удалось кому-нибудь заставить одновременно работать и lcd, и touchscreen? У меня тач без микросхемы. Отдельно пример из библиотеки touchscreen.h работает. Но совместно с UTFT, конечно, нет. Выводы тача подключаются к пинам A1, A2, 6, 7. Но одновременно A1 = WR, A2 = RS. Выходит, что работая с пинами тача, я дергаю контроллер дисплея. Каким образом обойти эту ситуацию?
Зачем ее корежить? Просто отрезать дорожки и проврдками их куда то пропаять.. и вообще китайцы конечно странные, но не до такой степени что бы разводить кривой шильд.. каким образом вы выяснили что тач работает?
Господа,помогите разобраться с тачем .Шилд как на верхнем фото в сообщение 111, подключаю к меге .
Пример калибровки из примера библиотеки работает,но не более того. То есть тачь реагирует на нажатие точек по углам экрана,но не до,ни после изменения в файле UTouch_CD.h ситуация не изменяется .
Лишь иногда проскакивают положительные цифры при нажатие в нижнем краю экрана у самой границы.
Поскажите плиз куда копать,порядок действий. Кстати на моем шильде нету резистора и конденсатора в отличие от шилда на фотке рядом с микросхемой тача ( видимо китайцы забыли запаять).
Я про то, что человек пишет про подорванные шлейфы тача на трех экземплярах и соответственно плохую их работу. У меня шильд с нижней фотки и там не было и нет этих деталей, но тач отлично работает. И известная тяга китайцев экономить на зернышко риса , позволяет им не ставить детали , которые стоят на всякий случай, фильтрующие емкости и прочая лабуда. На моей плате их не было и нет, но это не мешает работе.
Да ,спасибо,я понял про что,есть мысль как проверит целостность проводников тача ,но это уже не сегодня. У меня к сожалению нет с чем сравнить,это мой первый опыт с дисплеем с тачем ,на худой конец придется использовать без тача .Задумаюсь над покупкой более откатаного дисплее на будущее,но теряюсь с выбором) Кстати у меня не хватило длины оторванного шлейфа тача,пришлось наращивать проводом МГТФ.
Даже самый тонкий МГТФ сильно грубый и обламывает шлейф, несколько раз пришлось перепаивать. В итоге я снял с МГТФа фторопластовую изоляцию скрутил жилки и припаял, чтоб не коротили - залил все клеем =)
И ещё одно наблюдение,
дисплей приклеен на довольно мягкий двухсторонний скотч, при касании тача дисплей проседает и шлейфы (тача и дисплея) испытывают постоянные нагрузки, что не продлевает им срока эксплуатации...
Поэтому рекомендую по периметру залить щели между платой и дисплеем термоклеем из пистолета.
Даже самый тонкий МГТФ сильно грубый и обламывает шлейф, несколько раз пришлось перепаивать. В итоге я снял с МГТФа фторопластовую изоляцию скрутил жилки и припаял, чтоб не коротили - залил все клеем =)
Похоже я повторил Ваш путь с 11 вечера до 4 утра :))) я место соединения провода со шлейфом закрепил скотчем,завтра попробую просто сделать жилками,если будет к чему их припаивать :)
Я не знаю про ваши траблы с шлейфом, но я отодрал дисплей от скотча и прозванивал проводники и вертел по всякому, очень долго и у меня всё осталось на месте, кроме товарного вида. Скотч оторвался не равномерно и сейчас соответственно не равномерная засветка дисплея. Но и это я исправлю , просто пока не досуг.
Бублик спасибо! Тачь я всё таки победил,не было одного контакта из четырех. Получается он изначально пришел с оторванным тачем..
Терпение лопнуло и шлейф тача был откусан под корень,дабы в дальнейшем не соблазняться. Попутно вопрос,у кого нибудь SD карта в этом шилде читается нормально?
Картинку покажи какую-нибудь веселую с чудо-совместимого-с-ардунино256-экранчика
и тебе щастье и мы повеселимся :)
Вечная тема
нас китайцы тра-да-да а мы крепчаем
Может эту тему в верху топика прижать на всегда?
avton пишет:
...Китайцы ....не...
обманываете вы нас
на чудо-плате написано
МикроСхемаДруг.сом 3.5" TFT для arduino2560
а вы понавешали резистивных делителей
и мы всем стадом должны поверить
там стадо екселенты магазинам ставит
вы один хотите себя противопоставить стаду
да вы аднако не стадный товарищ
я даже знаю что будет дальше
и будет этот щиток лежать 20 лет и радовать глаз каждый раз когда рука будет его касаться или глаз мельком скользить
потому как практического смысла уникальщина не найдет применения в жизни
Счастье Ж-)
у меня такого счастья килограм на 500 лежит на полках Ж-)
Из сегодняшнего
рука как и 20 лет не поднялась выкинуть
вот древность с молодостью скрестил
зачем только?
ну пущай еще пару пятилеток полежит
//art100 to write 201400701 USB tester terminal
/* 16x2 LCD compatible with the Hitachi HD44780 driver
1 +5v
2 pin1-20k-pin3
3 gnd
4 RS - 7
5 gnd
6 E - 6
11 LCD D4 pin to digital pin 5
12 LCD D5 pin to digital pin 4
13 LCD D6 pin to digital pin 3
14 LCD D7 pin to digital pin 2
15 Anod +5V nc
16 Katod gnd nc
*/
int led13=13;//контролька
#include <LiquidCrystal.h>
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//uno
//LiquidCrystal lcd(7, 6, 5, 4, 3, 2);//mini RS E d4 d5 d6 d7
LiquidCrystal lcd(7,6,2,3,4,5);//фквгштщ mini pro RS E d4 d5 d6 d7
void setup(){
pinMode(led13,OUTPUT);//контролька
lcd.begin(16, 2);// set up the LCD's number of columns and rows:
Serial.begin(9600);// initialize the serial communications:
}
//=============================================
void loop(){
if (Serial.available()) {// when characters arrive over the serial port...
delay(100);// wait a bit for the entire message to arrive
lcd.clear();// clear the screen
while (Serial.available() > 0) { lcd.write(Serial.read()); }// read all the available characters// display each character to the LCD
digitalWrite(led13,HIGH);//контролька
delay(10);
}
digitalWrite(led13,LOW);
}
//=============================================
Ууууу... как все запущено :-)
8строка , вместо nic_rus_font_16x24 DefaultFont напиши, регистр букАф не помню :-)
В 15 тоже поменяй
И еще, нафиг тебе мой скетч дался?
А вообще, Артемка, учи мат часть и старайся не хамить людям.
Запустил сегодня дисплей на работе.
Дело было не только в "...бобине..."
В общем, был небольшой дефект разъёма.
Всё прозванивалось, вроде как нормально, но где-то видимо был "косяк".
Прогрел всё это дело феном, залил то, что прислал китаец (то, что выкладывал Бублик) и всё засветилось.
Немного омрачило радость то, что отображается картинка довольно медленно.
Ну да ладно, с этим как нибудь решим.
Tuchscreen ещё не испытывал - некогда пока что.
Всем большое спасибо за помощь и внимание к моей проблеме!
Успехов!
Медленным он и будет. Довольно большой дисплей с 8 битам интерфейсом. А я говорил - елозить паяльником. :-)
и через год мне дают мыло Карлсена
... и верёвку из Китая...
Медленным он и будет. Довольно большой дисплей с 8 битам интерфейсом. А я говорил - елозить паяльником. :-)
да даже с 16 битами один фиг очень медленный :)
Парни, а как этот дисплей подружить в Due? На меге работает, переключаю порт и плату на Due и не компилируется код
Arduino: 1.5.6-r2 (Windows 7), Board: "Arduino Due (Programming Port)"
Build options changed, rebuilding all
In file included from UTFT_Demo_400x240.pde:13:
C:\Program Files (x86)\Arduino\libraries\UTFT/UTFT.h:64: fatal error: WProgram.h: No such file or directory
compilation terminated.
Парни, а как этот дисплей подружить в Due? На меге работает, переключаю порт и плату на Due и не компилируется код
все просто, что бы подружить нужно загрузить их совместной работой для своей пользы, в процесе работы они либо подружатся, либо поубивают друг друга..
PS...библиотека старая... она о дуе узнала только с какой то там версии, не так давно
Парни, а как этот дисплей подружить в Due?
Этот дисплей заточен под 5 вольтовую МЕГУ у ДУЭ рабочее напряжение 3,3 вольта так что необходимо закоротить согласующие резисторные сборки (при трех вольтах они просто не нужны)
Всем привет!
Приобрел такой шилд: http://ru.aliexpress.com/item/3-5-inch-TFT-Touch-LCD-Screen-Display-Module-For-Arduino-UNO-R3-HIGH-QUALITY-Free/1786048346.html?isOrig=true#extend
Фото https://www.dropbox.com/s/ni8ggkvvy21gwb7/2014-06-17%2020.31.27.jpg
После общения с продавцом выяснилось, что основан на процессоре ILI9327 с 8-ми битным интерфейсом. Как упоминалось выше с актуальной UTFT подружить не удалось, из-за 8-ми битного интерфейса с библиотекой, что предоставил товарищ Бублик тоже, как я понимаю из-за иного расположения дата пинов. Переписывать библиотеку думалкой не дорос.
Продавец поделился рабочим кодом, у меня (MEGA 2560 IDE 1.05 и 1.5.6-r2) дисплей работет, тачскрин и SD не пробовал.
################
Из плюсов - работает.
Из минусов - работает медленно, нет шрифтов.
################
В аттаче скетч что выше и для тачскрина, также распиновка модуля и даташит для ILI9327. https://www.dropbox.com/s/0jnvon9r63qe38y/uno%203.5inch.rar
###################
Оффтоп:
Потратил часов 20 что бы подружить хоть с какой-то из графических библиотек, что нашел на просторах интернета, безрезультатно. Решил последовать совету много выше - текущий шилд в топку, а на сэкономленные за лекарства от нервов купить нормальный шилд.
Китайцы НЕПОБЕДИМЫ!!!
Или "счастливым" обладателям данного шилда, посвящается =)
Грустную историю о том как мне прислали вместо правильного шилда
такой как на верхнем фото, я рассказывал в 88 сообщении данной ветки. Но мы не привыкли отступать) и поискав продавана с наибольшим рейтингом и колличеством продаж я решил подстраховаться и перед заказом уточнить, что именно мне нужно. Китаец оказался очень отзывчивым и с радостью ответил на все мои вопросы и подтвердил, что продаваемый им дисплей собран именно на процессоре R61581 имеет разрешение 480х320 точек и 16ти битную шину данных - именно то, что на фотографии. Я успокоился и заказал две штуки.
Прошло три недели, вскрываю посылку... твою мать... и снова на меня смотрят те же унылые 8битные шилды на ILI9327, 8bit, 240x400..... Вот как теперь жить без веры в людей?
Делать нечего, будем строить на них. Огрызок UTFT присланной китайцем никак мне не нравился и было решено "модернизировать" последнюю на сегодня библиотеку Карлсена 2.77
Собственно вот она, пользуйтесь на здоровье=)
http://revera.tv/UserFiles/Nic/UTFT_2.77_mod_by_NIC.zip
Инициализация для Arduino MEGA :
\libraries\UTFT\hardware\avr\HW_AVR_defines.h
раскомментировать добавленный дефайн CHINA_MEGA
для Arduino DUE вот тут:
\libraries\UTFT\hardware\arm\HW_ARM_defines.h
В скетче инициализируем:
Вот, собственно и все)
p.s. чтобы шилд запустился на DUE необходимо закоротить резисторные сборки, иначе будет много помех на экране из-за низких уровней управляющих сигналов. Проверено работает, всем удачи!
p.p.s. к стати, на всех трех дисплеях были подорваны шлейфы тачскрина! Так что не удивляйтесь, если тач плохо работает или не работает вовсе... А паять их, скажу я Вам, такая >|<опа =)
Бублик, не подскажете что необходимо допилить в вашей измененной библиотеке, чтобы запустить такой же шилд как у Kybb'а на Arduino UNO? Пример его кода без изменений оживил мой дисплейчик. С библиотекой Touchscreen заработал и тач. Контроллеры в шилдах одинаковые ili9327, режим тоже 8бит. Без помощи сам допилить до конца библиотеку не смогу, опыта мало(
Схема подключения получается следующая:
RD-A0, WR-A1, RS-A2, CS-A3, RESET-A4, D1-8, D2-9, D3-2, D4-3, D5-4, D6-5, D7-6, D8-7.
Бублик, не подскажете что необходимо допилить в вашей измененной библиотеке, чтобы запустить такой же шилд как у Kybb'а на Arduino UNO? Пример его кода без изменений оживил мой дисплейчик. С библиотекой Touchscreen заработал и тач. Контроллеры в шилдах одинаковые ili9327, режим тоже 8бит. Без помощи сам допилить до конца библиотеку не смогу, опыта мало(
Схема подключения получается следующая:
RD-A0, WR-A1, RS-A2, CS-A3, RESET-A4, D1-8, D2-9, D3-2, D4-3, D5-4, D6-5, D7-6, D8-7.
Сложно не имея шилда.
Я б начал с того, что в HW_AVR_defines.h раскомментировал строку
//#define USE_UNO_SHIELD_ON_MEGA 1
затем, в случае если не пошло, в файле HW_ATmega1280.h
закомментировал бы вот эту часть кода:
в HW_AVR_defines.h #define CHINA_MEGA 1 - закомментировать!!!
Спасибо. Попробовал, как Вы посоветовали. Результат отрицательный.
Дисплей объявляю так
в файле HW_ATmega1280.h
закомментировал бы вот эту часть кода:
Здесь Вы имели ввиду скорее всего файл HW_ATmega328Р.h В нем за передачу данных в 8битном режиме отвечает этот ведь кусок?
Если так, то выходит, что данные передаются через порт Д, а это пины 0..7. По факту шилд работает через пины 2..9. Подозреваю, что именно здесь и кроется проблема и необходимо перепилить LCD_Writ_Bus()?
Здесь Вы имели ввиду скорее всего файл HW_ATmega328Р.h В нем за передачу данных в 8битном режиме отвечает этот ведь кусок?
Если так, то выходит, что данные передаются через порт Д, а это пины 0..7. По факту шилд работает через пины 2..9. Подозреваю, что именно здесь и кроется проблема и необходимо перепилить LCD_Writ_Bus()?
Конечно же в HW_ATmega328Р.h =) я упустил что шилд к UNO цепляется...
Для понимания происходящего почитай у Карлсона:
http://henningkarlsen.com/electronics/h_utft_arduino_shield_on_mega.php
Почитал, спасибо. Очень помогло. Но все равно не запускается( На данный момент сделано:
а) Создана директория tft_drivers\ili9327_8_uno. В ней файлы как из папки ili9327_8, просто в тексте файлов исправил
б) В файле UTFT.h добавил:
в) В файле UTFT.cpp добавил:
г) В файле HW_AVR_defines раскомментировал (где-нибудь еще встречается USE_UNO_SHIELD_ON_MEGA вообще?оО)
д) В файле HW_ATmega328P следующие изменения:
Не до конца понял назначение функции void UTFT::_fast_fill_8(int ch, long pix), потому не исправлял ее.
е) В скетче дисплей объявляю так
Полистал дальше UTFT.cpp. Похоже зря я стал вводить ILI9327_8_UNO. Нужно было остановиться на вашем 31м дисплее (ILI9327_8) из-за этого
г) В файле HW_AVR_defines раскомментировал (где-нибудь еще встречается USE_UNO_SHIELD_ON_MEGA вообще?оО)
Не до конца понял назначение функции void UTFT::_fast_fill_8(int ch, long pix), потому не исправлял ее.
наверное не стоило включать #define USE_UNO_SHIELD_ON_MEGA 1. При этом используется меговская распортовка, которая отличается от уно.
фастфилл, это скорее всего быстрая заливка полигонов, появилась в последних версиях UTFT.
а if(display_model !=31) было сделано чтоб не ломать библиотеку а только дополнить её, поменяй 31 на свой 32 и делов то =)
Запутался я окончательно. Сдался и решил попробовать с более простого - старой версии UTFT от китайцев, доработанной Вами. Она проще. Вроде всё сделал, но результата нет. Мозг зато работать начинает, лишь пару дней назад из армии вернулся)
На данный момент картина следующая. НЕ каждый раз, но на дисплее появляется жизнь. Рисуются некие элементы. Картинка как на битой видюхе - с артефактами. НО реакция нестабильная. То белый экран, то что-то есть.
Запутался я окончательно. Сдался и решил попробовать с более простого - старой версии UTFT от китайцев, доработанной Вами. Она проще. Вроде всё сделал, но результата нет. Мозг зато работать начинает, лишь пару дней назад из армии вернулся)
На данный момент картина следующая. НЕ каждый раз, но на дисплее появляется жизнь. Рисуются некие элементы. Картинка как на битой видюхе - с артефактами. НО реакция нестабильная. То белый экран, то что-то есть.
Электроника - наука о контактах =)
Раз то есть то нет - пропадает контакт, начни с простого - добейся стабильной работы), подогни контакты, прозвони их!
На данный момент картина следующая. НЕ каждый раз, но на дисплее появляется жизнь. Рисуются некие элементы. Картинка как на битой видюхе - с артефактами. НО реакция нестабильная. То белый экран, то что-то есть.
вот у некоторых такая же ситуация с коврами на стене.. то вроде обычный ковер. а то бац и мультики показывает :)
как реакция может быть не стабильной?
как реакция может быть не стабильной?
Элементарно! Передернул питание. Пошла инициализация, заполнение разноцветными полосками экрана, затем синусоиды рисуются.
Снова передернул питание. Экран остается белым. Питание. экран заполняется цветными полосами, но не сплошными, а с "выбоинами". Половина экрана заполняется черным. Питание. Экран белый. Питание. Вместо цветных сплошных полос экран заполняется полосами из гороха точек разной серости. Видео заснять пока не получилось. Ниче не рисует больше(
И дело не в контактах, т.к. скетч без библиотеки работает стабильно.
И дело не в контактах, т.к. скетч без библиотеки работает стабильно.
угу.. давай думать попорядку...
дисплей сам по себе в первом приближении кучка очень маленьких лампочек
что бы эти лампочки работали и еще что то рисовали им нужен контролер который их включает и выключает в заданом порядке..
к контролеру нужен процесор который будет говорить контролеру что включать а что выключать и когда.. примерно 30 раз в секунду на каждую лампочку...
что бы процесор работал правильно ему наверно нужно начинать с какой то точки поулчать инструкции и понимать что вот она пошла работа.. для этого у него есть RESET...
судя по тому что дергая питание на процесоре экрана тебе удалось там чего то там увидить.. то наверно у тебя пин ресет куда то не туда подоткнут...
Теперь совсем ничего не показывает. Раз отрисовывало то, что требуется, то команды ведь верные. Но раз нестабильно и с артефактами, то может инициализация нестабильно проходит.. Не понимаю как оно может то работать, то нет.
С утра дисплейчик оживал пару раз. Вот, что успел заснять. Цветные полосы не сплошные, графики тоже криво отрисовываются. В любой момент может засветиться белый экран. Как правило при включении ничего не происходит или просто мерцает экран.
http://youtu.be/dfcc4le1Fyo
http://youtu.be/fHc5WdJLH74
Может все же проверить как оно там все пропаяно?
Нашел в чем была проблема! Ура. Теперь все работает как часики. Причина была в выводе RD, подключенном к A0. При объявлении вывод игнорировался и при запуске жил своей жизнью в рандомном состоянии.
Добавил при инициализации
и теперь стабильно, хоть и медленно, но рисует.
Выкладываю библиотеку UTFT версии 1.3 для работы со следующим шилдом http://ru.aliexpress.com/item/3-5-inch-TFT-Touch-LCD-Screen-Display-Module-For-Arduino-UNO-R3-HIGH-QUALITY-Free/1786048346.html?isOrig=true#extend
ТТХ: 3,5', 400x240, контроллер ILI9327, работает в 8битном режиме. Подключен к выводам A0..A5, 2..9
Дисплей объявить следующим образом
http://myfolder.ru/files/41035240
ну вот в нашем полку умеющих писать код прибыло
поздравляю :)
в моем случае без резки дорожек и пайки соплей не судьбинушка TFT.h TouchScreen.h 2.4"
я забил в страшное электричество лезть
Продолжение банкета. Допилил свежую UTFT v2.77. Причина была в том же А0. Дисплей объявлять так
Работает только под этот шилд!
http://myfolder.ru/files/41035363
PhOSTU, здорово! Спасибо заработало. Я начал переписывать LCDTFT, под этот шилд, но готовая UTFT гораздо лучше.
Еще раз спасибо!
покажите хоть как экранчики показывают
это мое веселье http://yadi.sk/d/EPYljwnIKAWUT
а то все чего-то ковыряют а что ковыряют непонятно
покажите хоть как экранчики показывают
Вот как-то так http://youtu.be/vmxAK72xFSw
Удалось кому-нибудь заставить одновременно работать и lcd, и touchscreen? У меня тач без микросхемы. Отдельно пример из библиотеки touchscreen.h работает. Но совместно с UTFT, конечно, нет. Выводы тача подключаются к пинам A1, A2, 6, 7. Но одновременно A1 = WR, A2 = RS. Выходит, что работая с пинами тача, я дергаю контроллер дисплея. Каким образом обойти эту ситуацию?
Использовать другие пины для тача не вариант?
Шилд уже спаян. Я рассматривал вариант переноса двух пинов А1 и А2, но тогда придется корежить плату и отказаться от использования SD карты.
Зачем ее корежить? Просто отрезать дорожки и проврдками их куда то пропаять.. и вообще китайцы конечно странные, но не до такой степени что бы разводить кривой шильд.. каким образом вы выяснили что тач работает?
Шилд вовсе не кривой. Просто нужно подобрать к нему подход)
Господа,помогите разобраться с тачем .Шилд как на верхнем фото в сообщение 111, подключаю к меге .
Пример калибровки из примера библиотеки работает,но не более того. То есть тачь реагирует на нажатие точек по углам экрана,но не до,ни после изменения в файле UTouch_CD.h ситуация не изменяется .
При запуске данного скетча всегда выводится :
x=-1
y=-1
Лишь иногда проскакивают положительные цифры при нажатие в нижнем краю экрана у самой границы.
Поскажите плиз куда копать,порядок действий. Кстати на моем шильде нету резистора и конденсатора в отличие от шилда на фотке рядом с микросхемой тача ( видимо китайцы забыли запаять).
Прочитайте последние два предложения в посте 111 , может Ваш случай?(.
Точно не мой,ибо я сам их оторвал и потом припаивал :) Но тач работал что до,что после одинаково....
Я про то, что человек пишет про подорванные шлейфы тача на трех экземплярах и соответственно плохую их работу. У меня шильд с нижней фотки и там не было и нет этих деталей, но тач отлично работает. И известная тяга китайцев экономить на зернышко риса , позволяет им не ставить детали , которые стоят на всякий случай, фильтрующие емкости и прочая лабуда. На моей плате их не было и нет, но это не мешает работе.
Да ,спасибо,я понял про что,есть мысль как проверит целостность проводников тача ,но это уже не сегодня. У меня к сожалению нет с чем сравнить,это мой первый опыт с дисплеем с тачем ,на худой конец придется использовать без тача .Задумаюсь над покупкой более откатаного дисплее на будущее,но теряюсь с выбором) Кстати у меня не хватило длины оторванного шлейфа тача,пришлось наращивать проводом МГТФ.
Даже самый тонкий МГТФ сильно грубый и обламывает шлейф, несколько раз пришлось перепаивать. В итоге я снял с МГТФа фторопластовую изоляцию скрутил жилки и припаял, чтоб не коротили - залил все клеем =)
И ещё одно наблюдение,
дисплей приклеен на довольно мягкий двухсторонний скотч, при касании тача дисплей проседает и шлейфы (тача и дисплея) испытывают постоянные нагрузки, что не продлевает им срока эксплуатации...
Поэтому рекомендую по периметру залить щели между платой и дисплеем термоклеем из пистолета.
Даже самый тонкий МГТФ сильно грубый и обламывает шлейф, несколько раз пришлось перепаивать. В итоге я снял с МГТФа фторопластовую изоляцию скрутил жилки и припаял, чтоб не коротили - залил все клеем =)
Похоже я повторил Ваш путь с 11 вечера до 4 утра :))) я место соединения провода со шлейфом закрепил скотчем,завтра попробую просто сделать жилками,если будет к чему их припаивать :)
Я не знаю про ваши траблы с шлейфом, но я отодрал дисплей от скотча и прозванивал проводники и вертел по всякому, очень долго и у меня всё осталось на месте, кроме товарного вида. Скотч оторвался не равномерно и сейчас соответственно не равномерная засветка дисплея. Но и это я исправлю , просто пока не досуг.
Значит Вам повезло больше.
Видимо это от того, что другой шилд и производитель.
Бублик спасибо! Тачь я всё таки победил,не было одного контакта из четырех. Получается он изначально пришел с оторванным тачем..
Терпение лопнуло и шлейф тача был откусан под корень,дабы в дальнейшем не соблазняться. Попутно вопрос,у кого нибудь SD карта в этом шилде читается нормально?
Проблему с SD картой тоже пришлось решать кординально :) . Китайцы банально не согласовали уровни сигналов ( 5v/3.3v).
В итоге получилось так :
Картинку покажи какую-нибудь веселую с чудо-совместимого-с-ардунино256-экранчика
и тебе щастье и мы повеселимся :)
Вечная тема
нас китайцы тра-да-да а мы крепчаем
Может эту тему в верху топика прижать на всегда?
обманываете вы нас
на чудо-плате написано
МикроСхемаДруг.сом 3.5" TFT для arduino2560
а вы понавешали резистивных делителей
и мы всем стадом должны поверить
там стадо екселенты магазинам ставит
вы один хотите себя противопоставить стаду
да вы аднако не стадный товарищ
я даже знаю что будет дальше
и будет этот щиток лежать 20 лет и радовать глаз каждый раз когда рука будет его касаться или глаз мельком скользить
потому как практического смысла уникальщина не найдет применения в жизни
Счастье Ж-)
у меня такого счастья килограм на 500 лежит на полках Ж-)
Из сегодняшнего
рука как и 20 лет не поднялась выкинуть
вот древность с молодостью скрестил
зачем только?
ну пущай еще пару пятилеток полежит