123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include <M5Stack.h>
- #include <M5LoRa.h>
- byte msgCount = 0;
- int interval = 2000;
- long lastSendTime = 0;
- void header(const char *string, uint16_t color){
- M5.Lcd.fillScreen(color);
- M5.Lcd.setTextSize(1);
- M5.Lcd.setTextColor(TFT_MAGENTA, TFT_BLUE);
- M5.Lcd.fillRect(0, 0, 320, 30, TFT_BLUE);
- M5.Lcd.setTextDatum(TC_DATUM);
- M5.Lcd.drawString(string, 160, 3, 4);
- }
- void setup() {
- M5.begin();
- M5.Power.begin();
- while (!Serial);
-
- header("LoRa Set spreading factor", TFT_BLACK);
- M5.Lcd.setTextFont(2);
- M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK);
- M5.Lcd.drawString("Please use serial port to view data.",0, 35, 2);
- Serial.println("LoRa Duplex - Set spreading factor");
-
- LoRa.setPins();
- if (!LoRa.begin(433E6)) {
- Serial.println("LoRa init failed. Check your connections.");
- while (true);
- }
- LoRa.setSpreadingFactor(8);
- Serial.println("LoRa init succeeded.");
- }
- void loop() {
- if (millis() - lastSendTime > interval) {
- String message = "HeLoRa World! ";
- message += msgCount;
- sendMessage(message);
- Serial.println("Sending " + message);
- lastSendTime = millis();
- interval = random(2000) + 1000;
- msgCount++;
- }
-
- onReceive(LoRa.parsePacket());
- }
- void sendMessage(String outgoing) {
- LoRa.beginPacket();
- LoRa.print(outgoing);
- LoRa.endPacket();
- msgCount++;
- }
- void onReceive(int packetSize) {
- if (packetSize == 0) return;
-
- String incoming = "";
- while (LoRa.available()) {
- incoming += (char)LoRa.read();
- }
- Serial.println("Message: " + incoming);
- Serial.println("RSSI: " + String(LoRa.packetRssi()));
- Serial.println("Snr: " + String(LoRa.packetSnr()));
- Serial.println();
- }
|