Uno + TFT LCD 2.4" + DS18b20

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

Всем доброго времени суток
в программировании не силен - но упорно изучаю
добился работы пары датчиков и прочего с LCD1602 теперь воюю с TFT LCD 2.4"

http://roboparts.ru/products/10225191

подключение простое - реализовано, на уровне железа проблем нет

тест TFT LCD проходит с библиотекой SWTFT

тест датчика DS18b20 проходит через монитор

 

пытался выводить данные через tft.println(); - не выводит

пытался через tft.print(); - не показывает ничего

// Code provided by Smoke And Wires
// http://www.smokeandwires.co.nz
// This code has been taken from the Adafruit TFT Library and modified
//  by us for use with our TFT Shields / Modules
// For original code / licensing please refer to
// https://github.com/adafruit/TFTLCD-Library

#include <Adafruit_GFX.h>    // Core graphics library
#include "SWTFT.h" // Hardware-specific library
#include <DallasTemperature.h>   //библиотека для DS18B20
#include <OneWire.h>
#define ONE_WIRE_BUS 10           // кузываю пин для DS18B20 = 10пин



// Штифты управления для дисплея может быть назначен любой цифровой или
// аналоговые выводы ... но мы будем использовать аналоговые выводы, как это позволяет нам
// Удвоить контакты с сенсорным экраном (см TFT пример краски).
// #define LCD_CS A3 // Chip Select идет к аналоговым 3
// #define LCD_CD A2 // Команда / Данные идет к аналоговым 2
// #define LCD_WR A1 // LCD Написать идет к аналоговым 1
// #define LCD_RD A0 // LCD Почитать идет на аналоговый 0

// #define LCD_RESET A4 // Может попеременно просто подключиться к контакт сброса Arduino в

// При использовании только Прорывом совет, использовать эти 8 линий данных к LCD:
// Для Arduino Uno, Duemilanove, Diecimila и т.д .:
// D0 подключается к цифровому выводу 8 (обратите внимание это
// D1 подключается к цифровому выводу 9 не в порядке!)
// D2 подключается к цифровому выводу 2
// D3 подключается к цифровому выводу 3
// D4 подключается к цифровому выводу 4
// D5 подключается к цифровому выводу 5
// D6 подключается к цифровому выводу 6
// D7 подключается к цифровому выводу 7


// Связать человек читаемые имена некоторых распространенных 16-битных значений цвета:
#define	BLACK   0x0000
#define	BLUE    0x001F
#define	RED     0xF800
#define	GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

SWTFT tft;
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// SWTFT tft;


// Настройка-Wire экземпляр общаться с любым Wire для приборов
// (Не только Максим / Даллас температуры ИС)
OneWire oneWire(ONE_WIRE_BUS);
 
// указание датчика .
DallasTemperature sensors(&oneWire);
 
void setup(void) {
  //Serial.begin(9600);
  //Serial.println(F("TFT LCD test"));

  sensors.begin();


  tft.reset();

}

void loop(void) {
  
  for(uint8_t rotation=1; rotation<4; /*rotation++*/) {
    tft.setRotation(rotation);
    testText();
    delay(2000);
  }
}



unsigned long testText() {
    
  int temp = sensors.getTempCByIndex(0);
  
  tft.fillScreen(BLACK);
  unsigned long start = micros();
  tft.setCursor(50, 0);
  tft.setTextColor(WHITE);  tft.setTextSize(3);
  tft.println("Honda XR650R!");
  tft.setTextColor(YELLOW); tft.setTextSize(2);
  tft.println("Temperature");
  tft.setTextColor(RED);    tft.setTextSize(3);
  tft.println(0xDEADBEEF, HEX);
  tft.print(temp);

  return micros() - start;
 
}

 

куда копать?

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

залил скетч по новой - горит просто белый экран


правил вот этот скетч изначально


<pre class="brush:arduino;">
</pre>
// Code provided by Smoke And Wires
// <a data-cke-saved-href="http://www.smokeandwires.co.nz" href="http://www.smokeandwires.co.nz" rel="nofollow">http://www.smokeandwires.co.nz</a>
// This code has been taken from the Adafruit TFT Library and modified
//  by us for use with our TFT Shields / Modules
// For original code / licensing please refer to
// <a data-cke-saved-href="https://github.com/adafruit/TFTLCD-Library" href="https://github.com/adafruit/TFTLCD-Library" rel="nofollow">https://github.com/adafruit/TFTLCD-Library</a>

