Dobrý den je tu někdo kdo by nám pomol rozchodit arduino UNO a HMI panel po rs485 modbus RTUhttp://arduino-shop.cz/arduino/985-prevodnik-ttl... Zde mame k nahlédnutí kod:#include <modbus.h>#include <modbusDevice.h>#include <modbusRegBank.h>#include <modbusSlave.h>//deklarování pinů relé kartyint rele1 = 4;int rele2 = 5;int rele3 = 6;int rele4 = 7;int rele5 = 8;int rele6 = 9;int rele7 = 10;int rele8 = 11;int ECHO = 12; // Echo pin z HC-SC04 na pinu 2int TRIG = 13; // Trig pin z HC-SC04 na pin 3//Setup the brewtrollers register bank//All of the data accumulated will be stored heremodbusDevice regBank;//Create the modbus slave protocol handlermodbusSlave slave;void setup(){Serial.begin(9600);//Assign the modbus device ID.regBank.setId(1);regBank.add(1);regBank.add(2);regBank.add(3);regBank.add(4);regBank.add(5);regBank.add(6);regBank.add(7);regBank.add(8);regBank.add(30001); //regist pro teplotni senzor A0regBank.add(30002); //regist pro teplotni senzor A1regBank.add(40020); //registr pro data z ultrazvukuslave._device = ®Bank;//inicializace sériového portu s rychlostí 9600slave.setBaud(9600);pinMode(rele1, OUTPUT);pinMode(rele2, OUTPUT);pinMode(rele3, OUTPUT);pinMode(rele4, OUTPUT);pinMode(rele5, OUTPUT);pinMode(rele6, OUTPUT);pinMode(rele7, OUTPUT);pinMode(rele8, OUTPUT);//Nastaví pin 12 jako vstupnípinMode(ECHO,… INPUT);//Nastaví pin 13 jako výstupnípinMode(TRIG, OUTPUT);}void loop(){unsigned long cas = millis();while(millis() - cas < 100){//zapnutí a vypnutí relédigitalWrite(rele1, regBank.get(1));digitalWrite(rele2, regBank.get(2));digitalWrite(rele3, regBank.get(3));digitalWrite(rele4, regBank.get(4));digitalWrite(rele5, regBank.get(5));digitalWrite(rele6, regBank.get(6));digitalWrite(rele7, regBank.get(7));digitalWrite(rele8, regBank.get(8));slave.run();}//HCSR-04digitalWrite(TRIG, LOW);delayMicroseconds(2);digitalWrite(TRIG, HIGH);delayMicroseconds(10);digitalWrite(TRIG, LOW);// Spočítá vzdálenostfloat distance = pulseIn(ECHO, HIGH);distance= distance*0.017315f;int vzdalenost = (distance * 100) + 0.5;if(vzdalenost > 40000) vzdalenost = 40000;regBank.set(40020, (word) vzdalenost); //vzdálenost od 0 do 1000, 1mm = 1, 1000mm = 1000// Spocita teplotu z cidla A0int sensorValue = analogRead(A0);float volt = (sensorValue/1020.0) * 5.0; //Voltsfloat tempC = (volt -0.5) * 10000; //CelciusregBank.set(30001, (word) tempC);// Spocita teplotu z cidla A1int sensorValue1 = analogRead(A1);float volt1 = (sensorValue1/1020.0) * 5.0; //Voltsfloat tempC1 = (volt1 -0.5) * 10000; //CelciusregBank.set(30002, (word) tempC1);slave.run();} Ukázat celý příspěvek