Lora modül

Katılım
5 Ara 2023
Mesajlar
16
Puanları
1
Yaş
33
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
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…