Go Down

Topic: Arduino mit Relais und Button Zeitverzögerung Ein & Ausschalten (Read 3031 times) previous topic - next topic

combie

Ich kann dir vorstellen, wie es bei mir aussehen würde...
(aber ob dir das hilft, weiß ich nicht)

Der Taster an Pin 8, wird bei Betätigung gegen GND geschaltet.
Das Relais an Pin 2, ist eins der China typischen, invertiert arbeitenden, Relais.

Nach dem erkennen eines Tastendrucks zieht das Relais an.
Nach loslassen des Tasters, fällt das Relais nach 500ms ab.

Code: [Select]
#include <CombieTimer.h>
#include <CombieTools.h>
#include <CombiePin.h>



Combie::Pin::RelaisINV<2>        relais;
Combie::Pin::TasterGND<8>        taster;
Combie::Timer::EntprellTimer     entprellen(20);// ms
Combie::Timer::FallingEdgeTimer  toff(5000); //ms abfallende Flanke wird verzoegert
Combie::Tools::FlankenErkennung  flankenerkennung;


void setup()
{
  relais.init();
  taster.initPullup();
}

void loop()
{
  // Datenfluss von rechts nach links
  relais = toff = flankenerkennung = entprellen = taster;
}


Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

HotSystems

Ich bin immer noch dran und habe keine Lösung gefunden. ich habe einen Code aber auch der Arbeitet nicht wie erwartet.
.....
Sobald ich den Code auf den Arduino lade fängt das Relais an wie ein Blinker an und aus zu gehen. Egal ob ich den Button drücke oder nicht?
Dann solltest du dich unbedingt mit den Grundlagen beschäftigen und nicht irgend etwas aus dem Web kopieren.

Auch solltest du dich an die von den Forenmitgliedern gemachten Vorschlägen halten, nur so können wir dir zielgenau helfen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)


combie

Kein Herz für Noobs...:(
Klar doch!

Allerdings, mir ist dein Code zu verschachtelt.
Ich kann nicht überblicken, was da passiert.
Und ihn damit auch nicht reparieren.
Klartext: Ich bin zu doof und zu faul dazu.

Und für dich selber, ist er offensichtlich auch zu kompliziert!


Tipps:
Modularisiere deinen Code.

Teile ihn in klar getrennte Bereiche auf.
Benenne diese Bereiche.

Das macht es übersichtlicher.
Das verbessert die Wiederverwendbarkeit, für spätere Projekte.


--
Leitsatz:
Für alles, was du schon mehr als drei mal gemacht hast, baue dir eine Lib.
Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

combie

Code: [Select]
// Taster schaltet gegen Vcc
// PullDown erforderlich

// Relais schaltet bei High


const byte pinButton         = 8;
const byte Relay             = 2;
const unsigned long debounce = 500;
const unsigned long stayON   = 5000; //stay on for 5000 ms
unsigned long entprellCount  = 0;

void setup()
{
  pinMode(pinButton, INPUT);
  pinMode(Relay, OUTPUT);
}


void loop()
{

  // entprellen
  entprellCount = 0;
  while(entprellCount < debounce)
  {
    if(digitalRead(pinButton)) entprellCount++;
      else entprellCount = 0;
    delay(1);
  }


  // Relais betaetigung
  digitalWrite(Relay, HIGH);
  delay(stayON);
  digitalWrite(Relay, LOW);
}


Der Code ist blockierend.
Erweiterungen sind damit quasi unmöglich.(yield()?)
Der Nachtwächter liefert dir bessere Möglichkeiten
Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

HotSystems

Kein Herz für Noobs...:(
Wurde ja schon geschrieben: Klar doch !

Aber die Grundlagen solltest du dir selbst beibringen, da können und wollen wir nicht einsteigen.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

combie

Quote
Aber die Grundlagen solltest du dir selbst beibringen, da können und wollen wir nicht einsteigen.
Soweit würde ich nicht gehen!

Aber:
Es hilft dem ArneDunio nicht, wenn ich die Grundlagen lerne....

Erstens, habe ich das schon, zumindest zu einem großen Teil.
Zweitens muss er/sie/es das selber tun, weil ich nicht auf so großen Entfernungen, in fremder Leute Köpfe rum fummeln kann, oder gar will.
Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

SpaghettiCode

Hi Arne,

ich habe im Januar etwas sehr ähnliches geschrieben, einen Belichtungstimer, der etwa 90% Deiner Anforderung entspricht.
Schau da einfach mal rein : https://forum.arduino.cc/index.php?topic=524803.0

Was Dir dann eigentlich noch fehlt, ist die Wiederholung, was zu viel ist, ist die Möglichkeit der Zeitverstellung ...
Um ein Teilproblem zu lösen sind Ideen Anderer immer gut, aber was man selber macht versteht man um Längen besser!

Gruß André

HotSystems

Um ein Teilproblem zu lösen sind Ideen Anderer immer gut, aber was man selber macht versteht man um Längen besser!

Da stimme ich dir zu, aber nur, wenn es nicht aus Copy&Paste besteht.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

SpaghettiCode

Da stimme ich dir zu, aber nur, wenn es nicht aus Copy&Paste besteht.

Das meinte ich mit dem Verweis auf ein Teilproblem. Ich persönlich erwarte nirgends einen Sketch zu finden, der 100% das macht, was ich mir vorstelle, also quasi ein Fertigprodukt. Aber es gibt auch Codeschnipsel die für mich funktionieren, auf die ich selbst nie kommen würde, da ich auch in Monaten nie so tief im Arduino stecken werde.

Gruß André

Tommy56

Wenn Du diese Codeschnipsel nutzt, um zu lernen sie zu verstehen, ist das ein durchaus brauchbarer Weg, um seine Kenntnisse zu erweitern.

Wenn Du sie nur in Deine Anwendung kopierst, ohne sie zu verstehen, ist das nicht der erstrebenswerte Weg.

Das wollte hotsystems, wohl etwas kürzer formuliert, ausdrücken.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Go Up