#include <Adafruit_GFX.h>    // Core graphics library
#include "SWTFT.h" // Hardware-specific library
#include <DallasTemperature.h>   //DS18B20 temperature sensor support
#include <OneWire.h>
#define ONE_WIRE_BUS 10           //DS18B20 sensor pin

// Штифты управления для дисплея может быть назначен любой цифровой или
// аналоговые выводы ... но мы будем использовать аналоговые выводы, как это позволяет нам
// Удвоить контакты с сенсорным экраном (см TFT пример краски).
// #define LCD_CS A3 // Chip Select идет к аналоговым 3
// #define LCD_CD A2 // Команда / Данные идет к аналоговым 2
// #define LCD_WR A1 // LCD Написать идет к аналоговым 1
// #define LCD_RD A0 // LCD Почитать идет на аналоговый 0

// #define LCD_RESET A4 // Может попеременно просто подключиться к контакт сброса Arduino в

// При использовании только Прорывом совет, использовать эти 8 линий данных к LCD:
// Для Arduino Uno, Duemilanove, Diecimila и т.д .:
// D0 подключается к цифровому выводу 8 (обратите внимание это
// D1 подключается к цифровому выводу 9 не в порядке!)
// D2 подключается к цифровому выводу 2
// D3 подключается к цифровому выводу 3
// D4 подключается к цифровому выводу 4
// D5 подключается к цифровому выводу 5
// D6 подключается к цифровому выводу 6
// D7 подключается к цифровому выводу 7


// Связать человек читаемые имена некоторых распространенных 16-битных значений цвета:
#define	BLACK   0x0000
#define	BLUE    0x001F
#define	RED     0xF800
#define	GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

SWTFT tft;
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// SWTFT tft;


// Настройка-Wire экземпляр общаться с любым Wire для приборов
// (Не только Максим / Даллас температуры ИС)
OneWire oneWire(ONE_WIRE_BUS);
 
// указание датчика .
DallasTemperature sensors(&oneWire);
 
 
 
void setup(void) {
  //Serial.begin(9600);
 // Serial.println(F("TFT LCD test"));

 sensors.begin();

  tft.reset();

  uint16_t identifier = tft.readID();

  
    Serial.print(F("LCD driver chip: "));
    Serial.println(identifier, HEX);
    

  tft.begin(identifier);

  Serial.println(F("Benchmark                Time (microseconds)"));

  Serial.print(F("Screen fill              "));
  Serial.println(testFillScreen());
  delay(500);

  Serial.print(F("Text                     "));
  Serial.println(testText());
  delay(3000);

  Serial.print(F("Lines                    "));
  Serial.println(testLines(CYAN));
  delay(500);

  Serial.print(F("Horiz/Vert Lines         "));
  Serial.println(testFastLines(RED, BLUE));
  delay(500);

  Serial.print(F("Rectangles (outline)     "));
  Serial.println(testRects(GREEN));
  delay(500);

  Serial.print(F("Rectangles (filled)      "));
  Serial.println(testFilledRects(YELLOW, MAGENTA));
  delay(500);

  Serial.print(F("Circles (filled)         "));
  Serial.println(testFilledCircles(10, MAGENTA));

  Serial.print(F("Circles (outline)        "));
  Serial.println(testCircles(10, WHITE));
  delay(500);

  Serial.print(F("Triangles (outline)      "));
  Serial.println(testTriangles());
  delay(500);

  Serial.print(F("Triangles (filled)       "));
  Serial.println(testFilledTriangles());
  delay(500);

  Serial.print(F("Rounded rects (outline)  "));
  Serial.println(testRoundRects());
  delay(500);

  Serial.print(F("Rounded rects (filled)   "));
  Serial.println(testFilledRoundRects());
  delay(500);

  Serial.println(F("Done!"));
}

void loop(void) {
  for(uint8_t rotation=0; rotation<4; rotation++) {
    tft.setRotation(rotation);
    testText();
    delay(2000);
  }
}

unsigned long testFillScreen() {
  unsigned long start = micros();
  tft.fillScreen(BLACK);
  tft.fillScreen(RED);
  tft.fillScreen(GREEN);
  tft.fillScreen(BLUE);
  tft.fillScreen(BLACK);
  return micros() - start;
}

