Разница при подключении TFT к Leonardo и Mega 2560

Mysterious
Offline
Зарегистрирован: 25.09.2012

 Господа специалисты. Подстажите пожалуйста: 

Я купил себе Ардуину Леонардо, потом купил TFT 2.8" LCD Touch шилд 240 х 320 , и он не хочет Работать на меге2560 хотя до этого работал на Леонардо. Шилд вот с такой вот распиновкой 

 

На Леонардо она после танцев с бубном и библиотекой UTFT таки стала. Использовал вот такую инициализацию

UTFT myGLCD(ILI9325D_8,A5,A4,A3,A2);

Но потом я понял что памяти катастрофически не хватает для работя леонардо с этим шилдом. Приобрел Мегу 2560. И вот на этой меге этот шилд отказывается работать. Просто показывает белый экан и все. Скажите может кто то знает в чем может быть проблема? Инициализацию я оставлял такой же как и на Леонардо. По документации для управления дисплеем используются только аналогые контакты на сколько я понял. 

Mysterious
Offline
Зарегистрирован: 25.09.2012

 Да кстати если что то у меня проблема именно с Arduino Mega 2560 rev 3

maksim
Offline
Зарегистрирован: 12.02.2012

Ссылочку на описание шилда можно?

Mysterious
Offline
Зарегистрирован: 25.09.2012
leshak
Offline
Зарегистрирован: 29.09.2011

 1. По вашей ссылке:

Цитата:

Внимание! Шилд не полностью прилегает к платам Uno, Mega и их репликам с разъемом USB-B (см. рисунок), зато хорошо подходит к плате Arduino Leonardo, которая использует microUSB.

Во вторых ищите обращайте внимание на пины которые вы не указываете при инициализации. Такие как 

SD_CS,D11 SD_MOSI,D12 SD_MISO,D13 SD_SCK

Все вместе их можно "обозвать" SPI пины. У меги они имеют другие номера. Лезте в описание плат и сравнивайте где они на меге (где-то в районе 50-тых). Смотрите имеет ли шилд разводку туда (или на ISP коннектор, они еще и туда дублируются).

Если "все подключено правильно", то уж в библиотеку лезть. Смотреть как она работает с пинами (особенно CS, он же Chip Select). Если напрямую через порт и не проверяет "какая плата" - нужно будет править библиотеку (или искать другую).

leshak
Offline
Зарегистрирован: 29.09.2011

 Хотя SPI пины, скорее всего, на экран не влияют. Они, скорее всего, для работы SD карты. Так что начните проверку с прилегания, того что правиьлно выставлены джамперы и т.п.

Mysterious
Offline
Зарегистрирован: 25.09.2012

 Спасибо, буду смотреть. 
А по поводу джамперов: какие джампера и где, вы имеете в виду? потому как на самом шилде нет джамперов

 

leshak
Offline
Зарегистрирован: 29.09.2011

>А по поводу джамперов: какие джампера и где, вы имеете в виду? потому как на самом шилде нет джамперов

 Описание шилда по вашей ссылке:

Цитата:

На плате есть переключатель 3.3 - 5В, так что шилд совместим не только с оригинальными платами Arduino, но и с клонами работающими на 3.3В

Почитайте его что-ли. Там еще есть полезные ссылки даташиты экрана, модуля, его схематика и т.п. :) 

Mysterious
Offline
Зарегистрирован: 25.09.2012

 Да , это не джампер это просто переключатель :)
Все доки по этому шилду перешерстил, но надо знать на что обрашать внимание.
А еще такой вопрос: необходимо ли извлекать этот шилд из ардуинки при заливании скетча?

leshak
Offline
Зарегистрирован: 29.09.2011

 

Mysterious пишет:

Да , это не джампер это просто переключатель :)

С точки зрения электричества - это одно и тоже. Разница только в цене/размере/удобстве использвоания. Поэтому производители часто заменяют одно другим и пользуются этими словами как синонимами. Особенно на всяких "платах/модулях", а не "потребительских продуктах".

