Кстати, снова получил 2-е пары УНО+ТФТ2.4. Теперь уже нормально работает исходная библиотека. Ну и еще. Удалось раскодировать !AIVDM посылку от АИС. Правда только первого типа. Ну и то хорошо. Теперь можно сделать автономный (без ПК) оповещатель на АИС+ГПС+МЕГА о опасном сближении.
Если он на ili9341, то я подключал через понижатель напряжения:
Ардуино монитор говорит что контроллер 7783, а для него в друине только библиотека SWTFT подходит(чтоб дисплей воткнуть в мегу). Другие библиотеки, как не пытался, не подходят...
Кстати, снова получил 2-е пары УНО+ТФТ2.4. Теперь уже нормально работает исходная библиотека. Ну и еще. Удалось раскодировать !AIVDM посылку от АИС. Правда только первого типа. Ну и то хорошо. Теперь можно сделать автономный (без ПК) оповещатель на АИС+ГПС+МЕГА о опасном сближении.
До кучи. На всех у-вах поменял часы на 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!
Откуда плясать и в какую сторону ? :(
у меня эта библиотека не пошла, тк выдает ошибку по фонтам "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 = {)
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.
ну проблема с фруктовой библиотекой в том что там у них пину сдвинуты.. можете посмотреть на фото экрана фруктов и сравнить со своим и подправить библиотеку.
ну либо как вариант поставить ИДЕ 1.0.5 и скомпилировать пример из второй библиотеки
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.
// ------------------------------------------------------------------------------------------------
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.
// ------------------------------------------------------------------------------------------------
Здравствуйте достопочтенный 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 = {
Попробуйте то, что писалось постом выше (#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' должен быть константой. Я менял и файлик кушался.
Прошу извинить за задержку с ответами. Давно не смотрел форум. И давно не занимался экранчиками. Вот рабочий код барографа для пары ТФТ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");
}
}
Кстати, я пользую Ардуино 1.0.5. Хотя есть и более новые. А старая работает, ну и пускай. :-)
В дополнение, я и такой проект сделал http://tekmanoid.com/ais.shtml. Только перенес его в Ардуино и использовал платку Нано 3 версии. Проверял со звуковыми файлами с АИС сигналом - пашет.
Всем ответившим спасибо. Экран оказался нерабочий. Все что не делаю ничего не помогает. Он изначально при подключении только подсветку включал. Видимо китаец кинул.
Всем ответившим спасибо. Экран оказался нерабочий. Все что не делаю ничего не помогает. Он изначально при подключении только подсветку включал. Видимо китаец кинул.
Получил и я свой 2.4", помучил с разными библиотеками и Мегой, ни в какую, только подсветка светится, Мега работает, но на экран не выводит. Воткнул в УНО, залил тот же скетч из примера библиотеки TFT-Shield-Example-Code-master, на которую многократно приводили ссылки выше и все сразу заработало. В чем причина пока не разбирался, но дисплей рабочий.
Добавлю:
Разобрался и с Мегой, по дефолту все заточено под Уно, для работы с Мегой нужно в файле SWTFT.cpp библиотеки, раскометировать строку //#include "mega_24_shield.h" и закоментировать строку #include "uno_24_shield.h". Все работает, проверил.
Там куча информации по дисплеям, библиотеки под разные контроллеры, в том числе большинство под Arduino, примеры, даташиты, схемы, фото распиновок и т.д.
Собаки китайские.
Осторожно - китайские 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
Пришли DS3231 - заменил в барографе DS1302, в UNO DS3231(5В питания) подключены параллельно BMP180 (3.3В).
Подскажите что я делаю не так
http://www.youtube.com/watch?v=WK2nXEeJ2kA&feature=youtu.be
Кстати, снова получил 2-е пары УНО+ТФТ2.4. Теперь уже нормально работает исходная библиотека. Ну и еще. Удалось раскодировать !AIVDM посылку от АИС. Правда только первого типа. Ну и то хорошо. Теперь можно сделать автономный (без ПК) оповещатель на АИС+ГПС+МЕГА о опасном сближении.
А на ебае (на Али нет) появились интересные модули и не сильно дорого ГПС/ГЛОНАСС на довольно новом чипе с подходящим для Ардуины интерфейсом. http://www.ebay.com/itm/171493874434?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
До кучи. На всех у-вах поменял часы на DS3231 - не просто хорошо, очень хорошо ходят.
StrangerM, расскажите пожалуйста, как "подружили" 2,4 TFT LCD c mega2560 ? У меня кроме как с библиотекой SWTFT работать не хочет.
А библиотека эта очень "скудная" на мой взгляд. Пытался воткнуть в неё шрифты - не выходит. Помогите чем - нибудь,
пожалуйста...
Если он на ili9341, то я подключал через понижатель напряжения:
http://arduino.ru/forum/apparatnye-voprosy/displei-na-ili9341?page=1#com...
с этой библиотекой:
https://github.com/gmtii/ili9341-arduino
но сначала в ней нужно исправить ошибку.
Если он на ili9341, то я подключал через понижатель напряжения:
Ардуино монитор говорит что контроллер 7783, а для него в друине только библиотека SWTFT подходит(чтоб дисплей воткнуть в мегу). Другие библиотеки, как не пытался, не подходят...
подскажите скетч для того чтобы определить контроллер, копирую код из первой ссылки, а он ругается постоянно
кстати из примера TFTLCD натест цвета постоянно выдает ошибки по цветам при компиляции
скачал библиотеку и тест запустился
https://github.com/Smoke-And-Wires/TFT-Shield-Example-Code
Вот здесь есть код осцилографа на дисплей с 7783 контроллером и MEGA 2560, если кого-то интересует.
ребят, а вообще кроме этого экрана что нить то можно подключить к ардуино то?
есть ли какие то платы расширения? или переходник по типу i2C для LCD1602 чтобы уменьшить количество проводов?
Кстати, снова получил 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!
Откуда плясать и в какую сторону ? :(
скорее всего что то с адресом устройства - поколдуй в тех местах
Брали 1602 i2C тоже проблема с адресом была. Пока не отсканировали. А здесь где адрес прописывается?
китаянка прислала номер чипа 9341
скорее всего что то с адресом устройства - поколдуй в тех местах
О.о адресс? эт в смысле почтовый чтоли? вы там че курите?
какой нафиг адресс у дисплея подключеного по 8 битной шине?
Брали 1602 i2C тоже проблема с адресом была. Пока не отсканировали. А здесь где адрес прописывается?
да нигде не прописывается... вы вообще инструкции читаете? или так на обум проводками тыкаете?
может покажете схему подключения?
какой программой можно определить модель чипа?
Да нет проводков UNO и 2,4 TFT http://www.aliexpress.com/item/UNO-R3-MEGA328P-ATMEGA16U2-For-Arduino-2-...
какой программой можно определить модель чипа?
никакой! только старый добрый научный тык
в библиотеке Adafruit_TFTLCD 9341 прописан, значит чип другой :(
в библиотеке Adafruit_TFTLCD 9341 прописан, значит чип другой :(
в этой?
https://github.com/adafruit/TFTLCD-Library
тогда вот эта точно заработает..
https://docs.google.com/file/d/0B1tvU2HSF0Whc0I0cFdTTGVwSUk/edit?usp=sha...
у меня эта библиотека не пошла, тк выдает ошибку по фонтам "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 = {)
какая именно из двух?
вторая
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.
ну проблема с фруктовой библиотекой в том что там у них пину сдвинуты.. можете посмотреть на фото экрана фруктов и сравнить со своим и подправить библиотеку.
ну либо как вариант поставить ИДЕ 1.0.5 и скомпилировать пример из второй библиотеки
как вариант можете просто соединить проводками
и использовать библиотеку адафруит
1.0.5 не дало результата. :( По экрану пошла рябь. Где то что то еще. . .
1.0.5 не дало результата. :( По экрану пошла рябь. Где то что то еще. . .
конечно :)
я же написал, китайцы развели пины попорядку. как им было удобней.. а в оригинальной версии пины разведены по портам!!!
нужно взять свою плату и фото оригинлаьной платы вверх ногами. сопоставить и соединить проводками как положено! найдите 8 отличий :)
http://www.adafruit.com/images/970x728/376-01.jpg
где можно увидеть оригинал?
это в 79-ом?
где можно увидеть оригинал?
все форки бибилотек ведут сюда
http://www.adafruit.com/images/970x728/376-01.jpg
ссылка битая. Как исправить ошибку компиляции ?
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>
сегодня ссылка открылась. теперь вижу, что распиновка совсем другая. :(
Буду на доске оживлять
сегодня ссылка открылась. теперь вижу, что распиновка совсем другая. :(
Буду на доске оживлять
Получилось?
Сегодня весь день пытался оживить такое-же чудо. Добился только ряби.
Ляжки экрана -
http://tiptopboards.com/1151-thickbox/shield-d-%C3%A9cran-tactile-couleur-tft-24-pouces-pour-arduino.jpg
Перепробовал все что тут описывалось((.
2. Puhlyaviy - #84,ссылочка битая.
Нет. пока не оживил. Отложил. Пусть вылежиться
ссылка битая. Как исправить ошибку компиляции ?
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={ " мне помогло.
Я заказываю их в паре вот здесь, отправляют довольно быстро 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 горит подсветка и все. Загружаю пример из библлиотеки:
Выдает ошибку: 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!
За любую помощь буду премного благодарен.
Попробуйте то, что писалось постом выше (#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' должен быть константой. Я менял и файлик кушался.
Прошу извинить за задержку с ответами. Давно не смотрел форум. И давно не занимался экранчиками. Вот рабочий код барографа для пары ТФТ2.4 +УНО. Чем могу.
Немного помучил вот этот проект 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... про нее есть.
Да, вот еще библиотеки к 2.4 - уже не помню какая где, попробуйте потыкать.http://forum.katera.ru/index.php?/topic/44556-platforma-arduino-dlia-katerov-i-iakht-tolko-samodelki/page-10#entry1798618
По всему, дело в библиотеке.
Кстати, я пользую Ардуино 1.0.5. Хотя есть и более новые. А старая работает, ну и пускай. :-)
В дополнение, я и такой проект сделал http://tekmanoid.com/ais.shtml. Только перенес его в Ардуино и использовал платку Нано 3 версии. Проверял со звуковыми файлами с АИС сигналом - пашет.
Всем ответившим спасибо. Экран оказался нерабочий. Все что не делаю ничего не помогает. Он изначально при подключении только подсветку включал. Видимо китаец кинул.
Но сообщение об ошибке компиляции?! Я бы попробовал старую версию Ардуины. Например 1.0.5.
Всем ответившим спасибо. Экран оказался нерабочий. Все что не делаю ничего не помогает. Он изначально при подключении только подсветку включал. Видимо китаец кинул.
Получил и я свой 2.4", помучил с разными библиотеками и Мегой, ни в какую, только подсветка светится, Мега работает, но на экран не выводит. Воткнул в УНО, залил тот же скетч из примера библиотеки TFT-Shield-Example-Code-master, на которую многократно приводили ссылки выше и все сразу заработало. В чем причина пока не разбирался, но дисплей рабочий.
Добавлю:
Разобрался и с Мегой, по дефолту все заточено под Уно, для работы с Мегой нужно в файле SWTFT.cpp библиотеки, раскометировать строку //#include "mega_24_shield.h" и закоментировать строку #include "uno_24_shield.h". Все работает, проверил.
Добавлю, чтоб было, продублирую в нескольких темах.
Наткнулся при поиске на китайский ресурс, облачный диск человека, тогрующего дисплейными модулями на Таобао.
Там куча информации по дисплеям, библиотеки под разные контроллеры, в том числе большинство под Arduino, примеры, даташиты, схемы, фото распиновок и т.д.
Молодец! Наконец то мой дисплей ожил :)