05-05-2021, 15:57
(04-05-2021, 22:44)Jarewa0606 napisał(a): daj przed w loop
u8g2.clearBuffer();
Serial.println("Dalej");
i zobacz czy wypluwa to w serialu....
Jak wypluwa to zamień na u8g2.begin ();
Wstawiłem zgodnie z sugestiami.
Kod:
#include <SPI.h>
#include <LoRa.h>
#include <U8g2lib.h>
String temperatura;
String cisnienie;
String wilgotnosc;
String bateria;
#define ss_lcd 2 //LCD
#define sclk 14 // LCD
#define mosi 13 // LCD
#define ss 15 // LoRa
#define rst 12 //LoRa
U8G2_ST7920_128X64_F_SW_SPI u8g2(U8G2_R2, sclk, mosi ,ss_lcd, U8X8_PIN_NONE);
void setup() {
u8g2.begin ();
u8g2.clearBuffer();
u8g2.setFont (u8g2_font_ncenB14_tr);
u8g2.setCursor (15,30);
u8g2.print("TEST 1 ");
u8g2.sendBuffer ();
delay(3000);
//początek konfiguracji LoRa
Serial.begin(9600);
Serial.println("LoRa odbiornik");
LoRa.setPins(ss,rst);
if (!LoRa.begin(433E6))
{
Serial.println("Starting LoRa failed!");
delay(100);
while (1);
}
Serial.println("LoRa Started");
} //KONIEC SETUP
void loop() {
int pos1, pos2, pos3;
int packetSize = LoRa.parsePacket();
if (packetSize)
{
String LoRaData = LoRa.readString();
while (LoRa.available())
{
((char)LoRa.read());
}
pos1 = LoRaData.indexOf('/');
pos2 = LoRaData.indexOf('&');
pos3 = LoRaData.indexOf('!');
temperatura = LoRaData.substring(0,pos1);
cisnienie = LoRaData.substring(pos1 + 1, pos2);
wilgotnosc = LoRaData.substring(pos2 +1, pos3);
bateria = LoRaData.substring(pos3 +1, LoRaData.length());
Serial.println(temperatura);
Serial.println(cisnienie);
Serial.println(wilgotnosc);
Serial.println(bateria);
Serial.println("KONTROLA3");
}
Serial.println("KONTROLA4");
u8g2.begin ();
u8g2.clearBuffer();
u8g2.setFont (u8g2_font_ncenB14_tr);
u8g2.setCursor(2,16);
u8g2.print("EKRAN W LOOP");
u8g2.sendBuffer ();
} // KONIEC LOOP
Teraz nie mam komunikacji z LoRa. Jeśli usunę fragment z loop odpowiedzialny za ekran, wtedy otrzymuję na serial monitorze dane z LoRa. Zastanawiam się, czy może zdefiniować zmienną true/false, która będzie się zmieniać po otrzymaniu danych z LoRa. Gdy otrzymam true, wyświetlę dane na ekranie i zmienną zmienię na false.