رفتن به مطلب
  • advertisement_alt
  • advertisement_alt
  • advertisement_alt

کمک برای ارتباط RS485


Meysam S
 اشتراک گذاری

ارسال های توصیه شده

سلام دوستان من از یک سنسور دما rs485 دارم که با یک ماژول rs485  به آردوینو مگا متصل کردم وداده ها دریافت میکنم 
حال میخوام یک آردوینو نانو با یک ماژول rs485  که اطلاعات یک سنوسر آولتراسنیک ارسال میکنه در آردوینو مگا دریافت کنم خیلی تلاش کردم ولی نتونستم داده ای ارسال بکنم 
این کد مگا من هست 

#include <ModbusMaster.h>
 
#define MAX485_RE_NEG  3
#define MAX485_DE      2
 
ModbusMaster node;
 
void preTransmission() {
  digitalWrite(MAX485_RE_NEG, 1);
  digitalWrite(MAX485_DE, 1);
}
 
void postTransmission() {
  digitalWrite(MAX485_RE_NEG, 0);
  digitalWrite(MAX485_DE, 0);
}
 
void setup() {
  // Initialize control pins
  pinMode(MAX485_RE_NEG, OUTPUT);
  pinMode(MAX485_DE, OUTPUT);
  digitalWrite(MAX485_RE_NEG, 0);
  digitalWrite(MAX485_DE, 0);
 
  // Modbus communication runs at 9600 baud
  Serial.begin(9600);
  Serial1.begin(9600);
 
  // Modbus slave ID 1
  node.begin(1, Serial1);
 
  // Callbacks allow us to configure the RS485 transceiver correctly
  node.preTransmission(preTransmission);
  node.postTransmission(postTransmission);
}
 
void loop() {
  // Request 2 registers starting at 0x0001
  uint8_t result = node.readInputRegisters(0x0001, 2);
  Serial.println("Data Requested");
 
  if (result == node.ku8MBSuccess) {
    // Get response data from sensor
    Serial.print("Temperature: ");
    Serial.print(float(node.getResponseBuffer(0) / 10.00F));
    Serial.print("   Humidity: ");
    Serial.println(float(node.getResponseBuffer(1) / 10.00F));
  }
  delay(1000);
}
و این کد نانو 

#include <ModbusMaster.h>
#include <SoftwareSerial.h>

#define RE_PIN 5
#define DE_PIN 4

SoftwareSerial SerialModbusMaster(9, 3); // RX, TX

ModbusMaster node;

void preTransmission() {
  digitalWrite(RE_PIN, 1);
  digitalWrite(DE_PIN, 1);
}

void postTransmission() {
  digitalWrite(RE_PIN, 0);
  digitalWrite(DE_PIN, 0);
}

void setup() {
  pinMode(RE_PIN, OUTPUT);
  pinMode(DE_PIN, OUTPUT);
  digitalWrite(RE_PIN, 0);
  digitalWrite(DE_PIN, 0);

  Serial.begin(9600);
  SerialModbusMaster.begin(9600);

  // Modbus slave ID 1
  node.begin(0x0001,SerialModbusMaster);
  node.preTransmission(preTransmission);
  node.postTransmission(postTransmission);
}

void loop() {
  int dataToSend = 123; // داده‌ای که می‌خواهید ارسال کنید
 uint8_t result;
  uint16_t data[0];
  // ارسال داده integer به Modbus slave
 result = node.writeSingleRegister(0x0003,data);

  if (result == node.ku8MBSuccess) {
    Serial.println("Data Sent Successfully");
  } else {
    Serial.println("Error in Sending Data");
  }
 
  delay(1000);
}
آدرس ها به صورت های مخطلف تست کردم 
ممنون میشم کمکم کنید 

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری
 اشتراک گذاری

×
×
  • اضافه کردن...