1.8 TFT 128*160 и BMP180
- Войдите на сайт для отправки комментариев
Втр, 13/12/2016 - 19:05
Здравствуйте. Не нашел в интернете готового. Сделал своего франкенштейна из 2 библиотек. Экран вообще планирую подключить к PZEM, но пока не могу снять счётчик решил сделать термометр на цветном экране. проблема в том что по экрану почти нет полезной информации. Подскажите кто разбирается почему то не чистится место где выводится первая цифра. можно конечно чистить весь экран но надписи которые не в лупе пропадают тогда. Вроде бы всё очевидно, если выводить одну температуру то её чистит. Если вместе с давлением то чистит только цифу давления
[code] #include <TFT.h> // Arduino LCD library #include <SPI.h> #include <Adafruit_Sensor.h> #include <Adafruit_BMP085_U.h> #include <Wire.h> Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085); // pin definition for the Uno #define sclk 13 #define mosi 11 #define cs 10 #define dc 8 #define rst 9 // create an instance of the library TFT TFTscreen = TFT(cs, dc, rst); // char array to print to the screen char sensorPrintout1[5]; char sensorPrintout2[5]; void setup() { // Put this line at the beginning of every sketch that uses the GLCD: TFTscreen.begin(); bmp.begin(); // clear the screen with a black background TFTscreen.background(0, 0, 0); // write the static text to the screen // set the font color to white TFTscreen.stroke(255, 255, 255); // set the font size TFTscreen.setTextSize(2); // write the text to the top left corner of the screen TFTscreen.text("TEMPERATURA\n ", 12, 0); TFTscreen.text("PRESSURE\n ", 28, 52); TFTscreen.setTextSize(4); } void loop() { sensors_event_t event; bmp.getEvent(&event); float temperature; bmp.getTemperature(&temperature); // Read the value of the sensor String sensorVal = String(temperature); // convert the reading to a char array sensorVal.toCharArray(sensorPrintout1, 6); // set the font color TFTscreen.stroke(255, 255, 255); // print the sensor value TFTscreen.text(sensorPrintout1, 28, 22); String sensorVal1 = String(event.pressure); sensorVal1.toCharArray(sensorPrintout2, 6); TFTscreen.stroke(255, 255, 255); TFTscreen.text(sensorPrintout2, 28, 72); // wait for a moment delay(2500); // erase the text you just wrote //TFTscreen.background(0, 0, 0); TFTscreen.stroke(0, 0, 0); //цвет очистки TFTscreen.text(sensorPrintout1, 28, 22); // положение где чистить TFTscreen.stroke(0, 0, 0); TFTscreen.text(sensorPrintout2, 28, 72); } [/code]
провёл эксперимент. строка 58 в переменной sensorPrintout1 не знает что выводить на экран(она ничего не выводит на экран). хотя в строке 17 она записана. не пойму в строке 60 переменная знает что выводить на экран. всё же одинакого
примерно так.не понимаю теперь не чистится только время часов. поднял блок "температуры" над блоком "давления" и стало нормально. добавил часы 3231 теперь часы не затирает
попользовался библиотекой #include <TFT.h> понял что это просто ужас. решил что библиотека #include <Adafruit_ST7735.h> это просто просветление и ничего подтирать каждый цикл не надо. на основании материала взятого с ютуб сделал градусник, гигрометр(si7021), показатель комфортной температуры, часы(3231). код
проблема в том что при попытке перевести экран на русский язык выводится абракадабра. хотя все условия выполнил так как раньше никто ничего не посоветовал не вижу смысла задавать вопросы
разобрался с русским языком. теперь есть температура, влажность, индекс комфорта, часы
правильная Adafruit GFX тут https://yadi.sk/d/FgUr5NPztVcRd