Lora modül

Katılım
5 Ara 2023
Mesajlar
23
Puanları
1
Yaş
34
Alıcı kod ve verici kodu paylaştım kodlarda eksik var mı 8 kanal alıcı verici yapmak istiyorum
#include <SPI.h>
#include <LoRa.h>

const int buttonPins[8] = {2, 3, 4, 5, 6, 7, 8, 9};

void setup() {
Serial.begin(9600);
while (!Serial);

Serial.println("LoRa Sender");

for (int i = 0; i < 8; i++) {
pinMode(buttonPins, INPUT_PULLUP);
}

if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}

void loop() {
String buttonStates = "";

for (int i = 0; i < 8; i++) {
buttonStates += String(digitalRead(buttonPins));
}

Serial.print("Sending packet: ");
Serial.println(buttonStates);

// Send the button states via LoRa
LoRa.beginPacket();
LoRa.print(buttonStates);
LoRa.endPacket();


delay(500); // 0.5 seconds delay

Alıcı kodu

#include <SPI.h>
#include <LoRa.h>

const int ledPins[8] = {2, 3, 4, 5, 6, 7, 8, 9};

void setup() {
Serial.begin(9600);
while (!Serial);

Serial.println("LoRa Receiver");

for (int i = 0; i < 8; i++) {
pinMode(ledPins, OUTPUT);
}

if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}

void loop() {
int packetSize = LoRa.parsePacket();
if (packetSize) {
String receivedText = "";
while (LoRa.available()) {
receivedText += (char)LoRa.read();
}

Serial.print("Received packet: ");
Serial.println(receivedText);

for (int i = 0; i < 8; i++) {
if (receivedText.charAt(i) == '1') {
digitalWrite(ledPins, HIGH);
} else {
digitalWrite(l
edPins, LOW);
}
}
}
}
 
İstenen:
Verici, 8 butonun durumunu okuyup gönderecek,
alıcı ise bu veriyi alıp 8 LED'i kontrol edecek.

Küçük eksiklikler var diyelim.

Verici Kodunda:
pinMode(buttonPins, INPUT_PULLUP); satırında, buttonPins olmalı.

LoRa.begin(433E6) kısmında, frekansın doğru olduğunu varsayıyorum, kullanacağınız LoRa modülüne bağlı olarak değişir.

buttonStates += String(digitalRead(buttonPins)); olmalı.

setup fonksiyonunda, döngü değişkeni 0'dan 8'e kadar dönerken buttonPins şeklinde pin numarası kullanılmalı.

Alıcı Kodunda:
pinMode(ledPins, OUTPUT); satırında, ledPins olmalı.

digitalWrite(ledPins, HIGH); ve digitalWrite(ledPins, LOW); satırlarında da ledPins kullanılmalı.

receivedText.charAt(i) kısmında, receivedText uzunluğunun 8 karakterden az olabileceğini kontrol etmek iyi olur.
Kolay gelsin


Editörde bir problem var, "olmalı" dediğim yerlerin sonunda köşeli paranteze alınmış i harfi var.
onlar çıkmamış
 
Son düzenleme:
Cevapladiğiniz için teşekkür ederim
 
LoRaWAN ile hobi olarak ilgileniyorum. Tamamen öğrenmek için elimden geleni yapıyorum. Kısmet olursa yani bütçe olarak toparlayabilirsem Acil Durumlarda kullanılmak üzere 433 MHz olarak Manavgat'ta kurulum yapma hevesim var.