Дешевый TFT 2.4" дисплей на spfd5408

StrangerM
Offline
Зарегистрирован: 02.11.2013

Собаки китайские. 

Осторожно - китайские SDmicro & USB http://safeandcheap.ru/2014/04/01/poddelnye-karty-pamyati-microsdhc/

И я погнался за дешевизной. В результате ВСЕ (SDmicro & USB) на 64 гига оказались реально на 6.5-8. Вот здесь купил 4.

http://www.aliexpress.com/item/New-2014-swivel-Usb-flash-drive-stainless-steel-metal-disk-flash-memory-drives-USB-2-0/1684373529.html

http://www.aliexpress.com/item/128MB-8GB-16GB-32GB-64GBMicro-SD-card-SD-HC-Transflash-TF-CARD-USB-2-0-memory/975121514.html

StrangerM
Offline
Зарегистрирован: 02.11.2013

Пришли DS3231 -  заменил в барографе DS1302,  в UNO DS3231(5В питания) подключены параллельно BMP180 (3.3В).

jafff
Offline
Зарегистрирован: 04.10.2014

Подскажите что я делаю не так

http://www.youtube.com/watch?v=WK2nXEeJ2kA&feature=youtu.be

#define LCD_CS A3    
#define LCD_CD A2    
#define LCD_WR A1   
#define LCD_RD A0    
// you can also just connect RESET to the arduino RESET pin
#define LCD_RESET A4
//Duemilanove/Diecimila/UNO/etc ('168 and '328 chips) microcontoller:
// Color definitions
#define	BLACK           0x0000
#define	BLUE            0x001F
#define	RED             0xF800
#define	GREEN           0x07E0
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0 
#define WHITE           0xFFFF

#include "TFTLCD.h"

TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

void setup(void) {
  Serial.begin(9600);
  Serial.println("8 Bit LCD test!");
  
  
  tft.reset();
  

  tft.initDisplay();
  
  testtext(RED);
  delay(2000);
  testlines(CYAN);
  delay(500);
  testfastlines(RED, BLUE);
  delay(500);
  testdrawrects(GREEN);
  delay(500);
  testfillrects(YELLOW, MAGENTA);
  delay(500);
  tft.fillScreen(BLACK);
  testfillcircles(10, MAGENTA);
  testdrawcircles(10, WHITE);
  delay(500); 
  testtriangles();
  delay(500); 
  testfilltriangles();
  delay(500); 
  testRoundRect();
  delay(500); 
  testFillRoundRect();
}

void loop(void) {
  for (uint8_t rotation=0; rotation<4; rotation++) {
    tft.setRotation(rotation); 
    testtext(RED);
    delay(1000);
  }
}



void testFillRoundRect() {
  tft.fillScreen(BLACK);
  
  for (uint16_t x=tft.width(); x > 20 ; x-=6) {
    tft.fillRoundRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, x/8,  tft.Color565(0, x, 0));
 }
}

void testRoundRect() {
  tft.fillScreen(BLACK);
  
  for (uint16_t x=0; x < tft.width(); x+=6) {
    tft.drawRoundRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, x/8, tft.Color565(x, 0, 0));
 }
}

void testtriangles() {
  tft.fillScreen(BLACK);
  for (uint16_t i=0; i<tft.width()/2; i+=5) {
    tft.drawTriangle(tft.width()/2, tft.height()/2-i,
                     tft.width()/2-i, tft.height()/2+i,
                     tft.width()/2+i, tft.height()/2+i, tft.Color565(0, 0, i));
  }
}

void testfilltriangles() {
  tft.fillScreen(BLACK);
  
  for (uint16_t i=tft.width()/2; i>10; i-=5) {
    tft.fillTriangle(tft.width()/2, tft.height()/2-i,
                     tft.width()/2-i, tft.height()/2+i,
                     tft.width()/2+i, tft.height()/2+i, 
                     tft.Color565(0, i, i));
    tft.drawTriangle(tft.width()/2, tft.height()/2-i,
                     tft.width()/2-i, tft.height()/2+i,
                     tft.width()/2+i, tft.height()/2+i, tft.Color565(i, i, 0));    
  }
}
void testtext(uint16_t color) {
  tft.fillScreen(BLACK);
  tft.setCursor(0, 20);
  tft.setTextColor(color);
  tft.setTextSize(1);
  tft.println("Hello World!");
  tft.setTextSize(2);
  tft.println(1234.56);
  tft.setTextSize(3);
  tft.println(0xDEADBEEF, HEX);
}

void testfillcircles(uint8_t radius, uint16_t color) {
  for (uint16_t x=radius; x < tft.width(); x+=radius*2) {
    for (uint16_t y=radius; y < tft.height(); y+=radius*2) {
      tft.fillCircle(x, y, radius, color);
    }
  }  
}

void testdrawcircles(uint8_t radius, uint16_t color) {
  for (uint16_t x=0; x < tft.width()+radius; x+=radius*2) {
    for (uint16_t y=0; y < tft.height()+radius; y+=radius*2) {
      tft.drawCircle(x, y, radius, color);
    }
  }  
}


void testfillrects(uint16_t color1, uint16_t color2) {
 tft.fillScreen(BLACK);
 for (uint16_t x=tft.width()-1; x > 6; x-=6) {
   //Serial.println(x, DEC);
   tft.fillRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color1);
   tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color2);
 }
}

void testdrawrects(uint16_t color) {
 tft.fillScreen(BLACK);
 for (uint16_t x=0; x < tft.width(); x+=6) {
   tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color);
 }
}

void testfastlines(uint16_t color1, uint16_t color2) {
   tft.fillScreen(BLACK);
   for (uint16_t y=0; y < tft.height(); y+=5) {
     tft.drawHorizontalLine(0, y, tft.width(), color1);
   }
   for (uint16_t x=0; x < tft.width(); x+=5) {
     tft.drawVerticalLine(x, 0, tft.height(), color2);
   }
  
}

