• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
SPI sterowanie pinem SS
#31
Udało mi się wyświetlić dane na ekranie ale ekran zamiast płynnie się odświeżać, miga tzn, inicjalizuje się od nowa i dopiero wyświetla informacje i czynność jest powtarzana po odebraniu danych przez odbiornik.

Poniżej kod

Kod:
#include <SPI.h>
#include <LoRa.h>
#include <U8g2lib.h>

String temperatura;
String cisnienie;
String wilgotnosc;
String bateria;

#define ss 15  // LoRa
#define rst 2 //LoRa

U8G2_ST7567_ENH_DG128064I_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 14, /* data=*/ 13, /* cs=*/ 4, /* dc=*/ 5, /* reset=*/ 0);

bool flaga=false;

void setup(){
 
  //Konfiguracja LCD
 
u8g2.begin ();
u8g2.clearBuffer();
u8g2.setFont (u8g2_font_ncenB10_tr);
u8g2.setCursor(2,16);
u8g2.print("LCD W SETUP");
u8g2.sendBuffer ();


  //Konfiguracja 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");  
}


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());

flaga=true;

Serial.println(temperatura);
Serial.println(cisnienie);
Serial.println(wilgotnosc);
Serial.println(bateria);

}

if(flaga){
flaga=false;
u8g2.begin ();
u8g2.clearBuffer();
u8g2.setFont (u8g2_font_ncenB10_tr);
u8g2.setCursor(2,16);
u8g2.print(temperatura);
u8g2.setCursor(2,32);
u8g2.print(wilgotnosc);
u8g2.setCursor(2,46);
u8g2.print(cisnienie);
u8g2.sendBuffer ();
LoRa.begin(433E6);
}
}


Edit 12.10.2021

Poradziłem sobie z problemem stosując bibliotekę softSPI https://github.com/MajenkoLibraries/SoftSPI
Wydzieliłem piny dla LCD za pomocą biblioteki softSPI (wydzieliłem z dostępnych wolnych pinów) a resztę czyli odbiornik LoRa podłączyłem pod dostępne na płytce piny SPI. Teraz działa jak powinno. Dziękuję za dotychczasową pomoc.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości