我如何使用arduino uno来控制一个主人控制两个奴隶?

问题描述 投票:0回答:0

我正在尝试使用 Arduino Uno 来控制一个主控的两个从属,但我遇到了代码问题。尽管我曾尝试将主站连接到一个从站,但它无法正常工作,而且我不确定我在哪里犯了错误。我将不胜感激解决此问题的任何帮助。

提前感谢您的帮助。

\\#include \\\<SimpleModbusSlave.h\\\> 

\\#define ledPin 11 enum { ADC0, ADC1, ADC2, ADC3, ADC4, ADC5, LED_STATE, BUTTON_STATE, TOTAL_ERRORS, TOTAL_REGS_SIZE }; 

unsigned int holdingRegs\\\[TOTAL_REGS_SIZE\\\]; int pin11;

 void setup()

 { // put your setup code here, to run once: modbus_configure(115200, 1, 2, TOTAL_REGS_SIZE, 0); pinMode(ledPin, OUTPUT); Serial.flush(); 

} 

void loop()

 { // put your main code here, to run repeatedly: holdingRegs\\\[TOTAL_ERRORS\\\] = modbus_update(holdingRegs); pin11 = holdingRegs\\\[ADC0\\\]; Serial.print(holdingRegs\\\[0\\\]); delayMicroseconds(50); if(pin11 == 1){ digitalWrite(ledPin, HIGH); 

} 

else

{

 digitalWrite(ledPin, LOW); 

}

 } 

\\#include \\\<SimpleModbusMaster.h\\\> 

\\#define baudrate 115200

 \\#define timeout 2000 \\#define polling 500 

\\#define retry_count 5 

\\#define Txenablepins 2 

\\#define Led1 12 

\\#define totalregs 9 

enum{ PACKET1, PACKET2, TOTAL_NO_OF_PACKETS }; 

Packet packets\\\[TOTAL_NO_OF_PACKETS\\\];

packetPointer packet1 = &packets\\\[PACKET1\\\]; 

packetPointer packet2 = &packets\\\[PACKET2\\\]; 

unsigned int regs\\\[9\\\]; 

unsigned int write_regs\\\[1\\\]= {1}; 

//unsigned regs\\\[totalregs\\\]; 

void setup() {

 //modbus_construct(&packets\\\[PACKET1\\\], packet1-\\\>id = 1; packet1-\\\>function = READ_HOLDING_REGISTERS; packet1-\\\>address = 0; packet1-\\\>no_of_registers = 1; packet1-\\\>register_array = regs; packet2-\>id = 1; packet2-\>function =PRESET_MULTIPLE_REGISTERS; packet2-\>address = 0; packet2-\>no_of_registers = 1; packet2-\>register_array = write_regs; 

// put your setup code here, to run once: //modbus_configure(&Serial,baudrate,SERIAL_8N2,timeout,polling,retry_count, //Txenablepins,packets,TOTAL_NO_OF_PACKETS,regs) modbus_configure(baudrate, timeout, polling, retry_count, Txenablepins, packets, TOTAL_NO_OF_PACKETS); pinMode(Led1, OUTPUT); //pinMode(Led2, OUTPUT); } void loop() { // modbus_update(&packet1); unsigned int connection_status2 = modbus_update(packets); Serial.print("connection_status_value"); Serial.println(connection_status2); //unsigned int connection_status1 = modbus_update(&packets\\\[PACKET1\\\]); //unsigned int connection_status2 = modbus_update(&packets\\\[PACKET2\\\]); //if(connection_status1==1 and connection_status2==1){ if(connection_status2==2){ digitalWrite(Led1, HIGH); } else{ digitalWrite(Led1, LOW);} checkResponse(); }

关于如何实现这一点的建议,以便我能够使用 ardiuno uno 控制两个奴隶和一个主人`

arduino arduino-uno master-slave
© www.soinside.com 2019 - 2024. All rights reserved.