Вообщем в любом случае перепроверте его положение.

Mysterious пишет:

А еще такой вопрос: необходимо ли извлекать этот шилд из ардуинки при заливании скетча?

Ну если он ничего не коротит там на землю через разъем - по идее не нужно.

Хотя "может и мешать". Судя по схематие пины D0,D1 (самые важные для заливки), таки подводятся к экрану. Но теоретически экран-то "на вход" работает, значит не должен мешать заливке.

Ну еще и Reset, но уж его-то он точно "занять" никак не должен, хотя... не.. не верю что его проэктировщики были такими дятлами :).

P.S. Да, а даташит на него просто "блещет" обилием технических деталей :(

 

Mysterious
Offline
Зарегистрирован: 25.09.2012

Просто честно сознаюсь что с Ардуиной знаком не очень давно. Но с програмированием знаком уже давненько. Потому и удивлен что вроде бы ноги у Леонардо и Меги расположенный под шилдом одинаково и одинаково называются а оказывается работают по разному.

Кстати смотрю что Chip select два контакта TFT_CS и SD_CS и они на разных ногах. За что именно отвечают обычно Chip select пины?

leshak
Offline
Зарегистрирован: 29.09.2011

 Называются - одинаково. И как "просто цифровой вход" - тоже будут работать одинаково. Но вот некоторые ноги, у камня, имеют дополнительные функции, какие-то "аппаратные помогалки" (UART,SPI,I2C). Вот SPI-ю - не повзело. Производитель чипа эту функцию - привесил на другие ноги.

Что-бы там не говорили рекламма, а микроконтроллеры - в любом случае заставляют ознакамливатся с железной составляющией. Слой между "програмой и железом" - очень тонок (хотя, все же еще есть, в ардуине, и это не всегда благо ;) 

Mysterious
Offline
Зарегистрирован: 25.09.2012

Хм...

В описании Леонардо сказано

SPI: на разъеме ICSP. Посредством данных выводов осуществляется связь SPI, для чего используется библиотека SPI. Обратите внимание, что в Leonardo выводы SPI не разведены на цифровые вход/выходы как это было в предыдущих версиях Arduino контроллеров.

В описании Меги сказано

SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Посредством данных выводов осуществляется связь SPI, например, используя библиотеку SPI. Также выводы SPI могут быть выведены на блоке ICSP, который совместим с платформами Uno, Duemilanove и Diecimila.

То есть подозреваю что SPI тут не причем поскольку в первом случае их вообще нет на Леонардо (а шилдик то работает) а в Меге они недостают до шилдика... 

 

Думаю что проблема тут:

Из описания Меги:
Связь SPI может осуществляться через блок ICSP, как на платформах Duemilanove / Diecimila, так и на Mega2560. Однако расположение выводов (20 и 21) связи I2C на платформе Mega не соответствуют расположению тех же выводов (аналоговые входы 4 и 5) на Duemilanove / Diecimila.
 

То есть шилдик юзает как раз аналоговые входи 4,5 у Леонардо он у меги они не работают с I2C :(

Как это можно решить?

leshak
Offline
Зарегистрирован: 29.09.2011

>Кстати смотрю что Chip select два контакта TFT_CS и SD_CS и они на разных ногах. За что именно отвечают обычно Chip select пины?

Шина SPI не подразумевает, в отличае от I2C одновременной работы нескольких устройств. У нее нет адресации. Поэтому когда на нее вешается несколько устройств, то у них используется CS-пины. Которые работают как "выключитель". Типа говорят ему - "то что сейчас происходит на SPI - тебя не касается". То есть одновременно, с помощью CS-пина включают какое-то одно устройство, общаются с ним, поэтому "отключают его от шины", активируют другое - общаются с ним.

 

ICPS разъем - да действительно общий и у уны и меги, но... он дублилирует SPI-пины. А "на своих местах" - они все равно есть. И, честно говоря, я не увидел на картинках что этот ICPS разъем есть у самого шилда и он умеет брать SPI с него. Похоже он, все-таки, пользуется обычными пинами.

Название пинов типа SD_CS - намекает что они не используются для работы с экраном. Типа вроде, в данном шилде, SPI предназначен только для работы с картой. Хотя в даташитах на контроллер экрана и тача упоминается что они тоже умеет работать по SPI, но, похоже, в данном случае этот режим не используется.

I2C - не нашел нигде упоминаний что эта шина используется. Вы где-то нашли? Если нет - то 4,5 в данном случае это "просто цифровые пины". И с ними проблемм нет.

>Как это можно решить?

Самое "лобовое решение" - втыкнуть шилд на беспаячную макетку. И "пробросить" все как удобно. Добится "что-бы работало", а потом уже чухать репу "как это сделать удобным".

Кстати очень полезным в том что-бы разобратся "как правильно подключать", может такое. Пройдите, с той ссылки что вы давали, на страницу библиотеки UTFT. Там ищите раздел "Requirements". В нем - ссылка на PDF-ку, в ней, на второй странице - табличка ардуино пинов куда нужно подключить при использовании этой библиотеки. И для меги, таки, совсем другие пины :( Правда, сильно подозреваю, что в этом PDF-ке указаны пины ног микрухи-экрана, а не самого шилда. То есть прийдется играть в игру. "смотрим пин меги в табличке, смотрим какая нога микрухи соотсвествует, дальше открываем схематику шилда, ищем на какой пин шилда выведена эта нога микрухи" и соединяем.    получается нужно соеденить (1) Пин Меги <-->! (2) Пин шилда  <-->  (3) Пин микросхемы.

Соотвествие (1) к (3) - на странице библиотеки смотрим, соотвествие (2) к (3) - в схематике шилда. А соотвествие (1) к (2) вам нужно найти как уравнение в этом неизвестном и соеденить проводком.

 

Mysterious
Offline
Зарегистрирован: 25.09.2012

 О майн гад...

Ничего не поделаешь, буду пробовать. Хотя никак не могу понять в чем именно тогда разница. Гляжу на код либы, вроде нигре она версию и модель ардуины не смотрит. И в чем проблема тогда если он не I2C не  SPI не юзает и при этом не работает (

Кстати вот еще вопрос: я подключал этот шилд на проводах(10-20см) к Леонардо на те же разьемы что и обычно и он тоже не работал. Это из за наводок? Или особая Шилд - Магия? Ну кривизну рук я тоже учел

leshak
Offline
Зарегистрирован: 29.09.2011

 >Гляжу на код либы, вроде нигре она версию и модель ардуины не смотрит

Проблема может если где-то используется прямая запись в порт, а не digitalWrite(). Тогда тоже получаются "другие ноги" при том же коде.

Зачем-то же, для меги, они указали в рекваирментах другие пины?

Хотя (глянул левым глазом) в библу - вроде используют portOutputRegister и т.п. что должно сводить на нет разницу в платах (по крайней мере для тех пинов что вы передаете  в конструкторе).

Использования аппаратных SPI/I2C - не видно.

Кстати, на всякий случай, а вы когда скетч заливаете правильно указали плату? По идее должно конечно, если неправильно, ругнутся и сказать что не соотвествует, но "вдруг"? Поменяли в Tools/Board плату на мегу?  

Mysterious
Offline
Зарегистрирован: 25.09.2012

 Да конечно меняю. И прога ардуано свежескачанная. 

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

leshak
Offline
Зарегистрирован: 29.09.2011

 

Mysterious пишет:

Да конечно меняю. И прога ардуано свежескачанная.

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

А вот это, уже, как раз очень похоже на то что указанно в рекваирментах к библиотеке. D22-D23 и D30-D37

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

Mysterious
Offline
Зарегистрирован: 25.09.2012

Ура товарищи заработало!

Не обошлось правда без паяльника, но по другому я не знаю как.

Методом научного тыка и вкуривания второй страницы доки henningkarlsen.com/electronics/files/UTFT_Requirements.pdf
У
далось выяснить что критично расположение контактов DB8-DB15(смотри схему по ссылке), остальные контакты можно подключать так же как и на Леонардо

Пришлось отпаять на шилдике панельку разьемов D0-D7(смотрите первый рисунок в этой теме) и вместо неё на проводках подцепить 2х рядный 4х сегментный штекер для задней панели Меги с 22 по 29 контакты подключал так D0 -> 22 .... D7 -> 29.

Шилдик потерял совместимость в Леонардо но на меге работает отлично. если не выпаивать разьем с шилдика а припоятся к нему то не работает тачскрин а графика работает(но мы не теряем тогда совместимсть с Леонардо)

Поэтому кто еще не знает как подключить свой 2.8" TFT LCD Touch shield то пусть пробует так.

Строка инициализации осталась такя же как и у леонардо:

UTFT myGLCD(ILI9325D_8,A5,A4,A3,A2);

 

 

leshak
Offline
Зарегистрирован: 29.09.2011

Mysterious пишет:

Не обошлось правда без паяльника, но по другому я не знаю как.

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

Вооружаемся http://arduino.cc/en/Hacking/PinMapping2560 и лезем в библиотеку на предмет поиска всяки PORTA, PORTB,PORTC и т.п.

Например в UTFT\HW_AVR.h видим такой кусок кода:

// *** Hardwarespecific functions ***
void UTFT::LCD_Writ_Bus(char VH,char VL, byte mode){
...

#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
		PORTA = VH;
		pulse_low(P_WR, B_WR);
		PORTA = VL;
		pulse_low(P_WR, B_WR);
#else
...
}

Видим что для меги юзается A-порт. Лезем в  http://arduino.cc/en/Hacking/PinMapping2560 и видим, что порт A  (ноги название которых начинается на PA[номер], PortA) отвечает за D22-D29

Что-то эти номера (D22-D29) напоминают, неправда ли? :)

А для "не меги" используется PORTD, который, если верить http://arduino.cc/en/Hacking/PinMapping168 отвечает за D0-D7 . Что, опять-таки поразительно похоже на пины написанный в рекваирментах для "просто Arduino" (aka Leonardo/Uno и т.п.)

 

leshak
Offline
Зарегистрирован: 29.09.2011

 Вообщем, похоже, что можно его "подружить" с мегой и без паяльника.

Непонятно только, почему этого не сделали авторы библиотеки. Раз, все равно, мегу предусматиривали в ней. Ну, разве что, они пользовались не шилдом, а проводками подключали. И было "без разницы", а PORTA было проще юзать. Так как на него выведены пины "подряд".  D0-D7 в меге разбросаны по PORTE, PORTH  так что чуть гиморней выводить выходит. Возможно просто "забили", так как "на проводках" им было проще найти свободный порт где имеется 8-м выводов "подряд".

P.S. Если будете править, то смотрите еще для какого switch (mode) - я так понимаю это зависит модели экрана которую вы даете как ILI9325D_8. Проверте как он трасформируюется в mode. Но сильно подозреваю что "наш код" это case 8:  

P.S.S. Ну и _set_direction_registers тоже не забыть настроить в соотвесвии. Причем только те биты, которые соотвесвуют именно нужным нам пинам. Остальные - не трогать.

Mysterious
Offline
Зарегистрирован: 25.09.2012

 Ну вот теперь и это знать буду ) когда будет время то попробую на проводках переподключить обратно если получится програмно все поменять то припаяю разьем обратно. Спасибо что показали где копать ) В любом случае хочется тоб это можно было чинить без помощи паяльника )

leshak
Offline
Зарегистрирован: 29.09.2011

Mysterious пишет:

 Ну вот теперь и это знать буду ) когда будет время то попробую на проводках переподключить обратно если получится програмно все поменять то припаяю разьем обратно. 

Я бы, на вашем месте, подошел к этому так:

Отключил бы нафиг шилд. Через резисторы, на D22-D29 подключил 8-мь светиков. Сделал-бы тестовый скетч. Который мигает ими по очереди, но не через digitalWrite, а прямой записью в порт, как у них в либе.

Примерно так (зажигает, на секунду, по очереди каждый диод)

void setup(){
  setPortDirection();
}


void loop(){
  byte state=1;
  for(byte i=0;i<8;i++){
    setPort(state);
    delay(1000);
    state=state<<1;
  }
}

void setPortDirection(){
  DDRA = 0xFF;
}

void setPort(byte newState){
  PORTA=newState;
}

Потом-бы перевесил светики на D0-D7 и тренировался изменить setPortDirection() и setPort() что-бы они мигали ими точно так же, но на новых пинах. Когда добился этого - ну тогда и в либу можно ручками лезть. Вносить эти изменения. И шилд подключать.

Mysterious пишет:

В любом случае хочется тоб это можно было чинить без помощи паяльника )

А я говорил ;)