unsigned long testText() {
  
   int temp = sensors.getTempCByIndex(0);
   
  tft.fillScreen(BLACK);
  unsigned long start = micros();
  tft.setCursor(0, 0);
  tft.setTextColor(WHITE);  tft.setTextSize(3);
  tft.println("Honda XR650R!");
  tft.println();
  tft.setTextColor(YELLOW); tft.setTextSize(2);
  tft.print(temp);
  tft.println();
  tft.setTextColor(RED);    tft.setTextSize(3);
  tft.println(0xDEADBEEF, HEX);
  tft.println();
  tft.setTextColor(GREEN);
  tft.setTextSize(5);
  tft.println("Groop");
  tft.setTextSize(2);
  tft.println("I implore thee,");
  tft.setTextSize(1);
  tft.println("my foonting turlingdromes.");
  tft.println("And hooptiously drangle me");
  tft.println("with crinkly bindlewurdles,");
  tft.println("Or I will rend thee");
  tft.println("in the gobberwarts");
  tft.println("with my blurglecruncheon,");
  tft.println("see if I don't!");
  return micros() - start;
}

unsigned long testLines(uint16_t color) {
  unsigned long start, t;
  int           x1, y1, x2, y2,
                w = tft.width(),
                h = tft.height();

  tft.fillScreen(BLACK);

  x1 = y1 = 0;
  y2    = h - 1;
  start = micros();
  for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = w - 1;
  for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
  t     = micros() - start; // fillScreen doesn't count against timing

  tft.fillScreen(BLACK);

  x1    = w - 1;
  y1    = 0;
  y2    = h - 1;
  start = micros();
  for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = 0;
  for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
  t    += micros() - start;

  tft.fillScreen(BLACK);

  x1    = 0;
  y1    = h - 1;
  y2    = 0;
  start = micros();
  for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = w - 1;
  for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
  t    += micros() - start;

  tft.fillScreen(BLACK);

  x1    = w - 1;
  y1    = h - 1;
  y2    = 0;
  start = micros();
  for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
  x2    = 0;
  for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);

  return micros() - start;
}

unsigned long testFastLines(uint16_t color1, uint16_t color2) {
  unsigned long start;
  int           x, y, w = tft.width(), h = tft.height();

  tft.fillScreen(BLACK);
  start = micros();
  for(y=0; y<h; y+=5) tft.drawFastHLine(0, y, w, color1);
  for(x=0; x<w; x+=5) tft.drawFastVLine(x, 0, h, color2);

  return micros() - start;
}

unsigned long testRects(uint16_t color) {
  unsigned long start;
  int           n, i, i2,
                cx = tft.width()  / 2,
                cy = tft.height() / 2;

  tft.fillScreen(BLACK);
  n     = min(tft.width(), tft.height());
  start = micros();
  for(i=2; i<n; i+=6) {
    i2 = i / 2;
    tft.drawRect(cx-i2, cy-i2, i, i, color);
  }

  return micros() - start;
}

unsigned long testFilledRects(uint16_t color1, uint16_t color2) {
  unsigned long start, t = 0;
  int           n, i, i2,
                cx = tft.width()  / 2 - 1,
                cy = tft.height() / 2 - 1;

  tft.fillScreen(BLACK);
  n = min(tft.width(), tft.height());
  for(i=n; i>0; i-=6) {
    i2    = i / 2;
    start = micros();
    tft.fillRect(cx-i2, cy-i2, i, i, color1);
    t    += micros() - start;
    // Outlines are not included in timing results
    tft.drawRect(cx-i2, cy-i2, i, i, color2);
  }

  return t;
}

unsigned long testFilledCircles(uint8_t radius, uint16_t color) {
  unsigned long start;
  int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2;

  tft.fillScreen(BLACK);
  start = micros();
  for(x=radius; x<w; x+=r2) {
    for(y=radius; y<h; y+=r2) {
      tft.fillCircle(x, y, radius, color);
    }
  }

  return micros() - start;
}

unsigned long testCircles(uint8_t radius, uint16_t color) {
  unsigned long start;
  int           x, y, r2 = radius * 2,
                w = tft.width()  + radius,
                h = tft.height() + radius;

  // Screen is not cleared for this one -- this is
  // intentional and does not affect the reported time.
  start = micros();
  for(x=0; x<w; x+=r2) {
    for(y=0; y<h; y+=r2) {
      tft.drawCircle(x, y, radius, color);
    }
  }

  return micros() - start;
}

