Megint megakadtam :-(
Most egy RS-485-ös relépanelt készíte(k)/(enék) :-D, ami egy Loxone miniszervertől fogadja a parancsokat.
Ez a rész működik is.
Azt hittem bizonyos időnként lefagy az arduino de, nem ez volt a probléma.
Ha a Loxone egy másik eszköznek küld pancsot, azután az arduinó többé már nem fogadja az adatsort.
#include <SoftwareSerial.h> // Serial könyvtár
#define SSerialRX 10 // Rx PIN (adás)
#define SSerialTX 11 // Tx PIN (vétel)
#define SSerialTxControl 3 // Irányvezérlés PIN
#define RS485Transmit HIGH // Adás magas
#define RS485Receive LOW // Vétel alacsony
#define LEDPin 13 // kontroll LED PIN
SoftwareSerial RS485Serial(SSerialRX, SSerialTX); //
int byteRead; // Beolvasott adat
int rele1 = 31; // Relé 1 PIN
int rele2 = 32; // Relé 2 PIN
int rele3 = 33; // Relé 3 PIN
int rele4 = 34; // Relé 4 PIN
int rele5 = 35; // Relé 5 PIN
int rele6 = 36; // Relé 6 PIN
int rele7 = 37; // Relé 7 PIN
int rele8 = 38; // Relé 8 PIN
void setup()
{
pinMode(rele1 , OUTPUT); // Relé 1
pinMode(rele2 , OUTPUT); // Relé 2
pinMode(rele3 , OUTPUT); // Relé 3
pinMode(rele4 , OUTPUT); // Relé 4
pinMode(rele5 , OUTPUT); // Relé 5
pinMode(rele6 , OUTPUT); // Relé 6
pinMode(rele7 , OUTPUT); // Relé 7
pinMode(rele8 , OUTPUT); // Relé 8
digitalWrite(rele1, LOW); // Relé 1 OFF
digitalWrite(rele2, LOW); // Relé 2 OFF
digitalWrite(rele3, LOW); // Relé 3 OFF
digitalWrite(rele4, LOW); // Relé 4 OFF
digitalWrite(rele5, LOW); // Relé 5 OFF
digitalWrite(rele6, LOW); // Relé 6 OFF
digitalWrite(rele7, LOW); // Relé 7 OFF
digitalWrite(rele8, LOW); // Relé 8 OFF
Serial.begin(9600); // Soros port sebessége
pinMode(LEDPin, OUTPUT); // Kontroll LED PIN beállítás
pinMode(SSerialTxControl, OUTPUT); // Irányvezérlés PIN beállítás
digitalWrite(SSerialTxControl, RS485Receive); // Irányvezérlés olvasás állapot
RS485Serial.begin(9600); // Szoftveres RS 485 sebessége
}
void loop()
{
if (RS485Serial.available()) //
{
delay(100);
byteRead = RS485Serial.parseInt(); // Beérkezett Byte olbasás
if(byteRead==9111)
{
Serial.println("KI");
digitalWrite(rele1, LOW); // Relé 1 OFF
digitalWrite(LEDPin, HIGH); // kontroll LED BE
}
if(byteRead==9110)
{
Serial.println("BE");
digitalWrite(rele1, HIGH); // Relé 1 OFF
digitalWrite(LEDPin, HIGH); // kontroll LED BE
}
if(byteRead==9121)
{
Serial.println("KI");
digitalWrite(rele2, LOW); // Relé 1 OFF
digitalWrite(LEDPin, HIGH); //
}
if(byteRead==9120)
{
Serial.println("BE");
digitalWrite(rele2, HIGH); // Relé 1 OFF
digitalWrite(LEDPin, HIGH); // kontroll LED BE
}
delay(10);
digitalWrite(LEDPin, LOW); //kontroll LED KI
}
}