leshak пишет:

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

Ох уж эти Хирурги. Все-бы им резать и резать :)

Mysterious
Offline
Зарегистрирован: 25.09.2012

 Ну я собственно сначала проводками нашел нужные контакты, подключил чтоб рабботало потом по возможности подключил к родним гнездам шилда, а те что не удалось перенести те уже хирургически перенес )

Otheral
Offline
Зарегистрирован: 22.10.2012

 Mysterious, ну как получилось подцепить к меге 2560? У меня та же проблема, на уно все хорошо работает, а с ммегой не хочет...

Mysterious
Offline
Зарегистрирован: 25.09.2012

 Пока только так как описал выше. Переписывать библиотеку пока не пробовал.

Mysterious
Offline
Зарегистрирован: 25.09.2012

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

На основе http://arduino.cc/en/Hacking/PinMapping2560 разобрался какие пины куда относятся начал переписывать UTFT\HW_AVR.h
Вот полный листинг файла. Внимание в нем отключена 16 битная версия управления.

// *** Hardwarespecific functions ***
void UTFT::LCD_Writ_Bus(char VH,char VL, byte mode)
{   
	switch (mode)
	{
	case 1:
		if (display_serial_mode==SERIAL_4PIN) {
			if (VH==1)
				sbi(P_SDA, B_SDA);
			else
				cbi(P_SDA, B_SDA);

			pulse_low(P_SCL, B_SCL);
		} else {
			if (VH==1)
				sbi(P_RS, B_RS);
			else
				cbi(P_RS, B_RS);
		}

		if (VL & 0x80)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);

		pulse_low(P_SCL, B_SCL);

		if (VL & 0x40)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);

		pulse_low(P_SCL, B_SCL);

		if (VL & 0x20)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);

		pulse_low(P_SCL, B_SCL);

		if (VL & 0x10)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);

		pulse_low(P_SCL, B_SCL);

		if (VL & 0x08)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);

		pulse_low(P_SCL, B_SCL);

		if (VL & 0x04)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);

		pulse_low(P_SCL, B_SCL);

		if (VL & 0x02)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);

		pulse_low(P_SCL, B_SCL);

		if (VL & 0x01)
			sbi(P_SDA, B_SDA);
		else
			cbi(P_SDA, B_SDA);

		pulse_low(P_SCL, B_SCL);

		break;
	case 8:
