Es tut mir auch etwas leid, dass da ein so dermaßen offensichtliches if drin steckt.
Dabei sind if doch genau die Statements, womit die meisten logischen Fehler in ein Programm eingebaut werden-
Es machts unnötig kompliziert.
Es tut mir auch etwas leid, dass da ein so dermaßen offensichtliches if drin steckt.
Dabei sind if doch genau die Statements, womit die meisten logischen Fehler in ein Programm eingebaut werden-
Es machts unnötig kompliziert.
Nachtrag:
Habe das überflüssige if da mal raus operiert.
Dabei glatt noch einen Bug im FlipFlop gefunden.
Also hier jetzt die etwas aufpolierte Version.
#include <CombiePin.h>
#include <CombieTimer.h>
#include <CombieTools.h>
#include <CombieTypeMangling.h>
using namespace Combie::Millis;
class Task // Interface
{
public:
virtual void init() = 0;
virtual void run() = 0;
};
template<byte inPin,byte outPin,unsigned long onZeit,unsigned long offZeit>
class Taster2Relais: /* implements */ public Task
{
private:
Combie::Pin::TasterGND<inPin> taster;
Combie::Pin::RelaisINV<outPin> relais;
Combie::Timer::EntprellTimer entpreller;
Combie::Timer::PpmGenerator generator{onZeit,offZeit};
Combie::Tools::FlipFlop flipFlop;
public:
virtual void init()
{
taster.initPullup();
relais.init();
}
virtual void run()
{
flipFlop = entpreller = taster;
relais = flipFlop && generator;
}
};
Task * tasks[] = {
new Taster2Relais<2,10,0.4_Sekunden,1_Sekunde>(),
new Taster2Relais<3,11,0.4_Sekunden,3_Sekunden>(),
new Taster2Relais<4,12,0.4_Sekunden,1_Sekunde>(),
new Taster2Relais<5,13,0.4_Sekunden,1_Sekunde>(),
new Taster2Relais<6,A0,0.4_Sekunden,1_Sekunde>(),
new Taster2Relais<7,A1,0.4_Sekunden,1_Sekunde>(),
new Taster2Relais<8,A2,0.4_Sekunden,1_Sekunde>(),
new Taster2Relais<9,A3,0.4_Sekunden,1_Sekunde>(),
};
void setup()
{
for(Task * i:tasks) i->init();
}
void loop()
{
for(Task * i:tasks) i->run();
}
CombieLib.zip (378,8 KB)
Vielen Dank nochmal euch allen.
War bei mir die letzte Zeit etwas stressig.
Ich habe jetzt dein code benutzt und diesen auf 10 Taster+ Relais erweitert (im pack waren 10 Relais).
Hatte dann noch massive Probleme beim verkabeln weil mehrere Lötpunkte verbunden waren. Und dadurch immer mehrere Relais über mehrere Taster gesteuert wurden.
Jetzt funktioniert alles einwandfrei.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.