Я использую эту библиотеку, следуя документации на 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
TFT 3,5-дюймовый ILI9488, невозможно обновить дисплей, используйте библиотеку GUIslice от Kalvin Haas ver. 17,0 ⇐ C++
Программы на C++. Форум разработчиков
1766758140
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);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79855349/tft-3-5-inch-ili9488-cant-update-display-use-liblary-guislice-by-kalvin-haas-ve[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия