Liczba postów: 884
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
43
09-05-2021, 21:01
(Ten post był ostatnio modyfikowany: 09-05-2021, 21:04 przez Jarewa0606.)
Zobacz ten kod z i odłączony lcd
Kod:
#include <SPI.h>
#include <LoRa.h>
#include <U8g2lib.h>
String temperatura;
String cisnienie;
String wilgotnosc;
String bateria;
bool flaga = false;
#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 LCD (){
// program wykonawczy dla lcd
flaga = false;
u8g2.begin ();
u8g2.clearBuffer();
u8g2.setFont (u8g2_font_ncenB10_tr);
u8g2.setCursor(2,16);
u8g2.print("EKRAN W LOOP");
u8g2.sendBuffer ();
}
void Lora(){
//program wykonawczy dla komunikacji
int pos1, pos2, pos3;
if (!LoRa.begin(433E6))
[color=#363636][size=small] {[/size][/color]
[color=#363636][size=small] Serial.println("Starting LoRa failed!");[/size][/color]
[color=#363636][size=small] delay(100);[/size][/color]
[color=#363636][size=small] while (1);[/size][/color]
[color=#363636][size=small] }[/size][/color]
Serial.println("LoRa Started");
int packetSize = LoRa.parsePacket();
if (packetSize)
{
flaga =true;
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(flaga);
}
}
void setup(){
Serial.begin(9600);
LoRa.setPins(ss,rst);
}
void loop(){
Lora();
}
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 884
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
43
Jeszcze raz spróbuj bo mi się zle wkleiło z krzaczkami
wstaw tam to
if (!LoRa.begin(433E6))
{
Serial.println("Starting LoRa failed!");
delay(100);
while (1);
}
Serial.println("LoRa Started");
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 884
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
43
odłączony miałeś LCD?
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 16
Liczba wątków: 1
Dołączył: May 2021
Reputacja:
0
Tak, LCD jest odłączony od płytki Wemos. Już powoli brakuje mi pomysłów co można z tym zrobić aby to działało poprawnie.
Wysłane z mojego ONEPLUS A3003 przy użyciu Tapatalka
Liczba postów: 884
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
43
A Pokaż kod nadajnika
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 884
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
43
10-05-2021, 20:06
(Ten post był ostatnio modyfikowany: 10-05-2021, 20:13 przez Jarewa0606.)
Podejrzewam gdzie jest problem, nadajnik wysyła dane co 10s a odbiór daliśmy natychmiastowy niestety LoRa.begin(433E6) czyści bufor wiec if (packetSize) nigdy nie zadziała. Powstała pentla która nigdy się nie wykona... Dlatego miałeś na monitorze tylko LoRa Started powtarzające i nic więcej...
Zobacz ten kod z podłączonym LCD poprawiony daj czas dane odbiornika aktualizowane są co 20s około jak zadziała to trzeba pomyśleć inaczej...
[code]#include <SPI.h>
#include <LoRa.h>
#include <U8g2lib.h>
String temperatura;
String cisnienie;
String wilgotnosc;
String bateria;
bool flaga = false;
#define ss_lcd 2 //LCD
#define sclk 14 // LCD
#define mosi 13 // LCD
#define ss 15 // LoRa
#define rst 0 //LoRa
U8G2_ST7920_128X64_F_SW_SPI u8g2(U8G2_R2, sclk, mosi ,ss_lcd, U8X8_PIN_NONE);
void LCD (){
// program wykonawczy dla lcd
flaga = false;
u8g2.begin ();
u8g2.clearBuffer();
u8g2.setFont (u8g2_font_ncenB10_tr);
u8g2.setCursor(2,16);
u8g2.print("EKRAN W LOOP");
u8g2.sendBuffer ();
}
void Lora(){
//program wykonawczy dla komunikacji
int pos1, pos2, pos3;
if (!LoRa.begin(433E6))
{
Serial.println("Starting LoRa failed!");
delay(100);
while (1);
}
Serial.println("LoRa Started");
delay(20000);
int packetSize = LoRa.parsePacket();
if (packetSize)
{
flaga =true;
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(flaga);
}
}
void setup(){
Serial.begin(9600);
LoRa.setPins(ss,rst);
}
void loop(){
if (flaga) {
LCD();
}else {
Lora();
}
}
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.