Relais schalten bei Arduino Neustart alle durch...

Begonnen von Skusi, 15 Januar 2016, 19:28:26

Vorheriges Thema - Nächstes Thema

presskopf

Zitat von: bfx am 21 März 2017, 10:59:19
Hallo,
also ich habe die Softwarelösung noch mal getestet: Sie funktioniert!

Der Port muss VOR allem anderen, auch z.B "Serial.begin(115200);", in der Reihenfolge siehe Code unten initalisiert werden.


void setup()
{
  digitalWrite(10, LOW);
  pinMode(10, OUTPUT);
  ...


Have fun

Das habe ich irgendwie nicht hinbekommen.  :o

Meine Lösung kam über https://forum.fhem.de/index.php/topic,48293.msg400017.html#msg400017

Und so ist mein Code der configurable-firmata, bei dem ich nur die digitalen Ports 4, 5 und 6 "befreit" haben möchte.
Die anpassung erfolgt in folgender Funktion:

void systemResetCallback()
{
  // initialize a defalt state

  // pins with analog capability default to analog input
  // otherwise, pins default to digital output
  for (byte i = 0; i < TOTAL_PINS; i++) {
    if (IS_PIN_ANALOG(i)) {
#ifdef AnalogInputFirmata_h
      // turns off pullup, configures everything
      Firmata.setPinMode(i, ANALOG);
#endif
    } else if (IS_PIN_DIGITAL(i)) {
#ifdef DigitalOutputFirmata_h
      // sets the output to 0, configures portConfigInputs
            if (i==4 || i==5|| i==6){
              Firmata.setPinMode(i, INPUT);
            }
            else {

               Firmata.setPinMode(i, OUTPUT);
            }
#endif
    }
  }

#ifdef FirmataExt_h
  firmataExt.reset();
#endif
}



Nachher probiere ich es noch bei meinem Mega2560.

presskopf

I don't know why, aber die Code-Änderung hat beim Mega nicht ganz zum Erfolg geführt  :o:
Die Relais schalten dennoch durch, allerdings extremst kurz.

Da ich nun keine Lust mehr hatte, das softwarseitig weiterzuverfolgen und der Mega genug digitale Ausgänge bietet,
habe ich die Stromversorgung der Optokoppler auf dem 8-fach-Relais-Modul per Transistor gesteuert. Das tut: Keine Klickerikick beim Neustart.