#if defined(__AVR_ATmega2560__)
	/*
		Pin TFT   Mega   Uno
		-------------------
		D0  DB8   PE0   PD0
		D1  DB9   PE1   PD1
		D2  DB10  PE4   PD2
		D3  DB11  PE5   PD3
		D4  DB12  PG5   PD4
		D5  DB13  PE3   PD5
		D6  DB14  PH3   PD6
		D7  DB15  PH4   PD7
	*/
	if(VH & 0x01) PORTE |= (1<<0);
	else PORTE &= ~(1<<0);

	if(VH & 0x02) PORTE |= (1<<1);
	else PORTE &= ~(1<<1);

	if (VH & 0x04) PORTE |= (1<<4);
	else PORTE &= ~(1<<4);

	if (VH & 0x08) PORTE |= (1<<5);
	else PORTE &= ~(1<<5);

	if (VH & 0x10) PORTG |= (1<<5);
	else PORTG &= ~(1<<5);

	if (VH & 0x20) PORTE |= (1<<3);
	else PORTE &= ~(1<<3);

	if (VH & 0x40) PORTH |= (1<<3);
	else PORTH &= ~(1<<3);

	if (VH & 0x80) PORTH |= (1<<4);
	else PORTH &= ~(1<<4);

	pulse_low(P_WR, B_WR);

	if(VL & 0x01) PORTE |= (1<<0);
	else PORTE &= ~(1<<0);

	if(VL & 0x02) PORTE |= (1<<1);
	else PORTE &= ~(1<<1);

	if (VL & 0x04) PORTE |= (1<<4);
	else PORTE &= ~(1<<4);

	if (VL & 0x08) PORTE |= (1<<5);
	else PORTE &= ~(1<<5);

	if (VL & 0x10) PORTG |= (1<<5);
	else PORTG &= ~(1<<5);

	if (VL & 0x20) PORTE |= (1<<3);
	else PORTE &= ~(1<<3);

	if (VL & 0x40) PORTH |= (1<<3);
	else PORTH &= ~(1<<3);

	if (VL & 0x80) PORTH |= (1<<4);
	else PORTH &= ~(1<<4);	

	pulse_low(P_WR, B_WR);