void testlines(uint16_t color) {
   tft.fillScreen(BLACK);
   for (uint16_t x=0; x < tft.width(); x+=6) {
     tft.drawLine(0, 0, x, tft.height()-1, color);
   }
   for (uint16_t y=0; y < tft.height(); y+=6) {
     tft.drawLine(0, 0, tft.width()-1, y, color);
   }
   
   tft.fillScreen(BLACK);
   for (uint16_t x=0; x < tft.width(); x+=6) {
     tft.drawLine(tft.width()-1, 0, x, tft.height()-1, color);
   }
   for (uint16_t y=0; y < tft.height(); y+=6) {
     tft.drawLine(tft.width()-1, 0, 0, y, color);
   }
   
   tft.fillScreen(BLACK);
   for (uint16_t x=0; x < tft.width(); x+=6) {
     tft.drawLine(0, tft.height()-1, x, 0, color);
   }
   for (uint16_t y=0; y < tft.height(); y+=6) {
     tft.drawLine(0, tft.height()-1, tft.width()-1, y, color);
   }

   tft.fillScreen(BLACK);
   for (uint16_t x=0; x < tft.width(); x+=6) {
     tft.drawLine(tft.width()-1, tft.height()-1, x, 0, color);
   }
   for (uint16_t y=0; y < tft.height(); y+=6) {
     tft.drawLine(tft.width()-1, tft.height()-1, 0, y, color);
   }
}


void testBars() {
  uint16_t i,j;
  for(i=0; i < tft.height(); i++)
  {
    for(j=0; j < tft.width(); j++)
    {
      if(i>279) tft.writeData(WHITE);
      else if(i>239) tft.writeData(BLUE);
      else if(i>199) tft.writeData(GREEN);
      else if(i>159) tft.writeData(CYAN);
      else if(i>119) tft.writeData(RED);
      else if(i>79) tft.writeData(MAGENTA);
      else if(i>39) tft.writeData(YELLOW);
      else tft.writeData(BLACK);
    }
  }
}

 

StrangerM
Offline
Зарегистрирован: 02.11.2013

Кстати, снова получил 2-е пары УНО+ТФТ2.4. Теперь уже нормально работает исходная библиотека. Ну и еще. Удалось раскодировать  !AIVDM посылку от АИС. Правда только первого типа. Ну и то хорошо. Теперь можно сделать автономный  (без ПК) оповещатель на АИС+ГПС+МЕГА о опасном сближении.

А на ебае (на Али нет) появились интересные модули и не сильно дорого ГПС/ГЛОНАСС на довольно новом чипе с подходящим для Ардуины интерфейсом. http://www.ebay.com/itm/171493874434?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

До кучи. На всех у-вах поменял часы на DS3231 - не просто хорошо, очень хорошо ходят.

 

sandr4
sandr4 аватар
Offline
Зарегистрирован: 11.02.2015

StrangerM, расскажите пожалуйста, как "подружили" 2,4 TFT LCD c mega2560 ? У меня кроме как с библиотекой SWTFT работать не хочет.

А библиотека эта очень "скудная" на мой взгляд. Пытался воткнуть в неё шрифты - не выходит. Помогите чем - нибудь,

пожалуйста...

Ares_ekb
Offline
Зарегистрирован: 09.01.2015

Если он на ili9341, то я подключал через понижатель напряжения:

http://arduino.ru/forum/apparatnye-voprosy/displei-na-ili9341?page=1#com...

с этой библиотекой:

https://github.com/gmtii/ili9341-arduino

но сначала в ней нужно исправить ошибку.

sandr4
sandr4 аватар
Offline
Зарегистрирован: 11.02.2015

Ares_ekb пишет:

Если он на ili9341, то я подключал через понижатель напряжения:

Ардуино монитор говорит что контроллер 7783, а для него в друине только библиотека SWTFT подходит(чтоб дисплей воткнуть в мегу). Другие библиотеки, как не пытался, не подходят...

adel
adel аватар
Offline
Зарегистрирован: 03.02.2015

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

// Найти дисплей TFT
Идентификатор uint16_t = tft.readRegister (0x0);
если  (идентификатор == 0x9325) {
   Serial.println ( "Найдено ILI9325" );
} еще  , если  (указать == 0x9328) {
   Serial.println ( "Найдено ILI9328" );
} еще  {
   Serial.print ( "Unknown чип водитель" );
   Serial.println (идентификатор, HEX);
   в то время как  (1);
}

кстати из примера TFTLCD натест цвета постоянно выдает ошибки по цветам при компиляции

adel
adel аватар
Offline
Зарегистрирован: 03.02.2015

скачал библиотеку и тест запустился

https://github.com/Smoke-And-Wires/TFT-Shield-Example-Code

sandr4
sandr4 аватар
Offline
Зарегистрирован: 11.02.2015

Вот здесь есть код осцилографа на дисплей с 7783 контроллером и MEGA 2560, если кого-то интересует.

Spyer
Offline
Зарегистрирован: 07.04.2014
jafff, у меня также было, установил https://github.com/Smoke-And-Wires/TFT-Shield-Example-Code/tree/master/SWTFT-Shield - ну и все пошло работать.
adel
adel аватар
Offline
Зарегистрирован: 03.02.2015

ребят, а вообще кроме этого экрана что нить то можно подключить к ардуино то?

есть ли какие то платы расширения? или переходник по типу i2C для LCD1602 чтобы уменьшить количество проводов?

Dasha2
Offline
Зарегистрирован: 27.06.2015

StrangerM пишет:

Кстати, снова получил 2-е пары УНО+ТФТ2.4. Теперь уже нормально работает исходная библиотека. Ну и еще. Удалось раскодировать  !AIVDM посылку от АИС. Правда только первого типа. Ну и то хорошо. Теперь можно сделать автономный  (без ПК) оповещатель на АИС+ГПС+МЕГА о опасном сближении.

А на ебае (на Али нет) появились интересные модули и не сильно дорого ГПС/ГЛОНАСС на довольно новом чипе с подходящим для Ардуины интерфейсом. http://www.ebay.com/itm/171493874434?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

До кучи. На всех у-вах поменял часы на DS3231 - не просто хорошо, очень хорошо ходят.

 

Привет форумчане!

имею уно с 2,4 tft перепробовала всякие библиотеки. В этой SWTFT-Shield в примере graphicstest Только помаргивание подсветки на экране. На серийном мониторе