unsigned long testTriangles() {
  unsigned long start;
  int           n, i, cx = tft.width()  / 2 - 1,
                      cy = tft.height() / 2 - 1;

  tft.fillScreen(BLACK);
  n     = min(cx, cy);
  start = micros();
  for(i=0; i<n; i+=5) {
    tft.drawTriangle(
      cx    , cy - i, // peak
      cx - i, cy + i, // bottom left
      cx + i, cy + i, // bottom right
      tft.color565(0, 0, i));
  }

  return micros() - start;
}

unsigned long testFilledTriangles() {
  unsigned long start, t = 0;
  int           i, cx = tft.width()  / 2 - 1,
                   cy = tft.height() / 2 - 1;

  tft.fillScreen(BLACK);
  start = micros();
  for(i=min(cx,cy); i>10; i-=5) {
    start = micros();
    tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
      tft.color565(0, i, i));
    t += micros() - start;
    tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
      tft.color565(i, i, 0));
  }

  return t;
}

unsigned long testRoundRects() {
  unsigned long start;
  int           w, i, i2,
                cx = tft.width()  / 2 - 1,
                cy = tft.height() / 2 - 1;

  tft.fillScreen(BLACK);
  w     = min(tft.width(), tft.height());
  start = micros();
  for(i=0; i<w; i+=6) {
    i2 = i / 2;
    tft.drawRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(i, 0, 0));
  }

  return micros() - start;
}

unsigned long testFilledRoundRects() {
  unsigned long start;
  int           i, i2,
                cx = tft.width()  / 2 - 1,
                cy = tft.height() / 2 - 1;

  tft.fillScreen(BLACK);
  start = micros();
  for(i=min(tft.width(), tft.height()); i>20; i-=6) {
    i2 = i / 2;
    tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0));
  }

  return micros() - start;
}

vvadim
Offline
Зарегистрирован: 23.05.2012

1. сворачивай код при вставке, смотреть простыни никто не будет

2. библиотека  для DS18b20 вероятно и морочит тебе мозг.на форуме эти вопросы обсуждались и народ работае без этой библы только с OneWire.h

полазь по форуму через поиск - найдёшь

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

понял, буду искать тогда, спасибо

 

кстати как ее свернуть - кнопки спойлера в сообщении не нашел

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

спасибо 

- тяжелый форум не привычно

 

vvadim
Offline
Зарегистрирован: 23.05.2012

да ничего не тяжёлый, нормальный

согласитесь, листать 100 - 200 строк кода никому не нужно.

а некоторые и вообще нечитаемые коды выкладывают

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

тяжелый в том что не типичный

по авто/мото все форумы на которых искал инфу или сам чего выкладывал сделаны на более простых для обычных обывателей движках

тоже форматирование мессаг проще

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

а тут надо настраивать еше ;)

исправил что смог

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

переписал скетч на основе библиотеки DALLAS. не понял как работать на библиотеке OneWire - так как везде пишут по разному

в итоге порезал скетч

// Code provided by Smoke And Wires
// http://www.smokeandwires.co.nz
// This code has been taken from the Adafruit TFT Library and modified
//  by us for use with our TFT Shields / Modules
// For original code / licensing please refer to
// https://github.com/adafruit/TFTLCD-Library

#include <Adafruit_GFX.h>    // Core graphics library
#include "SWTFT.h" // Hardware-specific library

#include <OneWire.h>
//DS18B20 temperature sensor support
#include <DallasTemperature.h>
//DS18B20 sensor pin
#define ONE_WIRE_BUS 10

// Setup a oneWire instance to communicate with any OneWire devices 
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
 
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
 

// Assign human-readable names to some common 16-bit color values:
#define	BLACK   0x0000
#define	BLUE    0x001F
#define	RED     0xF800
#define	GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

SWTFT tft;
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// SWTFT tft;

void setup(void) {

 sensors.begin();

  uint16_t identifier = tft.readID();
  tft.begin(identifier);

 }

void loop()
   {
    tft.setRotation(1);
    tft.fillScreen(BLACK);
    sensors.requestTemperatures();
  
  //Read first sensor
  int temp = sensors.getTempCByIndex(0);
  
  
  tft.setCursor(60, 50);
  tft.setTextColor(WHITE);  tft.setTextSize(2);
  tft.println("Hello Arduino.ru!");
  tft.setCursor(55, 100);
  tft.setTextColor(YELLOW); tft.setTextSize(2);
  tft.print("Temperature:");
  tft.setCursor(220, 100);
  tft.print(temp);

 
delay (2000);
  
 }

