Hallo liebe Community,
ich möchte in einem kleinen Projekt 8 Magnetventile über Mosfets steuern und benutze dafür die digitalen Pins D0 bis D7. Als technische Grundlage diente dieser Schaltplan hier aus der Community:
http://forum.arduino.cc/index.php?topic=238118.msg1709750
Nun habe ich zwei Seltsamkeiten festgestellt:
1.) Wenn ich im Setup den Serial1 starte, um z.B. Messages zu loggen, sind Pin D0 und D1 immer HIGH, auch wenn ich sie als OUTPUT und LOW definiere.
void setup() {
Serial.begin(9600);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
pinMode(47, INPUT_PULLUP);
}
void loop() {
if (digitalRead(47) == LOW) {
Serial.println("VALVES HIGH");
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
} else {
Serial.println("VALVES LOW");
digitalWrite(0, LOW);
digitalWrite(1, LOW);
}
}
(Der Code ist ein Testcode. Im richtigen Code sind die Pin-Nr. selbstverständlich durch Variablen definiert!)
Um dieses Problem komme ich ja noch drum rum, da ich den Serial nicht wirklich benötige (oder auf Serial2 ausweichen kann) und wenn ich die Zeile "Serial.begin(9600)" entferne, tritt dieser Effekt nicht mehr auf.
2.) Jetzt kommt das wirkliche Problem. Wenn ich den Arduino neu starte oder Reset drücke, sind für 1-2 Sekunde die digitalen Pins D0 und D1 auf HIGH geschaltet und werden dann nach besagter Verzögerung erst LOW. Und das ist ein großes Problem für mich, da die Magnetventile nicht einfach so beim Start öffnen sollen.
Jetzt fragt sich manch einer bestimmt, warum ich nicht einfach auf andere digitale Pins ausweiche. Das Problem ist, ich habe ein eigenes Shield entworfen und eine Platine drucken lassen und ohne dass ich das Layout ändere und eine neue Platine drucken lasse, kann ich die Pins nicht ändern.
Woran liegt es, dass dieses Verhalten auftritt und kann man das ändern?