#elif defined(__AVR_ATmega32U4__)
	/*
		Pin TFT   Leo   Uno
		-------------------
		D0  DB8   PD2   PD0
		D1  DB9   PD3   PD1
		D2  DB10  PD1   PD2
		D3  DB11  PD0   PD3
		D4  DB12  PD4   PD4
		D5  DB13  PC6   PD5
		D6  DB14  PD7   PD6
		D7  DB15  PE6   PD7
	*/
	if(VH & 0x01) PORTD |= (1<<2);
	else PORTD &= ~(1<<2);

	if(VH & 0x02) PORTD |= (1<<3);
	else PORTD &= ~(1<<3);

	if (VH & 0x04) PORTD |= (1<<1);
	else PORTD &= ~(1<<1);

	if (VH & 0x08) PORTD |= (1<<0);
	else PORTD &= ~(1<<0);

	if (VH & 0x10) PORTD |= (1<<4);
	else PORTD &= ~(1<<4);

	if (VH & 0x20) PORTC |= (1<<6);
	else PORTC &= ~(1<<6);

	if (VH & 0x40) PORTD |= (1<<7);
	else PORTD &= ~(1<<7);

	if (VH & 0x80) PORTE |= (1<<6);
	else PORTE &= ~(1<<6);

	pulse_low(P_WR, B_WR);

	if(VL & 0x01) PORTD |= (1<<2);
	else PORTD &= ~(1<<2);

	if(VL & 0x02) PORTD |= (1<<3);
	else PORTD &= ~(1<<3);

	if (VL & 0x04) PORTD |= (1<<1);
	else PORTD &= ~(1<<1);

	if (VL & 0x08) PORTD |= (1<<0);
	else PORTD &= ~(1<<0);

	if (VL & 0x10) PORTD |= (1<<4);
	else PORTD &= ~(1<<4);

	if (VL & 0x20) PORTC |= (1<<6);
	else PORTC &= ~(1<<6);

	if (VL & 0x40) PORTD |= (1<<7);
	else PORTD &= ~(1<<7);

	if (VL & 0x80) PORTE |= (1<<6);
	else PORTE &= ~(1<<6);	
	
	pulse_low(P_WR, B_WR);