проблема образовалась дальше - идет обнавление всего экрана в заданный промежуток, если убрать обновление то идет почти сразу как отрисуется - эффект моргания (замедленной отрисовки - не очень нравится

ссылка на видео

http://youtu.be/GPWoakFMY0Q

bwn
Offline
Зарегистрирован: 25.08.2014

Можете двумя путями пойти, обновлять только в случае изменения температуры или через временной промежуток 2-3минуты. Чаще мерять в обычных условиях смысла нет. Еще я думаю у дисплея есть возможность обновлять только требуемую область.

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

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

bwn
Offline
Зарегистрирован: 25.08.2014
// Code provided by Smoke And Wires
// <a href="http://www.smokeandwires.co.nz" title="http://www.smokeandwires.co.nz" rel="nofollow">http://www.smokeandwires.co.nz</a>
// This code has been taken from the Adafruit TFT Library and modified
//  by us for use with our TFT Shields / Modules
// For original code / licensing please refer to
// <a href="https://github.com/adafruit/TFTLCD-Library" title="https://github.com/adafruit/TFTLCD-Library" rel="nofollow">https://github.com/adafruit/TFTLCD-Library</a>
 
#include <Adafruit_GFX.h>    // Core graphics library
#include "SWTFT.h" // Hardware-specific library
 
#include <OneWire.h>
//DS18B20 temperature sensor support
#include <DallasTemperature.h>
//DS18B20 sensor pin
#define ONE_WIRE_BUS 10
 
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
  
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
  
 
// Assign human-readable names to some common 16-bit color values:
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
 
SWTFT tft;
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// SWTFT tft;

unsigned long time=millis(); //Переменная для задержки

void setup(void) {
 
 sensors.begin();
 
  uint16_t identifier = tft.readID();
  tft.begin(identifier);
 
 }
 
void loop()
   {
    tft.setRotation(1);
    tft.fillScreen(BLACK);
   
  //Read first sensor
  if (time<=millis())  //Проверяем время
   {
  
   sensors.requestTemperatures();  
   int temp = sensors.getTempCByIndex(0);
   
   
  tft.setCursor(60, 50);
  tft.setTextColor(WHITE);  tft.setTextSize(2);
  tft.println("Hello Arduino.ru!");
  tft.setCursor(55, 100);
  tft.setTextColor(YELLOW); tft.setTextSize(2);
  tft.print("Temperature:");
  tft.setCursor(220, 100);
  tft.print(temp);
  time=millis()+5000;  // Задержка 5 секунд
   }
   
 }

 

bwn
Offline
Зарегистрирован: 25.08.2014

Примерно так. У меня такого дисплея не было, строки 53-54 наверно надо тоже под if перенести. А возможно, строки 53,54 и с 64 по 69 в Setup после 48. Тогда по идее текст менятся не будет, будет только значение температуры переписывать - пробуйте.

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

Спасибо, попробую

vitalikost
Offline
Зарегистрирован: 28.11.2014

Можно еще так 

tft.fillScreen(BLACK);

заменить на

 tft.fillRect(0, 100, 144, 25, BLACK) - координаты подобрать свои

 

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

bwm - вот что по вашему коду получается

http://youtu.be/T7FdDbhrmWI

а вот со строкой от vitalikost стало лучше, но появилась проблема с затиранием прежнего значения

tft.fillRect(0, 100, 144, 25, BLACK) - координаты подобрать свои

 

 

vitalikost
Offline
Зарегистрирован: 28.11.2014

Перед setup() добавить:

float last_t;

void Dallasinfo() {
  sensors.requestTemperatures();
  float t;
  t=sensors.getTempC(Thermometer1);
  Serial.print("Temperatura : ");
  Serial.println(t);
  if( abs(last_t-t)>=0.25 )
  {
      tft.setCursor(0, 150);
      tft.fillRect(0, 150, 144, 25, BLACK);//все время,8 знаков
      tft.setTextColor(YELLOW);
      tft.print("T: ");
      tft.print(t);
    }
  last_t=t;
}

 

 

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

что означает строка номер 7?

vitalikost
Offline
Зарегистрирован: 28.11.2014

Если значения t изменнилось на +0,25 или -0,25

 

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

ясно, а точно надо выводить перед setup? или все же поместить в setup?

vitalikost
Offline
Зарегистрирован: 28.11.2014

Перед setup только float last_t;

А остальное можно и внизу кода; а можно и в свой добавить. и в цикле вызивать только Dallasinfo()

vitalikost
Offline
Зарегистрирован: 28.11.2014

Вся суть в этой строке "if( abs(last_t-t)>=0.25 )"  если данные отличаються, стерли, и заново записали, если нет, то ничего не делаем. 

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

спасибо

щас скетч ругается на void dallasinfo() - буду изучать дальше

vitalikost
Offline
Зарегистрирован: 28.11.2014

Это моя функция, ее использовать не обезательно. 

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

как можно прописать очистку экрана в заданной области?

 

 

vitalikost
Offline
Зарегистрирован: 28.11.2014
      tft.setCursor(0, 150);
      tft.fillRect(0, 150, 144, 25, BLACK);

Вот очистка:высота 25 пикселей длинна 144. (0,150) - координаты х,у.

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

отлично

а что делать с таким? (на красную полосу не обращать)

присутствие мусора получается

vitalikost
Offline
Зарегистрирован: 28.11.2014

Было чтото подобное, я добавил в setup();

  tft.reset();
  uint16_t identifier = tft.readID();
  Serial.print(F("LCD driver chip: "));
  Serial.println(identifier, HEX);
  tft.begin(identifier);
//Добавлено
  delay(1000);
  tft.fillScreen(BLACK);
  delay(1000);
  tft.fillScreen(BLACK);
//конец добавленого

 

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

огромное спасибо

теперь появилось еще больше желание дальше изучать ;)

