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();
}
}
ş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
Teşekkür ederim deneyecem ama pek anladığımıda söyleyemem
ilginiz için çoks sağolun