Hallo werte Gemeinde,
ich verzweifle gerade an einem seltsamen Phänomen. Definiere ich 2 Outputs, lassen sich diese nur solange ansteuern, bis ich eine Ethernet-Verbindung definiere. Danach passiert nichts mehr:
Mein Setup: Arduino Mega + Ethernet-Shield, an Port 50+51 sind je 1 Relais angeschlossen.
Mein Code (Auszüge, gekürzt auf die relevanten Parts)
Main.ino:
#include <Ethernet.h>
//IO Pin setup
int ioPin[]={50,51};
int ioSize=2;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); // DEBUG only
Serial.println("Setup initialized...");
//initialize IO_Pins
for (int i=0;i<ioSize;i++){
pinMode(ioPin[i], OUTPUT);
}
fEthernet_setup();
}
Die Loop:
void loop() {
Serial.println("Aus");
// Let's turn on the relay...
digitalWrite(50, LOW);
digitalWrite(51, LOW);
delay(2000);
Serial.println("An");
// Let's turn off the relay...
digitalWrite(50, HIGH);
digitalWrite(51, HIGH);
delay(2000);
}
Die Ethernet-Initialisierung (externe <Ethernet.cpp>):
// Ethernet shield attached to pins 10, 11, 12, 13
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);
IPAddress gateway(192,168,1, 1);
IPAddress subnet(255, 255, 0, 0);
EthernetServer server(23);
void fEthernet_setup()
{
Ethernet.begin(mac, ip, gateway, subnet); //<-------- DEAKTIVIERE ICH DIESEN ZEILE, schalten die Relais
Serial.println("fEthernet_setup -> OK");
Serial.print("IP_ADRESS is ");
Serial.println(String(ip[0]) + String(".") +\
String(ip[1]) + String(".") +\
String(ip[2]) + String(".") +\
String(ip[3]) ) ;
}
Solange ich NICHT das Ethernet.begin ausführe, schalten die Relais. Ist die Zeile aktiv, kommt nur das AN/AUS über den Monitor, die Relais schalten nicht.
Ich ging erst von einem HW-Defekt aus, da das ganze mal lief... durch schrittweises Herantasten, kann ich es aber auf diese eine Zeile eingrenzen.
Seht ihr hier einen Logikfehler?
Danke für jeden Tip!
VG
Steffen