Biri araçta biri kumanda devresinde olmak üzere birbiriyle haberleşen iki adet LoRa E32 modülümüz var. Kumanda devresine Arduino XY Joystick modülü eklemek ve bunu da LoRa’yla araca iletmek istiyoruz ancak internette buna örnek bulamadık. Aşağıda belirttiğim kodları nasıl entegre edebiliriz?
#define joyX A0<br />#define joyY A1<br /> void setup() {<br /> Serial.begin(9600);<br />}<br /> void loop() {<br /> // put your main code here, to run repeatedly:<br /> xValue = analogRead(joyX);<br /> yValue = analogRead(joyY);<br /> //print the values with to plot or view<br /> Serial.print(xValue);<br /> Serial.print("\t");<br /> Serial.println(yValue);<br />}
Öncelikle verdiğiniz bütün cevaplar için çok teşekkür ederim. Siz olmasanız LoRayla ilgili bir adım bile ilerleyemeyeceğiz. Örnek koda baktım ancak sorunumu çözmedi. Aşağıda belirttiğim kodlarla 44 adresli LoRadan GPS bilgisi alabiliyorum ve kendi seri port ekranımda joystickin x ve y eksenlerini görebiliyorum. Ancak 44 adresli LoRaya joystick eksen bilgisi alacak kodları yazdığımda kodum tümden bozuluyor ve LoRalar haberleşemiyor. Yardımcı olabilir misiniz?
63 Adresli LoRa;
#include “Arduino.h”
#include “LoRa_E32.h”
#include <SoftwareSerial.h>
const int x_ekseni = A0;
const int y_ekseni = A1;
SoftwareSerial portlora(10, 11);
LoRa_E32 e32ttl(&portlora);
#define M0 7
#define M1 6
typedef struct {
byte Altitude[10];
byte Latitude[10];
byte Longtitude[10];
int x_durum;
int y_durum;
} Signal;
Signal data;
void setup() {
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
delay(100);
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
digitalWrite(M0, LOW);
digitalWrite(M1, LOW);
e32ttl.begin();
}
void loop() {
int x_durum;
int y_durum;
x_durum = analogRead(x_ekseni);
y_durum = analogRead(y_ekseni);
Serial.println(x_durum);
Serial.println(y_durum);
Serial.println();
portlora.listen();
ResponseStatus rs = e32ttl.sendFixedMessage(0, 44, 23, &data, sizeof(Signal));
Serial.println(rs.getResponseDescription());
while (e32ttl.available() > 1) {
ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));
data = *(Signal*) rsc.data;
rsc.close();
Serial.print(F(“Altitude: “));
Serial.println(*(float*)data.Altitude);
Serial.print(F(“Latitude: “));
Serial.println(*(float*)data.Latitude);
Serial.print(F(“Longtitude: “));
Serial.println(*(float*)data.Longtitude);
}
}
44 Adresli LoRa;
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include “LoRa_E32.h”
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
TinyGPSPlus gps;
SoftwareSerial portgps(RXPin, TXPin);
SoftwareSerial portlora(10, 11);
#define M0 6
#define M1 7
LoRa_E32 e32ttl(&portlora);
typedef struct {
byte altitude[10];
byte latitude[10];
byte longtitude[10];
} Signal;
Signal data;
void setup()
{
Serial.begin(9600);
portgps.begin(GPSBaud);
delay(500);
e32ttl.begin();
delay(500);
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
digitalWrite(M0, LOW);
digitalWrite(M1, LOW);
}
void loop()
{
portgps.listen();
if (gps.location.isValid()) {
Serial.print(“Altitude: “);
*(float*)(data.altitude) = (gps.altitude.meters());
Serial.println(*(float*)data.altitude);
Serial.print(“Latitude: “);
*(float*)(data.latitude) = (gps.location.lat());
Serial.println(gps.location.lat());
Serial.print(“Longitude: “);
*(float*)(data.longtitude) = (gps.location.lng());
Serial.println(gps.location.lng());
}
else
Serial.println( “error”);
smartDelay(1000);
if (millis() > 5000 && gps.charsProcessed() < 10)
Serial.println(F(“No GPS data received: check wiring”));
Serial.println();
portlora.listen();
ResponseStatus rs = e32ttl.sendFixedMessage(0, 63, 23, &data, sizeof(Signal));
Serial.println(rs.getResponseDescription());
}
static void smartDelay(unsigned long ms)
{
unsigned long start = millis();
do
{
while (portgps.available())
gps.encode(portgps.read());
} while (millis() – start < ms);
}