#else
		PORTD = VH;
		pulse_low(P_WR, B_WR);
		PORTD = VL;
		pulse_low(P_WR, B_WR);

#endif
		break;
	}
}

void UTFT::_set_direction_registers(byte mode){
#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega2560__)
		pinMode(0,OUTPUT);
		pinMode(1,OUTPUT);
		pinMode(2,OUTPUT);
		pinMode(3,OUTPUT);
		pinMode(4,OUTPUT);
		pinMode(5,OUTPUT);
		pinMode(6,OUTPUT);
		pinMode(7,OUTPUT);
#else
	DDRD = 0xFF;
#endif
}

Пользуйтесь наздоровье :)

Otheral
Offline
Зарегистрирован: 22.10.2012

Добрый день!

Я взял вашу библиотеку, сама оболочка не ругается.

Закинул на ардуину скетч из примеров библиотеки, все тот же белый экран.

Можете уточнить, какую строку инициализации экрана вы используете и кинуть пример работающего у вас скетча?

Так же хотелось бы уточнить, у вас получилось тач подключить?\

p.s. Вобще странная история, вроде экран есть, а по сути для него  работающего ничего нет)))) как так производитель делает)))

Otheral
Offline
Зарегистрирован: 22.10.2012

Все, пардон, плохо читал посты, строка инициализации UTFT myGLCD(ILI9325D_8,A5,A4,A3,A2);

Про тач, все же, хотелось бы уточнить...

Mysterious
Offline
Зарегистрирован: 25.09.2012

Тач работает и работал.

Производители затачивали эту плату под уно и леонардо. А для меги под этот экран типо нужна плата с разьемами под задний шилд. Для тестирования тача просто запустите демки из набора библиотеки UTFT_Touch

Otheral
Offline
Зарегистрирован: 22.10.2012

Запускал, не получается, экран черный и все...

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

Какую строку вы пишите для тача?

Mysterious
Offline
Зарегистрирован: 25.09.2012

Вот моя строка инициализации тача ITDB02_Touch  myTouch(A1,A2,A0,8,9);

Проверте

Otheral
Offline
Зарегистрирован: 22.10.2012

У меня почему то ITDB не корректно работала

По этому написал так: UTouch myTouch(A1,A2,A0,8,9);

После калибровки все хорошо работает.

Как бы проблема решена)

аандрей
Offline
Зарегистрирован: 24.01.2013

разобрался

Otheral
Offline
Зарегистрирован: 22.10.2012

Будте внимательны, библиотека UTFT обновилась, и все перестало работать. Причем библиотека как ни работала так и не работает, но и заплата тоже перестала работать. Используйте старую версию библиотеки и будет вам счастье...

makstdm
Offline
Зарегистрирован: 21.08.2013

Подкорректировал обновленную библиотеку, теперь работает с мегой2650

строка инициализации такая:  UTFT lcd_tft28(ITDB28,38,39,40,40);

подключать пины tft D0-D7 к меге D22-D29, и пины tft A3-A5 к меге D40-D38

в файле UTFT.cpp строчки в начале привести к следующему виду:


#include "UTFT.h"
#include <pins_arduino.h>

// Include hardware-specific functions for the correct MCU
#if defined(__AVR__)
	#include <avr/pgmspace.h>
	#include "hardware/avr/HW_AVR.h"
	#if defined(__AVR_ATmega1280__)
		#include "hardware/avr/HW_ATmega1280.h"
	#elif defined(__AVR_ATmega2560__)
		#include "hardware/avr/HW_ATmega2560.h"
	#elif defined(__AVR_ATmega328P__)
		#include "hardware/avr/HW_ATmega328P.h"
	#elif defined(__AVR_ATmega32U4__)
		#include "hardware/avr/HW_ATmega32U4.h"
	#elif defined(__AVR_ATmega168__)

