BMX Startrampe bauen mit Arduino UNO

Ich kann nur sagen, das es auch hier nicht geht.
Zwei Standorte - gleiches Ergebnis.
Bildschirmfoto von 2021-09-24 10-42-54

Dafür mein Code noch mit der internen LED versehen, kommentiert und der Öffnungsmechanismus auf Basis des angezogenen Magneten verriegelt.

const byte fusstaster = 3;              // Auslösekontakt
const byte magnet = 4;
enum {an, aus};                         // zur Verwendung negierter bool Werte
unsigned long lastmillis = 0;           // Merker für interne Zeit
unsigned long aufzeit = 1000UL * 10;    // Anzugzeit des Magneten
unsigned long startzeit = 0;            // später variable Zeit wann geöffnet wird
bool lastfuss = aus;                    // Merker ob ausgelöst
void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));
  pinMode(fusstaster, INPUT_PULLUP);    // Auslöser wird nach GND beschaltet
  pinMode(magnet, OUTPUT);
  digitalWrite(magnet, aus);            // Grundstellung
  randomSeed(analogRead(0));            // Grundlage Zufallszahlen
}

void loop()
{
  if (digitalRead(magnet) == aus)       // Wenn Magnet nicht aktiviert...
  {
    if ((digitalRead(fusstaster) == an) // ... und der Auslöser aktivert ...
        && (lastfuss == aus))           // ... und vorher nicht aktiviert
    {
      lastfuss = an;                    // Merke Aktivierung
      lastmillis = millis();            // merke Jetzt Zeit
      startzeit = random(1000, 3000);   // Zufallszahl zwischen 1 und 3 Sek
    }
    if ((millis() - lastmillis >= startzeit) // Wenn Startzeit erreicht...
        && (magnet == aus))             // und nicht ausgelöst
    {
      digitalWrite(magnet, an);         // auslösen
      digitalWrite(LED_BUILTIN, HIGH)   // anzeige mit onBoardLED
      lastmillis = millis();            // Zeit merken
    }
  }                                     // Ende "Wenn Magnet nicht aktiviert"
  if ((millis() - lastmillis >= aufzeit)// Öffnungszeit abgelaufen...
      && (digitalRead(magnet) == an))   // ... und Magnet an
  {
    digitalWrite(magnet, aus);          // Magnet aus
    digitalWrite(LED_BUILTIN, LOW);     // LED aus
    lastfuss = false;                   // Merker löschen
  }
}

Ich fände es interressant zu erfahren, warum Du Dich so auf ein - offensichtlich nicht nur durch mich - nicht erreichbares Ding versteifst und Deinen Code dahinter versteckst.

Na dann - @lukasmb ist hoffentlich nicht verschreckt.