TFT LCD test
LCD driver chip: C0C0
Benchmark                Time (microseconds)
Screen fill              1321916
Text                     192136
Lines                    1050436
Horiz/Vert Lines         137248
Rectangles (outline)     99908
Rectangles (filled)      3068700
Circles (filled)         1207848
Circles (outline)        454896
Triangles (outline)      333340
Triangles (filled)       1665420
Rounded rects (outline)  212944
Rounded rects (filled)   3586552
Done!
Откуда плясать и в какую сторону ? :(

adel
adel аватар
Offline
Зарегистрирован: 03.02.2015

скорее всего что то с адресом устройства - поколдуй в тех местах

Dasha2
Offline
Зарегистрирован: 27.06.2015

Брали 1602 i2C  тоже проблема с адресом была. Пока не отсканировали. А здесь где адрес прописывается?

Dasha2
Offline
Зарегистрирован: 27.06.2015

китаянка прислала номер чипа 9341

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

adel пишет:

скорее всего что то с адресом устройства - поколдуй в тех местах

О.о адресс? эт в смысле почтовый чтоли? вы там че курите?

какой нафиг адресс у дисплея подключеного по 8 битной шине?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Dasha2 пишет:

Брали 1602 i2C  тоже проблема с адресом была. Пока не отсканировали. А здесь где адрес прописывается?

да нигде не прописывается... вы вообще инструкции читаете? или так на обум проводками тыкаете?

может покажете схему подключения?

Dasha2
Offline
Зарегистрирован: 27.06.2015

какой программой  можно определить модель чипа?

Dasha2
Offline
Зарегистрирован: 27.06.2015

Да нет проводков UNO и 2,4 TFT  http://www.aliexpress.com/item/UNO-R3-MEGA328P-ATMEGA16U2-For-Arduino-2-...

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Dasha2 пишет:

какой программой  можно определить модель чипа?

никакой! только старый добрый научный тык

Dasha2
Offline
Зарегистрирован: 27.06.2015

в библиотеке Adafruit_TFTLCD  9341 прописан, значит чип другой :(

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Dasha2 пишет:

в библиотеке Adafruit_TFTLCD  9341 прописан, значит чип другой :(

в этой?

https://github.com/adafruit/TFTLCD-Library

тогда вот эта точно заработает..

https://docs.google.com/file/d/0B1tvU2HSF0Whc0I0cFdTTGVwSUk/edit?usp=sha...

Dasha2
Offline
Зарегистрирован: 27.06.2015

у меня эта библиотека не пошла, тк выдает ошибку по фонтам "glcdfont"   как и где исправить на константу (variable 'font' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 static unsigned char  font[] PROGMEM = {)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

какая именно из двух?

Dasha2
Offline
Зарегистрирован: 27.06.2015

вторая

Dasha2
Offline
Зарегистрирован: 27.06.2015

Arduino: 1.6.0 (Windows XP), Плата"Arduino Uno"

In file included from C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,
                 from C:\Documents and Settings\Admin\РњРѕРё документы\Arduino\libraries\TFTLCD/TFTLCD.h:2,
                 from graphicstest.pde:20:
C:\Documents and Settings\Admin\Мои документы\Arduino\libraries\TFTLCD/glcdfont.c:9:30: error: variable 'font' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 static unsigned char  font[] PROGMEM = {
                              ^
Ошибка компиляции.

  This report would have more information with
  "Отображать вывод во время компиляции"
  enabled in File > Preferences.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

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

ну либо как вариант поставить ИДЕ 1.0.5 и скомпилировать пример из второй библиотеки

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

как вариант можете просто соединить проводками

и использовать библиотеку адафруит

// Shield pin usage:
  // LCD Data Bit : 7 6 5 4 3 2 1 0
  // Digital pin #: 7 6 13 4 11 10 9 8
  // Uno port/pin : PD7 PD6 PB5 PD4 PB3 PB2 PB1 PB0
  // Mega port/pin: PH4 PH3 PB7 PG5 PB5 PB4 PH6 PH5
  // Leo port/pin : PE6 PD7 PC7 PD4 PB7 PB6 PB5 PB4
  // Due port/pin : PC23 PC24 PB27 PC26 PD7 PC29 PC21 PC22

 

Вячеслав 151
Offline
Зарегистрирован: 25.03.2015

1.0.5  не дало результата. :(  По экрану пошла рябь. Где то что то еще. . .

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Вячеслав 151 пишет:

1.0.5  не дало результата. :(  По экрану пошла рябь. Где то что то еще. . .

конечно :)

я же написал, китайцы развели пины попорядку. как им было удобней.. а в оригинальной версии пины разведены по портам!!!

нужно взять свою плату и фото оригинлаьной платы вверх ногами. сопоставить и соединить проводками как положено! найдите 8 отличий :)

http://www.adafruit.com/images/970x728/376-01.jpg

Вячеслав 151
Offline
Зарегистрирован: 25.03.2015

где можно увидеть оригинал?

 

Вячеслав 151
Offline
Зарегистрирован: 25.03.2015

это в 79-ом?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Вячеслав 151 пишет:

где можно увидеть оригинал?

все форки бибилотек ведут сюда

http://www.adafruit.com/images/970x728/376-01.jpg

Вячеслав 151
Offline
Зарегистрирован: 25.03.2015

ссылка битая. Как исправить ошибку компиляции ?

Arduino: 1.6.0 (Windows XP), Плата"Arduino Uno"

C:\Program Files\Arduino\libraries\UTFT\DefaultFonts.c:21:14: error: variable 'SmallFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 fontdatatype SmallFont[1144] PROGMEM={        ?

это начало файла с фонтами

// DO NOT ADD YOUR OWN FONTS TO THIS FILE
// If you want to use your own fonts you should just drop the font .c file into your sketch folder.
// ------------------------------------------------------------------------------------------------

#if defined(__AVR__)
    #include <avr/pgmspace.h>
    #define fontdatatype uint8_t
#elif defined(__PIC32MX__)
    #define PROGMEM
    #define fontdatatype const unsigned char
#elif defined(__arm__)
    #define PROGMEM
    #define fontdatatype const unsigned char
#endif

// SmallFont.c
// Font Size    : 8x12
// Memory usage    : 1144 bytes
// # characters    : 95

fontdatatype SmallFont[1144] PROGMEM={         
0x08,0x0C,0x20,0x5F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <Space>

 

 

Вячеслав 151
Offline
Зарегистрирован: 25.03.2015

сегодня ссылка открылась. теперь вижу, что распиновка совсем другая. :(

Буду на доске оживлять

Booter_ghost
Offline
Зарегистрирован: 03.06.2015

Вячеслав 151 пишет:

сегодня ссылка открылась. теперь вижу, что распиновка совсем другая. :(

Буду на доске оживлять

Получилось?

Сегодня весь день пытался оживить такое-же чудо. Добился только ряби.

Ляжки экрана -

http://tiptopboards.com/1151-thickbox/shield-d-%C3%A9cran-tactile-couleur-tft-24-pouces-pour-arduino.jpg

Перепробовал все что тут описывалось((.

2. Puhlyaviy - #84,ссылочка битая.

Вячеслав 151
Offline
Зарегистрирован: 25.03.2015

Нет. пока не оживил. Отложил. Пусть вылежиться

Booter_ghost
Offline
Зарегистрирован: 03.06.2015

Вячеслав 151 пишет:

ссылка битая. Как исправить ошибку компиляции ?

Arduino: 1.6.0 (Windows XP), Плата"Arduino Uno"

C:\Program Files\Arduino\libraries\UTFT\DefaultFonts.c:21:14: error: variable 'SmallFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 fontdatatype SmallFont[1144] PROGMEM={        ?

это начало файла с фонтами

// DO NOT ADD YOUR OWN FONTS TO THIS FILE
// If you want to use your own fonts you should just drop the font .c file into your sketch folder.
// ------------------------------------------------------------------------------------------------

#if defined(__AVR__)
    #include <avr/pgmspace.h>
    #define fontdatatype uint8_t
#elif defined(__PIC32MX__)
    #define PROGMEM
    #define fontdatatype const unsigned char
#elif defined(__arm__)
    #define PROGMEM
    #define fontdatatype const unsigned char
#endif

// SmallFont.c
// Font Size    : 8x12
// Memory usage    : 1144 bytes
// # characters    : 95

fontdatatype SmallFont[1144] PROGMEM={         
0x08,0x0C,0x20,0x5F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <Space>

 

 

Кстаити, чтоб ента вещь запустилась, блокнотиком меняем на " const fontdatatype SmallFont[1144] PROGMEM={ " мне помогло.

PJ_M
Offline
Зарегистрирован: 19.08.2015

StrangerM пишет:

Я заказываю их в паре вот здесь, отправляют довольно быстро http://www.aliexpress.com/item/UNO-R3-MEGA328P-ATMEGA16U2-For-Arduino-2-4-Inch-TFT-Touch-LCD-Screen-Module-For-Arduino/1626154462.html

Здравствуйте достопочтенный StrangerM, подскажите как вам удалось запустить сие чудо. У меня заказ прям с такой же ссылки, но как не крутил какие библиотеки не загружал запустить не получилось. При подключении к USB горит подсветка и все. Загружаю пример из библлиотеки:

#define LCD_CS A3    
#define LCD_CD A2    
#define LCD_WR A1   
#define LCD_RD A0    
// you can also just connect RESET to the arduino RESET pin
#define LCD_RESET A4
//Duemilanove/Diecimila/UNO/etc ('168 and '328 chips) microcontoller:
// Color definitions
#define  BLACK           0x0000
#define BLUE            0x001F
#define RED             0xF800
#define GREEN           0x07E0
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0 
#define WHITE           0xFFFF

#include "TFTLCD.h"

TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

void setup(void) {
  Serial.begin(9600);
  Serial.println("8 Bit LCD test!");
  
  
  tft.reset();
  

  tft.initDisplay();
  
  testtext(RED);
  delay(2000);
  testlines(CYAN);
  delay(500);
  testfastlines(RED, BLUE);
  delay(500);
  testdrawrects(GREEN);
  delay(500);
  testfillrects(YELLOW, MAGENTA);
  delay(500);
  tft.fillScreen(BLACK);
  testfillcircles(10, MAGENTA);
  testdrawcircles(10, WHITE);
  delay(500); 
  testtriangles();
  delay(500); 
  testfilltriangles();
  delay(500); 
  testRoundRect();
  delay(500); 
  testFillRoundRect();
}

void loop(void) {
  for (uint8_t rotation=0; rotation<4; rotation++) {
    tft.setRotation(rotation); 
    testtext(RED);
    delay(1000);
  }
}



void testFillRoundRect() {
  tft.fillScreen(BLACK);
  
  for (uint16_t x=tft.width(); x > 20 ; x-=6) {
    tft.fillRoundRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, x/8,  tft.Color565(0, x, 0));
 }
}

void testRoundRect() {
  tft.fillScreen(BLACK);
  
  for (uint16_t x=0; x < tft.width(); x+=6) {
    tft.drawRoundRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, x/8, tft.Color565(x, 0, 0));
 }
}

void testtriangles() {
  tft.fillScreen(BLACK);
  for (uint16_t i=0; i<tft.width()/2; i+=5) {
    tft.drawTriangle(tft.width()/2, tft.height()/2-i,
                     tft.width()/2-i, tft.height()/2+i,
                     tft.width()/2+i, tft.height()/2+i, tft.Color565(0, 0, i));
  }
}

void testfilltriangles() {
  tft.fillScreen(BLACK);
  
  for (uint16_t i=tft.width()/2; i>10; i-=5) {
    tft.fillTriangle(tft.width()/2, tft.height()/2-i,
                     tft.width()/2-i, tft.height()/2+i,
                     tft.width()/2+i, tft.height()/2+i, 
                     tft.Color565(0, i, i));
    tft.drawTriangle(tft.width()/2, tft.height()/2-i,
                     tft.width()/2-i, tft.height()/2+i,
                     tft.width()/2+i, tft.height()/2+i, tft.Color565(i, i, 0));    
  }
}
void testtext(uint16_t color) {
  tft.fillScreen(BLACK);
  tft.setCursor(0, 20);
  tft.setTextColor(color);
  tft.setTextSize(1);
  tft.println("Hello World!");
  tft.setTextSize(2);
  tft.println(1234.56);
  tft.setTextSize(3);
  tft.println(0xDEADBEEF, HEX);
}

void testfillcircles(uint8_t radius, uint16_t color) {
  for (uint16_t x=radius; x < tft.width(); x+=radius*2) {
    for (uint16_t y=radius; y < tft.height(); y+=radius*2) {
      tft.fillCircle(x, y, radius, color);
    }
  }  
}

void testdrawcircles(uint8_t radius, uint16_t color) {
  for (uint16_t x=0; x < tft.width()+radius; x+=radius*2) {
    for (uint16_t y=0; y < tft.height()+radius; y+=radius*2) {
      tft.drawCircle(x, y, radius, color);
    }
  }  
}


void testfillrects(uint16_t color1, uint16_t color2) {
 tft.fillScreen(BLACK);
 for (uint16_t x=tft.width()-1; x > 6; x-=6) {
   //Serial.println(x, DEC);
   tft.fillRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color1);
   tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color2);
 }
}

void testdrawrects(uint16_t color) {
 tft.fillScreen(BLACK);
 for (uint16_t x=0; x < tft.width(); x+=6) {
   tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color);
 }
}

void testfastlines(uint16_t color1, uint16_t color2) {
   tft.fillScreen(BLACK);
   for (uint16_t y=0; y < tft.height(); y+=5) {
     tft.drawHorizontalLine(0, y, tft.width(), color1);
   }
   for (uint16_t x=0; x < tft.width(); x+=5) {
     tft.drawVerticalLine(x, 0, tft.height(), color2);
   }
  
}

void testlines(uint16_t color) {
   tft.fillScreen(BLACK);
   for (uint16_t x=0; x < tft.width(); x+=6) {
     tft.drawLine(0, 0, x, tft.height()-1, color);
   }
   for (uint16_t y=0; y < tft.height(); y+=6) {
     tft.drawLine(0, 0, tft.width()-1, y, color);
   }
   
   tft.fillScreen(BLACK);
   for (uint16_t x=0; x < tft.width(); x+=6) {
     tft.drawLine(tft.width()-1, 0, x, tft.height()-1, color);
   }
   for (uint16_t y=0; y < tft.height(); y+=6) {
     tft.drawLine(tft.width()-1, 0, 0, y, color);
   }
   
   tft.fillScreen(BLACK);
   for (uint16_t x=0; x < tft.width(); x+=6) {
     tft.drawLine(0, tft.height()-1, x, 0, color);
   }
   for (uint16_t y=0; y < tft.height(); y+=6) {
     tft.drawLine(0, tft.height()-1, tft.width()-1, y, color);
   }

   tft.fillScreen(BLACK);
   for (uint16_t x=0; x < tft.width(); x+=6) {
     tft.drawLine(tft.width()-1, tft.height()-1, x, 0, color);
   }
   for (uint16_t y=0; y < tft.height(); y+=6) {
     tft.drawLine(tft.width()-1, tft.height()-1, 0, y, color);
   }
}


void testBars() {
  uint16_t i,j;
  for(i=0; i < tft.height(); i++)
  {
    for(j=0; j < tft.width(); j++)
    {
      if(i>279) tft.writeData(WHITE);
      else if(i>239) tft.writeData(BLUE);
      else if(i>199) tft.writeData(GREEN);
      else if(i>159) tft.writeData(CYAN);
      else if(i>119) tft.writeData(RED);
      else if(i>79) tft.writeData(MAGENTA);
      else if(i>39) tft.writeData(YELLOW);
      else tft.writeData(BLACK);
    }
  }
}

Выдает ошибку: lcdfont.c:9:23: error: variable 'font' must be const in order to be put into read-only section by means of '__attribute__((progmem))' ​static unsigned char  font[] PROGMEM = {

Тест выдает вот такую штуку:

TFT LCD test
LCD driver chip: D365
Benchmark                Time (microseconds)
Screen fill              1321916
Text                     192372
Lines                    1050440
Horiz/Vert Lines         137248
Rectangles (outline)     99908
Rectangles (filled)      3068716
Circles (filled)         1207844
Circles (outline)        454888
Triangles (outline)      333336
Triangles (filled)       1665428
Rounded rects (outline)  212940
Rounded rects (filled)   3586548
Done!

Нажимаю ресет и:

TFT LCD test
LCD driver chip: 4040
Benchmark                Time (microseconds)
Screen fill              1321920
Text                     192372
Lines                    1050440
Horiz/Vert Lines         137248
Rectangles (outline)     99908
Rectangles (filled)      3068704
Circles (filled)         1207840
Circles (outline)        454892
Triangles (outline)      333336
Triangles (filled)       1665428
Rounded rects (outline)  212940
Rounded rects (filled)   3586548
Done!

За любую помощь буду премного благодарен.

Booter_ghost
Offline
Зарегистрирован: 03.06.2015

Попробуйте то, что писалось постом выше (#89), библиотеку должен переварить.

Выдает ошибку: lcdfont.c:9:23: error: variable 'font' must be const in order to be put into read-only section by means of '__attribute__((progmem))' ​static unsigned char  font[] PROGMEM = {

Это он говорит что 'font' должен быть константой. Я менял и файлик кушался.

StrangerM
Offline
Зарегистрирован: 02.11.2013

Прошу извинить за задержку с ответами. Давно не смотрел форум. И давно не занимался экранчиками. Вот рабочий код барографа для пары ТФТ2.4 +УНО. Чем могу.

#include <SD.h>
#include "TFTLCD.h"
#include "TouchScreen.h"
#include <Wire.h> 
#include <BMP085.h>
#include <EEPROM.h>
#include <RTClib.h>

RTC_DS1307 RTC;

//Duemilanove/Diecimila/UNO/etc ('168 and '328 chips) microcontoller:



#define YP A1  // must be an analog pin, use "An" notation!
#define XM A2  // must be an analog pin, use "An" notation!
#define YM 7   // can be a digital pin
#define XP 6   // can be a digital pin

#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940

byte nfa=0 ;
int nsd=0 ;
int iT=0 ;
int Time1=0 ;
// int Temp[5]  ;
//int Press[60] ;

// nf=EEPROM.read(nsd);
// nf=nf+1 ;
 // EEPROM.write(nsd, nf);
 // delay(100) ;
char testFile[]="data" ;  //=char(nf)+"data.txt" 


int NF=0 ; 
int P1=0 ;
char P='A' ;


//int Timeco=1000 ; // Timeco=24*3600 000*Суток/320=270 000*Суток
// Суток*24/240=0.1*Суток (час/точек) - 10/Суток точек в час 
//#define testFile  "test_4.txt" 
int Sutok = 2 ;
unsigned long  Timeco= 270000*Sutok ;
unsigned long  RTime=0 ; //270 000*Sutok
//int Press0=700 ; // 700-796
//float Pressco=2.5 ;//Полная панель 240, 1 мм.р.ст.-2.5 точки
// 1 делениe 40 точек 40/2.5=16 мм
int Press0=730 ; //730-790
float Pressco=4 ;//Полная панель 240, 1 мм.р.ст.-2.5 точки
// 1 делениe 40 точек 40/10=4
float DP=40/Pressco ;
#define BOXSIZE 40
#define PENRADIUS 1
int oldcolor, currentcolor;
long Temperature = 0, Pressure = 0, Altitude = 0;

// For better pressure precision, we need to know the resistance
// between X+ and X- Use any multimeter to read it
// For the one we're using, its 300 ohms across the X plate
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0 
// optional
#define LCD_RESET A4

// Color definitions
#define	BLACK           0x0000
#define	BLUE            0x001F
#define	RED             0xF800
#define	GREEN           0x07E0
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0 
#define WHITE           0xFFFF



TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);


BMP085 dps = BMP085();     


#define SD_CS 10     // Set the chip select line to whatever you use (10 doesnt 
File myFile;

void setup(void) {
  nfa=EEPROM.read(nsd);
 nfa=nfa+1 ;
  EEPROM.write(nsd, nfa);
  delay(100) ;
 // testFile[0]='d' ;
 //testFile[1]='a' ;
 //  testFile[2]='t' ;
 // testFile[3]='a' ;
//testFile="data"  ; //char(nfa) ;
//EEPROM.write(nsd, 0);
  
  Serial.begin(9600);
  Serial.println(testFile);
Serial.println(nfa);
  tft.reset();
  tft.initDisplay(); 
  tft.fillScreen(BLACK);
//Рисование кнопок
DrawButton() ;
//SD карта - запись коэфф.
  pinMode(13, OUTPUT);
  Wire.begin(); 
  delay(100);
  dps.init();  
  // Wire.begin();
    RTC.begin();
        // following line sets the RTC to the date & time this sketch was compiled
  //  RTC.adjust(DateTime(__DATE__, __TIME__));
  pinMode(10, OUTPUT);
  if (!SD.begin(10)) {
//  tft.println("initialization failed!");
   return;
  }
  // tft.println("Int 25.02.2014 -23.52");
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  //SD.remove (testFile) ;
  myFile = SD.open(testFile, FILE_WRITE);
  if (myFile) {
    // tft.print("Writing to test1.txt...");
    //  myFile.println("testing 1, 2, 3.");
    myFile.print("11-03 - 17-12 270000  "); //Заголовок файла
    myFile.print("Timeco="); 
    myFile.print(Timeco);
    myFile.print("  Sutok="); 
    myFile.print(Sutok);
    myFile.print("NF"); 
    myFile.println(nfa);
     //close the file:
    myFile.close();
    //tft.println("done.");
  } 
  else {
    // if the file didn't open, print an error:
 //   tft.println("error opening test1.txt");
  }
  
}



#define MINPRESSURE 10
#define MAXPRESSURE 1000



void loop()
{
   DateTime now = RTC.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
 
  // Точка ТСкрина
  //digitalWrite(13, HIGH);
  //Point p = ts.getPoint();
  //digitalWrite(13, LOW);
  //pinMode(XM, OUTPUT);
  //pinMode(YP, OUTPUT);
  //pinMode(YM, OUTPUT); 
 // Button () ; //!!!!!!!!!!
  // we have some minimum pressure we consider 'valid'
  // pressure of 0 means no pressing!
//Конец работы с экраном
//Запись давления на экран и в файл
//Чтение из ВМР085
 dps.getPressure(&Pressure); 
  dps.getAltitude(&Altitude); 
  dps.getTemperature(&Temperature);
  //cli() ;
  //tft.fillScreen(BLACK);
  delay(100) ;
  wrdata() ;
//  writedrawdata (Temperature*0.1, Pressure/133.3) ;
 // sei() ;
  // delay(2000);
  // tft.fillRect(0,0,320, 240, BLACK); 
  // DrawButton() ;
  
  iT=millis()/Timeco ;
 if (iT<320) {
   iT=iT  ;
   currentcolor=WHITE ;
  }
 else {
 if (iT<640) {
   iT=iT-320 ;
   currentcolor=RED ;
 }
 else {
  if (iT<960) {
   iT=iT-640 ;
   currentcolor=GREEN;
 }
 else {
 if (iT<1280) {
   iT=iT-960 ;
   currentcolor=MAGENTA;
 }
 else {
 if (iT<1600) {
   iT=iT-1280 ;
   currentcolor=BLUE;
 }
 else {
  if (iT<1920) {
   iT=iT-1600 ;
   currentcolor=YELLOW ;
 }
 else {
 if (iT<2240) {
   iT=iT-1920 ;
   currentcolor=CYAN;
 }
 } 
 }
 }
 }
 }
 }
  
  
  
  //tft.fillCircle(millis()/270000 , 240-2*(int(Pressure/133.3) - 700),   PENRADIUS, currentcolor);
  ////tft.fillCircle(millis()/Timeco , 240-((Pressco*Pressure/133.3) - Pressco*Press0),   PENRADIUS, currentcolor);
  tft.fillCircle(iT , 240-((Pressco*Pressure/133.3) - Pressco*Press0),   PENRADIUS, currentcolor);
  // tft.fillCircle(millis()/1000 , 240-2*(int(Pressure/133.3) - 700),   PENRADIUS, currentcolor);
     currentcolor=WHITE ;
  
 
   // iT=millis()/Timeco ;
 //   Temp[iT]= 2 ; //Temperature*0.1  ;
  //Press[iT]=Pressure/133.3 ;
   
 // Запись строки файла и коэфф.
    tft.setRotation(1);
    tft.setCursor(0, 24);
    tft.setTextColor(WHITE);  
    tft.setTextSize(2);
    tft.print("Sutok="); 
    tft.print(Sutok); 
    tft.print("  "); 
    tft.print(testFile);
    tft.println(int(nfa));
    tft.setCursor(0, 20+BOXSIZE);
    tft.setTextSize(2);
    tft.print(int(Press0+4*DP)); 
    tft.setCursor(0, 20+BOXSIZE*2);
       tft.print(int(Press0+3*DP)); 
       tft.setCursor(0, 20+BOXSIZE*3);
       tft.print(int(Press0+2*DP)); 
       tft.setCursor(0, 20+BOXSIZE*4);
       tft.print(int(Press0+DP)); 
       tft.setCursor(0, 20+BOXSIZE*5);
       tft.print(int(Press0)); 

  // Печать на ЖК красной строки 
  tft.fillRect(0,235,320, 240, BLACK); //Какие-то точники внизу
 // tft.fillRect((BOXSIZE*2)+1,236,(BOXSIZE*2)+2, 239, BLACK); //Какие-то точники внизу
 // tft.drawLine(0, BOXSIZE*3, 239-BOXSIZE, BOXSIZE*3, WHITE);
  //tft.drawLine(0, BOXSIZE*4, 239-BOXSIZE, BOXSIZE*4, WHITE);
  //DrawButton() ;
  tft.fillRect(0,0,319, 20, BLACK);
  tft.setCursor(0, 0);
  tft.setTextColor(WHITE);  
  tft.setTextSize(3);
  tft.print(int(Temperature*0.1));
  tft.print("C ");
  tft.print(int(Pressure/133.3)); 
  tft.print("mm ");
  tft.setTextSize(2);
   //tft.print(now.year(), DEC);
   // tft.print('/');
   tft.print(now.day(), DEC);
    tft.print('/');
     tft.print(now.month(), DEC);
    
    tft.print(' ');
    tft.print(now.hour(), DEC);
    tft.print(':');
    tft.print(now.minute(), DEC);
 // tft.setCursor(180, 0); 
 // tft.print("Pk=") ; 
  //tft.print(Pressco) ;
   

  // delay(67500); 
 Timedely(Timeco) ;  // Задержка и индикация работы
  //  delay(Timeco); 
  // delay(20000);
  
}
// Пошли функции!!!!!!!!!!!!

void Timedely(unsigned long XT) {
 // DateTime now = RTC.now();
  unsigned long NTime ;
  NTime= millis(); 
  while (millis() < (XT+NTime)) {
    tft.fillRect(0,0,319, 20, BLACK);
  tft.setCursor(0, 0);
  tft.setTextColor(WHITE);  
  tft.setTextSize(3);
  tft.print(int(Temperature*0.1));
  tft.print("C ");
  tft.print(int(Pressure/133.3)); 
  tft.print("mm ");
  DateTime now = RTC.now();
   tft.setTextSize(2);
   //tft.print(now.year(), DEC);
   // tft.print('/');
   tft.print(now.day(), DEC);
    tft.print('/');
     tft.print(now.month(), DEC);
    
    tft.print(' ');
    tft.print(now.hour(), DEC);
    tft.print(':');
    tft.print(now.minute(), DEC);
  tft.setCursor(180, 0); 
 // tft.print("Pk=") ; 
  //tft.print(Pressco) ;
    //tft.fillCircle(15 , 60,   PENRADIUS, GREEN);
    delay(10000) ;
     // tft.fillCircle(15 , 60,   PENRADIUS, BLACK);
    //tft.print(" ");
   // delay(1000) ;
   // Serial.println(XT) ;
  } 
  //delay(XT); 
}


void DrawButton() {
//Рисование кнопок
 tft.setRotation(0);
 // tft.drawRect(0, 0, BOXSIZE, BOXSIZE, RED);
  // tft.setCursor(10, 10);
  //tft.setTextColor(WHITE);  
  //tft.setTextSize(3);
  //tft.print("+");
  
   // tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);
  //tft.setCursor(10+BOXSIZE, 10);
   // tft.print("|");
  //tft.setTextSize(1);
 // tft.drawLine(0, 0, 0, 319, WHITE);
  tft.drawLine(BOXSIZE, 0, BOXSIZE, 319, WHITE);
 // tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN);
  tft.drawLine(BOXSIZE*2, 0, BOXSIZE*2, 319, WHITE);
 // tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN);
  tft.drawLine(BOXSIZE*3, 0, BOXSIZE*3, 319, WHITE);
  //tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE);
  tft.drawLine(BOXSIZE*4, 0, BOXSIZE*4, 319, WHITE);
 // tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA);
  tft.drawLine(BOXSIZE*5, 0, BOXSIZE*5, 319, WHITE);
  // tft.drawRect(BOXSIZE*6, 0, BOXSIZE, BOXSIZE, WHITE);

  tft.drawLine(0, BOXSIZE, 239-BOXSIZE, BOXSIZE, WHITE);
  tft.drawLine(0, BOXSIZE*2, 239-BOXSIZE, BOXSIZE*2, WHITE);
  tft.drawLine(0, BOXSIZE*3, 239-BOXSIZE, BOXSIZE*3, WHITE);
  tft.drawLine(0, BOXSIZE*4, 239-BOXSIZE, BOXSIZE*4, WHITE);
  tft.drawLine(0, BOXSIZE*5, 239-BOXSIZE, BOXSIZE*5, WHITE);
  tft.drawLine(0, BOXSIZE*6, 239-BOXSIZE, BOXSIZE*6, WHITE);
  tft.drawLine(0, BOXSIZE*7, 239-BOXSIZE, BOXSIZE*7, WHITE);
  // tft.drawLine(0, BOXSIZE*6, 239-BOXSIZE, BOXSIZE*6, WHITE);
  //tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE);
  currentcolor = RED;
   delay(100) ;
    tft.setRotation(0);
}

 void Button () {                                                                                    
  // we have some minimum pressure we consider 'valid'
  // pressure of 0 means no pressing!
//#define MINPRESSURE 10
//#define MAXPRESSURE 1000
 digitalWrite(13, HIGH);
  Point p = ts.getPoint();
  digitalWrite(13, LOW);
  pinMode(XM, OUTPUT);
  pinMode(YP, OUTPUT);
  pinMode(YM, OUTPUT); 
  if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {
    
    if (p.y < (TS_MINY-5)) {
      //   Serial.println("erase");
      // press the bottom of the screen to erase 
      tft.fillRect(0, BOXSIZE, tft.width(), tft.height()-BOXSIZE, BLACK);
    }
    
    // turn from 0->1023 to tft.width
    p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width()) ;
    p.y = map( p.y, TS_MINY, TS_MAXY, 0, tft.height());
    // Serial.print("\tPressure = "); Serial.println(p.z);
    
    if (p.y < BOXSIZE) {
      oldcolor = currentcolor;

      if (p.x < BOXSIZE) { 
        currentcolor = RED; 
        tft.fillRect(0, 0, BOXSIZE, BOXSIZE, WHITE);
        Pressco=Pressco+0.5 ;
        //  tft.setCursor(160, 0); tft.print("Pk=") ; tft.print(Pressco) ;
      } 
      else if (p.x < BOXSIZE*2) {
        currentcolor = YELLOW; 
        tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, WHITE);
        Pressco=Pressco-0.5 ;
        //  tft.setCursor(160, 0); tft.print("Pk=") ; tft.print(Pressco) ;
      }
      /*
      else if (p.x < BOXSIZE*3) {
        currentcolor = GREEN; 
        tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, WHITE);
      }
      else if (p.x < BOXSIZE*4) {
        currentcolor = CYAN; 
        tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, WHITE);
      }
      else if (p.x < BOXSIZE*5) {
        currentcolor = BLUE; 
        tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, WHITE);
      }
      else if (p.x < BOXSIZE*6) {
        currentcolor = MAGENTA; 
        tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, WHITE);
      }
       */ 
    /*  if (oldcolor != currentcolor) {
        if (oldcolor == RED) tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);
        if (oldcolor == YELLOW) tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);
        if (oldcolor == GREEN) tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN);
        if (oldcolor == CYAN) tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN);
        if (oldcolor == BLUE) tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE);
        if (oldcolor == MAGENTA) tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA);
             }
       */
    }
    if (((p.y-PENRADIUS) > BOXSIZE) && ((p.y+PENRADIUS) < tft.height())) {
      tft.fillCircle(p.x, p.y, PENRADIUS, currentcolor);  // рисуем точку нажатия
    }
  }
  delay(100) ;
 }
 
  void wrdata () {
  myFile = SD.open(testFile, FILE_WRITE);
  if (myFile) {
      // myFile.print(int(millis()/270000));
      myFile.print(int(millis()/Timeco));
    // myFile.print(int(millis()/1000));
    myFile.print(", ");
    myFile.print(int(Pressure/133.3));
    myFile.print(", ");
    myFile.println(int(Temperature*0.1));
    // close the file:
    myFile.close();
  } 
  else {
    // if the file didn't open, print an error:
   // tft.println("error opening testFile");
  }
  }
 

 

StrangerM
Offline
Зарегистрирован: 02.11.2013

Немного помучил вот этот проект http://forum.43oh.com/topic/4833-potm-daisy-a-simple-ais-receiver/

Перенес его из CCS в IDE Energia и в IDE Arduino. Над входными цепями приемника поработал. И ведь пашет. Да - еще приблуду для GPS и компаса сделал. Вот здесь http://forum.katera.ru/index.php?/topic/44556-platforma-arduino-dlia-kat... про нее есть.

StrangerM
Offline
Зарегистрирован: 02.11.2013

Да, вот еще библиотеки к 2.4 - уже не помню какая где, попробуйте потыкать.http://forum.katera.ru/index.php?/topic/44556-platforma-arduino-dlia-katerov-i-iakht-tolko-samodelki/page-10#entry1798618

По всему, дело в библиотеке.

StrangerM
Offline
Зарегистрирован: 02.11.2013

Кстати, я пользую Ардуино 1.0.5. Хотя есть и более новые. А старая работает, ну и пускай. :-)

В дополнение, я и такой проект сделал http://tekmanoid.com/ais.shtml. Только перенес его в Ардуино и использовал платку Нано 3 версии. Проверял со звуковыми файлами с АИС сигналом - пашет.

PJ_M
Offline
Зарегистрирован: 19.08.2015

Всем ответившим спасибо. Экран оказался нерабочий. Все что не делаю ничего не помогает. Он изначально при подключении только подсветку включал. Видимо китаец кинул.

StrangerM
Offline
Зарегистрирован: 02.11.2013

Но сообщение об ошибке компиляции?! Я бы попробовал старую версию Ардуины. Например 1.0.5.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

PJ_M пишет:

Всем ответившим спасибо. Экран оказался нерабочий. Все что не делаю ничего не помогает. Он изначально при подключении только подсветку включал. Видимо китаец кинул.

Получил и я свой 2.4", помучил с разными библиотеками и Мегой, ни в какую, только подсветка светится, Мега работает, но на экран не выводит. Воткнул в УНО, залил тот же скетч из примера библиотеки TFT-Shield-Example-Code-master, на которую многократно приводили ссылки выше и все сразу заработало. В чем причина пока не разбирался, но дисплей рабочий.

Добавлю:

Разобрался и с Мегой, по дефолту все заточено под Уно, для работы с Мегой нужно в файле SWTFT.cpp библиотеки, раскометировать строку //#include "mega_24_shield.h" и закоментировать строку #include "uno_24_shield.h". Все работает, проверил.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Добавлю, чтоб было, продублирую в нескольких темах.

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

Там куча информации по дисплеям, библиотеки под разные контроллеры, в том числе большинство под Arduino, примеры, даташиты, схемы, фото распиновок и т.д.

Вячеслав 151
Offline
Зарегистрирован: 25.03.2015

Молодец!  Наконец то мой дисплей ожил :)