а в папке \Мои документы\Arduino\libraries\UTFT\hardware\avr скопировать файл HW_ATmega1280.h и переименовать его в HW_ATmega2650.h

Mysterious
Offline
Зарегистрирован: 25.09.2012

Ну и чем вы в таком случае решили проблему? Я так уже делал до этого .

Фишка не в том что чтото кудато переподключать хардварно. А просто воткнуть шилд в мегу без лишних проводов и чтоб он завелся ) Вот как раз переписывание либы (как я делал чуть выше) решает эту проблему.
 

makstdm
Offline
Зарегистрирован: 21.08.2013

воткнуть в мегу корректно не получится т.к. пины аппаратного I2C находятся на другом порту у 2560 и помешает USB-B на оригинале arduino

Mysterious
Offline
Зарегистрирован: 25.09.2012

Но у меня то получилось и все отлично работает ) да они на другом порту но ноги у шилда там все равно есть. А USB ничуть не мешает, он просто упирается немного в кожух SD картридера но не более.

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Доброго времени!!!! Нужна помощь!!!!

подключил экранчик по технологии-через монтажную плату. Инстализация -UTFT myGLCD(ILI9325D_8,A5,A4,A3,A2); Все демо коды из библеотеки UTFT работают нормально.

Проблема со тачем.  инстализация UTouch      myTouch(A1,A2,A0,8,9); но ни фига не работает -8,9 -на меге что то должно от экрана всуното быть ?

Если не трудно можно фото или просто тупо распиновку из первой схемы в посте -куда что подключать.

Посты прочитал раз пять -уже в распиновки запутался.Работает нормально только сам экран. Нужен ещё что бы тач заработал.

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Все разобрался!!!!!!

Вкрации последователям.

1 ВСЕ делаем на макете -библиотеки не меняем.

Инсталлизация

UTFT myGLCD(ILI9325D_8,A5,A4,A3,A2);

UTouch      myTouch(A1,A2,A0,8,9);

Что визуально должно получиться:

Пихаем в мегу провода от экрана.Все так же как и шильды окромя по верхней схеме в данном посте D0....D7 их пихаем в мегу в цифровые контакты соответствено 22.....29

Далее запускаем коллибровку -и соответственно если надо (программа сама напишит) меняем данные в файле.

P.S. Яне знаю кто этот девайс выпустил -но руки у него золотые но ростут из ЖОПЫ!!!!!

axill
Offline
Зарегистрирован: 05.09.2011

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

Чтобы подключить напрямую без макетки и дополнительного шилда в файле HW_ATmega1280.h нужно вначале файла вставить #define USE_UNO_SHIELD_ON_MEGA

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Ещё одтн вопрос -кто либо SD картой разбирался ? Как заставить её работать ? Куда и что подключать от дисплея к МЕГЕ?

axill
Offline
Зарегистрирован: 05.09.2011

Gagarin74 пишет:

Ещё одтн вопрос -кто либо SD картой разбирался ? Как заставить её работать ? Куда и что подключать от дисплея к МЕГЕ?

не проверял, но теоретически запустить ее можно если найти библиотеку для работы с SD через софтверный SPI

Дело тут в том, что штатная библиотека SD.h работает через SPI.h который чисто железный SPI

В то же время на меге пины 11, 12 и 13 не являются пинами железного SPI, а именно туда шилд подводит MISO, MOSI и SCK от SD карты

поищите библиотеку для работа с SD по софтверному SPI и поделитесь с нами опытом, буду признателен

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Я то поищу. Вопрос в другом -что бы это все заработало как должен дисплей подключен быть ? Не совсем с распиновками разобрался.

 

Вот что в библиотеке нашел с этим дисплеем

http://henningkarlsen.com/electronics/resource/tinyFAT/tinyFAT.pdf

Апрайсин
Апрайсин аватар
Offline
Зарегистрирован: 05.08.2013

а есть у когото старые библиотеки?