[gelöst] Nano-clone V3 Ausgang wird beim booten kurz gesetzt

Hallo zusammen,
jetzt mache ich schon länger mit den Arduinos rum und habe plötzlich ein Anfängerproblem.
Was ich will:
An meinem Ford Transit Bauj. 2003 habe ich eine Rückfahrkamera mit Monitor nachgerüstet,
die funktioniert.
Um für die Passagiere, die seitlich an der Schiebetür ein- oder aussteigen bequem am Bordstein zu stehen habe ich mir eine 2. Kamera unter den rechten Außenspiegel gebaut.
Der Monitor hat 2 AV-Eingänge, wenn die Seitenkamera eingeschaltet wird zeigt er deren Bild, auch wenn der Rückwärtsgang einegelegt ist.
Mit einem einfachen Schalter, der die Seitenkamera einschaltet, funktioniert das.
Jetzt will ich es mit einem Nano V3 -Clone (ch340) und einem Relais-Modul (high active, geprüft) so steuern dass:

  1. Bei Tasterdruck die Seitenkamera eingeschaltet wird.
  2. Bei einem längeren Tasterdruck die Seitenkamera wieder ausgeschaltet wird.
  3. Und wenn nichts unternommen wird die Seitenkamera nach 60 Sekunden ausgeschaltet wird.

Das funktioniert auch alles, aber immer wenn der Nano bootet (Zündung an) schaltet er das Relais kurz ein, das ist einfach unschön. Das soll nicht sein.
Hat jemand eine Lösung?
Hier mein Code:

// Muss vor Spannungsspitzen geschützt werden 
// deshalb Spannungsversorgung über USB mit Kfz-Lader (KfZ_Betrieb!!!)
// Ausgang Relais-Modul high active an D13 mit onboard LED
// Triggern mit Taster an D2, low active, also Taster gegen GND!!!!
// Abschalten über Timer nach 60s oder über Taster lang drücken
int Step;          //Schrittkette
const int Trig = 2;    // Taster als Trigger 
const int Relais = 13;  //Ausgang mit onboard LED
const long Laufzeit = 60000;          //Einschaltdauer
const long Druckzeit = 300;           //langer Tasterdruck Dauer
const long LosZeit = 150;             //Taster losgelassen Dauer
unsigned long StartRelaisMillis =0;   //millis beim Start des Ausgangs
unsigned long TasterGedrMillis =0;    //millis beim Drücken des Tasters
unsigned long TasterLosMillis =0;     //millis beim Loslassen des Tasters

void setup() {
  digitalWrite(Relais, LOW);
  pinMode(Trig, INPUT_PULLUP);
  pinMode(Relais, OUTPUT);
  Step = 0;   //Schrittkette löschen
}

void loop() {
 
   
   switch (Step) {
    case 0:                            // Warten auf Taster gedrückt, einschalten
     if (digitalRead(Trig) == LOW) {   //Taster gedrückt
      digitalWrite(Relais, HIGH);      // Relais Ein
      StartRelaisMillis = millis();    //Zeit übernehmen
      Step = 1;
     }
     break;

     case 1:                          //Taster losgelassen
     if (digitalRead(Trig) == HIGH) {
      Step = 2;
     }
     break;

     case 2:                          //Abschalten
     if (millis() - StartRelaisMillis >= Laufzeit) {    //Abschalten nach Zeit
     digitalWrite(Relais, LOW);
     Step = 0;
     }
     else if (digitalRead(Trig) == LOW) {               //Zeit Tastendruck laden        
      TasterGedrMillis = millis();  //Zeit übernehmen
      Step = 3;
     }
     break;

     case 3:
     if (millis() - TasterGedrMillis >= Druckzeit) {    //Abschalten nach langem Tasterdruck
      digitalWrite(Relais, LOW);
     Step = 4;
     }
     else if (digitalRead(Trig) == HIGH) {               //nur kurz gedrückt, zurück
      Step = 2;
     }
     break;

     case 4:
      if (digitalRead(Trig) == HIGH) {                   //entprellen
      TasterLosMillis = millis();  //Zeit übernehmen
      Step = 5;
     }
     break;

     case 5:
      if (millis() - TasterLosMillis >= LosZeit) {      // Zurück zum Anfang
      Step = 0;
      }
     break;

   }
  
  
}

Wenn das Relais von einem digitalen Pin gesteuert wird, der beim Start kurz auf HIGH geht, können Sie versuchen, einen Pull-Down-Widerstand an diesem Pin anzubringen, um das Niveau niedrig zu halten, bis der Code übernimmt.

mit einem MOSFET Transistor anstatt des Reais wurde sowas nicht passieren

Muss es denn Pin 13 sein?
Den benutzt, soweit ich weiß, der Bootloader

Wozu der längere Tastendruck ?
Ein kurzer Tastendruck würde doch reichen.
Und wie schon geschrieben wurde, nimm einen anderen digitalen Pin für dein Relais.

Hast du ein Link zum Relais?

So, jetzt bin ich wieder daheim.
@J-M-L : Danke
@kolaha : Das Relaismodul hat einen MosFET als Treiber verbaut.
@michael_x : das teste ich gleich
@Plumps : https://www.amazon.de/dp/B09Q58X8M2?ref=ppx_yo2ov_dt_b_fed_asin_title
Danke für eure Hilfe, ich berichte wie es weitergeht....

Und weitere Fragen werden nicht beantwortet ?

Laut Beschreibung ist schon ein PullDown auf deinem Relais-Modul verbaut.

@HotSystems: Sorry, Dich hab ich glatt vergessen!!!
Das war einfach um kein gezittere zu lesen, ist schließlich im Auto und wird während des Einparkens / Anhaltens bedient. Habs vorher mit kurzem Druck probiert, das gab öfter nicht das gewünschte Ergebnis.

Ok, wenn das so reicht, alles gut.
Mit einer funktionierenden Entprellung sollte das aber auch (ohne langem drücken) fehlerfrei funktionieren. Und ein kurzer Druck gibt doch auch kein gezitter ?

Der Beschreibung würde ich nicht viel glauben.
Da steht auch was von

Befestigungsart Hutschienenmontage

@HotSystems : Der sketch ist langsam gewachsen, die Schrittkette wurde erweitert (zum Entprellen).
Und jetzt möchte ich das "lange" Drücken so lassen, hab mich daran gewöhnt.

Und an Alle:
Super, danke Euch, mit Pin 7 funktioniert das jetzt sauber.
Hätte mir auch früher bei anderen Projekten mal auffallen können dass die onboard-LED beim booten immer kurz aufleuchtet!

Einen schönen Restsonntag!

Alles gut, kein Problem.
Und danke für die Rückmeldung, dass es jetzt funktioniert.

Ja, die Beschreibung ist erschreckend aber auch belustigend.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.