побольше бы таких людей на форуме

bwn
Offline
Зарегистрирован: 25.08.2014

adel пишет:

bwm - вот что по вашему коду получается

http://youtu.be/T7FdDbhrmWI

а вот со строкой от vitalikost стало лучше, но появилась проблема с затиранием прежнего значения

tft.fillRect(0, 100, 144, 25, BLACK) - координаты подобрать свои

 

 

Сразу написал, что это домыслы и проверить не на чем. Вроде и так разобрались.

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

да, спасибо

 

the_wall
Offline
Зарегистрирован: 06.06.2013

добрый день.

Пытаюсь подружить UNO и этот дисплей. 

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

Куда копать?

vitalikost
Offline
Зарегистрирован: 28.11.2014

Нужно две библиотеки:

https://github.com/adafruit/Adafruit-GFX-Library

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

 

В фалле SWTFT.cpp

15,16 строки, одну из них нужно закомментировать зависимости от модели(Uno,Mega)

the_wall
Offline
Зарегистрирован: 06.06.2013

vitalikost пишет:

Нужно две библиотеки:

https://github.com/adafruit/Adafruit-GFX-Library

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

 

В фалле SWTFT.cpp

15,16 строки, одну из них нужно закомментировать зависимости от модели(Uno,Mega)

Спасибо.

но до того как увидел этот пост качнул с этого сайта  http://misc.ws и  заработало, но слова выводит в зеркальном отображении.

 

the_wall
Offline
Зарегистрирован: 06.06.2013

Не могу решить 

1. Зеркальное отображение букв

2. Экран постоянно мерцает.

the_wall
Offline
Зарегистрирован: 06.06.2013

the_wall пишет:

Не могу решить 

1. Зеркальное отображение букв

2. Экран постоянно мерцает.

Ничего не понял.

На winxp sp3 эти проблемы есть

На win7 64b все заработало как положено.

Библиотеки одни и те же.

 

Вопрос: почему не рисует синий квадрат на экране? Но если закомментировать lecturaPanel(), то рисует.  

void setup() {

  Serial.begin(9600);
  
  tft.reset(); 

  tft.initDisplay();  
  tft.fillScreen(WHITE);
}

void loop() {
 lecturaPanel();   
  
tft.fillRect(20, 165, 60, 60, BLUE);
 }

void lecturaPanel()
{
 
 TSPoint p = ts.getPoint(); 
X = map(p.x, TS_MAXX, TS_MINX, tft.width(), 0); Serial.print("X = "); Serial.print(X);
Y = map(p.y, TS_MAXY, TS_MINY, tft.height(), 0);Serial.print("\tY = "); Serial.print(Y);

 Z = p.z; Serial.print("\tPressure = "); Serial.println(p.z); 
}

 

the_wall
Offline
Зарегистрирован: 06.06.2013

Вопрос выше решил.

Появился другой: как управлять подсветкой экрана?