Signal Steuerung Arduino

Hallo,
ich komme leider nicht weiter...
Und zwar würde ich gerne meinen Sketch vom Arduino Uno erst dann starten lassen wenn ich mein 24V dc Signal bekomme, und nicht schon wenn der Arduino eine Spannung bekommt.

Meine Frage also: Wie kann ich erst per Signal mein Programm starten lassen und wenn dieses fertig durchgelaufen ist, dass Signal wieder weitergeben?

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Hallo
Über einen Optokoppler die Verfügbarkeit des 24V Signals einlesen und in der Abhängigkeit davon die entsprechende Funktion starten.

pseudo code

 if (digitalRead(Pin24Volt)) Volt24Function(); 

Du könntest auch in setup() beliebig lange auf ein entsprechendes Signal warten.

Aber, was ist, wenn im Betrieb dieses Signal wieder verschwindet und der Arduino noch läuft?
Wenn es relevant ist, dann machs gleich richtig.

Was soll das bedeuten?

Hallo,
das ist ein völlig falscher Ansatz.

man lässt den Sketch immer im loop laufen und fragt den Eingang ab. Bei dem gewünschen Signalpegel verzweigt man dann in dem Ablauf und macht die Dinge die erforderlich sind. Im einfachsten Fall kann man das mit if.. machen. Schau Dir Doch ein einfaches Beispiel an .z.B das Beispiel/02Digital/Button.
Heinz

Wenn du jetzt deinen kompletten Sketch gepostet hättest könnte man deinen Code gleich entsprechend anpassen.

Aber du hast es zum richtig lernen genau richtig gemacht. Keinen Code posten damit du die Prinzip-darstellung durch Nachdenken verstehen und dann auf deinen Code hin entsprechend anpassen musst.

Dein bisheriger Code

void setup() {
 // wie bisher

}


void loop() {
  // dein bisheriges Programm
  // Blinke_LED();
  // PiepsTuutTuutsPieps();
  // MotorVorwärts
  // HätschelTäschelBumsFallera();
}

Programm nur ausführen wenn 24V-Eingang das passende Signal liefert

const byte mein24VAuf5Vreduiziert = 3;
unsigned long DaumenUmdrehungen;

void setup() {
 // wie bisher
 pinMode(mein24VAuf5Vreduiziert,INPUT_PULLUP);
 DaumenUmdrehungen = 0;
}


void NurDaeumchenDrehen() {
  DaumenUmdrehungen = DaumenUmdrehungen + 1; 
}

void DasVolleProgramm() {
  // dein bisheriges Programm
  // Blinke_LED();
  // PiepsTuutTuutsPieps();
  // MotorVorwärts
  // HaetschelTaetschelBumsFallera();  
}


void loop() {
  if (digitalRead(mein24VAuf5Vreduiziert) == LOW) {
    DasVolleProgramm();
  }
  else {
    NurDaeumchenDrehen();
  }
}

vgs

das 24V Signal über einen Spannungsteiler auf ungefährliche 5V reduzieren.
Diese 5V an einem Digital-Eingang einlesen.
Wenn 5V anliegen, dein "Programm" starten.
Wenn das Programm am Ende ist, über einen anderen Pin und einem Relaismodul die 24V freischalten.

Unsere Hilfe für dich wäre zielgerichter,

  • wenn du beschreiben würdest was du eigentlich machen willst (und nicht wie du glaubst etwas machen zu müssen).
  • wenn du ein Diagramm zeichnen würdest was da alles vor dir liegt und zeigst wie der Code bisher aussieht.

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