Çözüldü1.55K görüntülenmeArduinoLora E220
0

209521912217

Merhaba

Manyetik sersörden gelen sinyali nc/no geldiği sürece karşıdaki motorun çalışması lazım şu kodları kullandım ama çalışmıyor bir sorun var sanırım yardımcı olursanız sevinirim iyi çalışmalar 

Kumanda kodu 

#include \”LoRa_E22.h\”
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);
LoRa_E22 e32ttl(&mySerial);

#define BUTON_PIN 5
#define M0 7
#define M1 6

struct Signal {
char type[15] = \”LoRa Test\”;
byte temp[4];
byte role[4];
} data;

void setup() {
pinMode(BUTON_PIN, INPUT_PULLUP);
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);

digitalWrite(M0, LOW);
digitalWrite(M1, LOW);
Serial.begin(9600);
e32ttl.begin();
delay(500);
}

void loop() {
*(float*)(data.temp) = float(12.34);
*(int*)(data.role) = int(!digitalRead(BUTON_PIN));
Serial.print(\”buton: \”);
Serial.println(int(!digitalRead(BUTON_PIN)));

ResponseStatus rs = e32ttl.sendFixedMessage(0, 44, 23, &data, sizeof(Signal));
Serial.println(rs.getResponseDescription());
delay(1500);

while (e32ttl.available() > 1) {
ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));
struct Signal data = *(Signal*) rsc.data;

Serial.print(\”Yer: \”);
Serial.println(data.type);
Serial.print(\”Ortam Sıcaklığı: \”);
Serial.println(*(float*)(data.temp));
Serial.print(\”role: \”);
Serial.println(*(int*)(data.role));
rsc.close();
}
}

Role Kodu

#include \”LoRa_E22.h\”
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);
LoRa_E22 e32ttl(&mySerial);

#define ROLE_PIN A3
#define M0 7
#define M1 6

struct Signal {
char type[15] = \”Bahce\”;
byte temp[4];
byte role[4];
} data;

void setup()
{
pinMode(ROLE_PIN, OUTPUT);
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);

digitalWrite(M0, LOW);
digitalWrite(M1, LOW);
Serial.begin(9600);
Serial.println(\”Test\”);
e32ttl.begin();
delay(500);
}

void loop()
{
delay(1000);

digitalWrite(ROLE_PIN, 0);

*(float*)(data.temp) = 63;
*(int*)(data.role) = int(digitalRead(ROLE_PIN));

ResponseStatus rs = e32ttl.sendFixedMessage(0, 63, 23, &data, sizeof(Signal));
Serial.println(rs.getResponseDescription());

Serial.println(*(float*)(data.temp));
Serial.println(*(int*)(data.role));

while (e32ttl.available()) {
ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));
struct Signal data = *(Signal*) rsc.data;

Serial.print(\”Yer: \”);
Serial.println(data.type);
Serial.print(\”Ortam Sıcaklığı: \”);
Serial.println(*(float*)(data.temp));
Serial.print(\”buton: \”);
Serial.println(*(int*)(data.role));
rsc.close();
}
}

Soru yeni cevaplara kapalıdır.
Mehmet En iyi cevap olarak seçildi Haziran 24, 2022
0

şurda kontaktörler için yapmış olduğumuz örnek uygulama buna bir bak istersen.  https://fixaj.com/lora-ile-uzaktan-kontaktor-start-stop-devresi/

bu kodda interrupt kullanılmış yanı butona bir defa basınca çalışıyor. tekrar basınca sistem duruyor. Eğer bu işinizi görmüyorsa yani sizinki sürekli bir gönderim olacaksa, misal butona basıldığı sürece çalışcak butondan elimizi çektiğimizde duracak ise o zaman digitalread ile yapacaksınız. örneğin:

if(digitalRead(uint8_t pin)){  //butonu durumunu okuyor
    delay(unsigned long ms) //anlık basmalar ve bounce durumları engellemek için küçük bir bekleme
    if(digitalRead(uint8_t pin){ //bekleme sonrası buton hala basılı ise şu işlemi yap gibi...
      data.role = 1;
      ResponseStatus rs = E22.sendFixedMessage(0, 44, 25, &data, sizeof(Signal));
      Serial.println(rs.getResponseDescription());
    }
  }

ve kodun tam tersi else li yapıda butona basılı değilken gibi onuda sen yaparsın

Mehmet En iyi cevap olarak seçildi Haziran 24, 2022
2 cevaptan 1'ini inceliyorsun, tüm cevapları görmek için buraya tıklayın.