TFT 3,5-дюймовый ILI9488, невозможно обновить дисплей, используйте библиотеку GUIslice от Kalvin Haas ver. 17,0C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 TFT 3,5-дюймовый ILI9488, невозможно обновить дисплей, используйте библиотеку GUIslice от Kalvin Haas ver. 17,0

Сообщение Anonymous »

Я использую эту библиотеку, следуя документации на github, использую gslc_ElemSetTxtStr для обновления текста и gslc_Update в последнем цикле, но дисплей зависает при первой генерации
этот мой цикл void, я начинаю использовать gslc_ElemSetTxtStr для обновления текста, а затем использую gslc_Update в последнем условии, условие успешное, потому что последовательная печать была обновлена успешно, так же, как и переменная, обновленная
void loop(){
loadvoltage = ina219.getBusVoltage_V() + (ina219.getShuntVoltage_mV() / 1000);
JumlahCurrent = JumlahCurrent + ina219.getCurrent_mA();
// jumlahkan hasil pembacaan
jumlahVoltage = jumlahVoltage + loadvoltage; // misal 3024 + 3212 + 3123 + 3123 + 3123 ...
// hitung total angkanya(sample) ada berapa
counterSampleVoltage = counterSampleVoltage + 1; // misal 1 + 2 + 3 + 4 + 5 ...

unsigned long currentMillis = millis();
if ((unsigned long)(currentMillis - previousMillis2) >= interval2){
// loadvoltage2 += MILIVOL_INA219;

DEBUG_PRINTLN("----- Voltage & Current INA219 -----");
DEBUG_PRINT("load =");
DEBUG_PRINTLN_F(loadvoltage2, 3);
DEBUG_PRINT("jumlah voltage =");
DEBUG_PRINTLN(jumlahVoltage);

// rata-ratakan nilai
rataRataVoltage = jumlahVoltage / counterSampleVoltage; // misal 15605 : 5 = 3121
rataRataVoltage = rataRataVoltage + (((JumlahCurrent / counterSampleVoltage) / 1000) * 0.31);
DEBUG_PRINT("Ratarata voltage =");
rataRataVoltage = rataRataVoltage + 0.159;
DEBUG_PRINTLN_F(rataRataVoltage, 3);
jumlahVoltage = 0;
counterSampleVoltage = 0;
JumlahCurrent = 0;

percentageBattery = voltToPercentage((rataRataVoltage));
DEBUG_PRINT("percentagevoltage =");
DEBUG_PRINTLN(percentageBattery);
PercenBattery();

previousMillis2 = millis();
}

if (SerialBT.available()){
char c = SerialBT.read();
receivedData += c;
if (c == '*'){
stringComplete = true;
}
}

if (stringComplete){
stringComplete = false;
receivedData.trim();

int commaIndex = receivedData.indexOf(',');
while (commaIndex != -1){
String value1 = receivedData.substring(0, commaIndex);
String value2 = receivedData.substring(commaIndex + 1);

if (value2 == "*"){
if (value1 == "REQ"){
String ID = "SMS02";
float Ph = node.getResponseBuffer(0);
float HumdTanah = node.getResponseBuffer(1);
float TempTanah = node.getResponseBuffer(2);
uint16_t KonduktifListrik = node.getResponseBuffer(3);
uint16_t Nitrogen = node.getResponseBuffer(4);
uint16_t Fosfor = node.getResponseBuffer(5);
uint16_t Kalium = node.getResponseBuffer(6);

SerialBT.println("DEBUG REQUEST"); // debugging only

int temp = 0;
int temp2 = 0;

temp = ((((int)Fosfor - 6.29) * 1.97)) / 1.28;

if (Kalium != 0){
temp2 = (((((int)Kalium - (-37.73)) * 2) * 1.53) + 27) * 0.5 / 1.14;
}
// efektifkan lagi
if (temp < 0){
temp = 0;
}
if (temp2 < 0){
temp2 = 0;
}

Fosfor = temp;
Kalium = temp2;

HumdSek = dht.readHumidity();
TempSek = dht.readTemperature();

Total = Total + 1;
snprintf(txtTotal, sizeof(txtTotal), "%u", Total);
gslc_ElemSetTxtStr(&m_gui, Total_elem, txtTotal);
// gslc_Update(&m_gui);

SerialBT.println(ID + "," + Nitrogen + "," + Fosfor + "," + Kalium + "," + KonduktifListrik + "," + Ph + "," + (TempTanah / 100) + "," + (HumdTanah / 100) + "," + TempSek + "," + HumdSek + "," + ",*");
DEBUG_PRINTLN(ID + "," + Nitrogen + "," + Fosfor + "," + Kalium + "," + KonduktifListrik + "," + Ph + "," + (TempTanah / 100) + "," + (HumdTanah / 100) + "," + TempSek + "," + HumdSek + "," + ",*");
}
}
receivedData = receivedData.substring(commaIndex + 1);
receivedData.trim();
commaIndex = receivedData.indexOf(',');
}
if (receivedData.length() > 0){
DEBUG_PRINTLN(receivedData);
}
receivedData = "";
}
// TODO : konfigurasi pembacaan sensor modbus
currentMillis = millis();
if ((unsigned long)(currentMillis - previousMillis) >= interval){
// Stopwatch();
Detik = (60 + millis() / 1000) % 60;
Menit = (60 + millis() / 60000) % 60;
Jam = (25 + millis() / 3600000) % 25;

String StopWatch((String)Jam + ":" + (String)Menit + ":" + (String)Detik);
DEBUG_PRINT("Stopwatch: ");
DEBUG_PRINTLN(StopWatch);
snprintf(txtStopwatch, sizeof(txtStopwatch), "%s", StopWatch);
gslc_ElemSetTxtStr(&m_gui, Stopwatch_elem, txtStopwatch);

DHT22_Sensor_Data();
bacaSoil7in1();

if (result == node.ku8MBSuccess){
DEBUG_PRINTLN("----- Modbus Read Success ----------");
TempTanah = node.getResponseBuffer(1) / 10.0;
if (TempTanah2 != TempTanah){
TempTanah2 = TempTanah;
snprintf(txtTempTanah, sizeof(txtTempTanah), "%u", (unsigned int)TempTanah);
gslc_ElemSetTxtStr(&m_gui, TempTanah_elem, txtTempTanah);
DEBUG_PRINT("Temp Tanah Update : ");
DEBUG_PRINTLN(gslc_ElemGetTxtStr(&m_gui, TempTanah_elem));
}
if (result == node.ku8MBSuccess){
HumdTanah = node.getResponseBuffer(0) / 10.0;
if (HumdTanah2 != HumdTanah){
HumdTanah2 = HumdTanah;
snprintf(txtHumdTanah, sizeof(txtHumdTanah), "%u", (unsigned int)HumdTanah);
gslc_ElemSetTxtStr(&m_gui, HumdTanah_elem, txtHumdTanah);
DEBUG_PRINT("Humd Tanah Update : ");
DEBUG_PRINTLN(gslc_ElemGetTxtStr(&m_gui, HumdTanah_elem));
}
}
if (result == node.ku8MBSuccess){
KonduktifListrik = node.getResponseBuffer(2);
if (KonduktifListrik2 != KonduktifListrik){
KonduktifListrik2 = KonduktifListrik;
snprintf(txtKonduktifListrik, sizeof(txtKonduktifListrik), "%u", KonduktifListrik);
gslc_ElemSetTxtStr(&m_gui, KonduktifListrik_elem, txtKonduktifListrik);
DEBUG_PRINT("Konduktif Listrik Update : ");
DEBUG_PRINTLN(gslc_ElemGetTxtStr(&m_gui, KonduktifListrik_elem));
}
}
if (result == node.ku8MBSuccess){
Ph = node.getResponseBuffer(3) / 10.0;
if (Ph2 != Ph){
Ph2 = Ph;
snprintf(txtPh, sizeof(txtPh), "%u", (unsigned int)Ph);
gslc_ElemSetTxtStr(&m_gui, Ph_elem, txtPh);
DEBUG_PRINT("Ph Update : ");
DEBUG_PRINTLN(gslc_ElemGetTxtStr(&m_gui, Ph_elem));
}
}
if (result == node.ku8MBSuccess){
Nitrogen = node.getResponseBuffer(4);
if (Nitrogen2 != Nitrogen){
Nitrogen2 = Nitrogen;
snprintf(txtNitrogen, sizeof(txtNitrogen), "%u", Nitrogen);
gslc_ElemSetTxtStr(&m_gui, Nitrogen_elem, txtNitrogen);
DEBUG_PRINT("Nitrogen Update : ");
DEBUG_PRINTLN(gslc_ElemGetTxtStr(&m_gui, Nitrogen_elem));
}
}
if (result == node.ku8MBSuccess){
Fosfor = node.getResponseBuffer(5);
if (Fosfor2 != Fosfor){
Fosfor2 = Fosfor;
int temp = (((((int)Fosfor) - 6.29) * 1.97)) / 1.28;
// Fosfor = ;

if (temp < 0)
{
temp = 0;
}

Fosfor = temp;
snprintf(txtFosfor, sizeof(txtFosfor), "%u", Fosfor);
gslc_ElemSetTxtStr(&m_gui, Fosfor_elem, txtFosfor);
DEBUG_PRINT("Fosfor Update : ");
DEBUG_PRINTLN(gslc_ElemGetTxtStr(&m_gui, Fosfor_elem));
}
}

if (result == node.ku8MBSuccess){
Kalium = node.getResponseBuffer(6);
if (Kalium2 != Kalium){
Kalium2 = Kalium;
int temp = 0;
if (Kalium != 0){
temp = ((((Kalium - (-37.73)) * 2) * 1.53) + 27) * 0.5 / 1.14;
}
if (temp < 0){
temp = 0;
}

Kalium = temp;
snprintf(txtKalium, sizeof(txtKalium), "%u", Kalium);
gslc_ElemSetTxtStr(&m_gui, Kalium_elem, txtKalium);

DEBUG_PRINT("Kalium Update : ");
DEBUG_PRINTLN(gslc_ElemGetTxtStr(&m_gui, Kalium_elem));
}
}
}else{
DEBUG_PRINT("Error: ");
DEBUG_PRINTLN_F(result, DEC);
}

if (TempSek2 != TempSek){
TempSek2 = TempSek;
snprintf(txtTempSek, sizeof(txtTempSek), "%u", (unsigned int)TempSek);
gslc_ElemSetTxtStr(&m_gui, TempSek_elem, txtTempSek);
DEBUG_PRINT("Temp Sek Update : ");
DEBUG_PRINTLN(gslc_ElemGetTxtStr(&m_gui, TempSek_elem));
}
if (HumdSek2 != HumdSek){
HumdSek2 = HumdSek;
snprintf(txtHumdSek, sizeof(txtHumdSek), "%u", (unsigned int)HumdSek);
gslc_ElemSetTxtStr(&m_gui, HumdSek_elem, txtHumdSek);
DEBUG_PRINT("Humd Sek Update : ");
DEBUG_PRINTLN(gslc_ElemGetTxtStr(&m_gui, HumdSek_elem));
}
previousMillis = millis();
delay(500);
gslc_PageRedrawGo(&m_gui);
}
// delay(500);
// gslc_PageRedrawGo(&m_gui);
// delay(500);
// gslc_Update(&m_gui);
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... in-haas-ve
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»