const int buttonPin = 0; // the number of the pushbutton pin
const int Rel1 = 1; // the number of the Relais1 pin
const int Rel2 = 2; // the number of the Relais2 pin
das ist aber seltsam:
Pins 0+1 werden üblicherweise für Serial (UART) verwendet - das würde ich also nicht verwenden....
besser du nimmst z.B. Pins 2,3 und 4.
Oder z.B. 10, 11 und 12 ...
außerdem brauchst du keine const int verwenden, int oder byte reicht.
Es gibt kein "Das geht so einfacher", wer so redet denkt meist schon recht eindimensional. Die Frage lautet: Was geht für DICH einfacher? Diesem Thread nach zu urteilen ist ein Mikrocontroller da definitiv raus. Du siehst ja selber. Wer auch immer dir das mit dem Tiny eingeredet hat: Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel. Darüber kann derjenige mal nachdenken.
Außerdem: Auch wenn es rein finanziell betrachtet auch eine billige Lösung ist, so ist ein Mikrocontroller hier mit großem Geschütz auf Kleinvögel geschossen. Selbst so ein kleiner Tiny kann so viel mehr, es ist doch abartig zu sehen wie der sich langweilt. Und dann ist ja nicht nur der Tiny da, sondern dann will der auch beschaltet werden.
NE555 ist schonmal ein Ansatz. Möglich wäre auch ein Oszillator (gibt es auch als fertige Teile) und ein oder zwei Zähler. Sind noch aus der Zeit bekannt als 74er modern waren, werden aber auch heute noch genutzt und sogar in sehr modernen Bauformen hergestellt. Einen Zähler kannst du mit dem Oszillatorsignal füttern, dann liefert dir der erste Ausgang die Oszillatorfrequenz, der zweite Ausgang die halbe, der dritte Ausgang ein Viertel, und der vierte Ausgang ein Achtel der Oszillatorfrequenz, usw. Es gibt Oszillatoren mit 36,672kHz (oder so eine ähnlich krumme Zahl, bin grad zu faul zum Rechnen), da hast du nach 16 Ausgängen exakt eine Sekunde. Ein normaler Zähler hat oft acht solcher Ausgänge.
Und wenn es ganz schlimm billig sein soll: die gute alte RC-Schaltung. Einfach einen Kondensator über einen Widerstand laden und die Spannung mit einem anderen festen Wert (z.B. über ein Poti eingestellt) mittels Komparator vergleichen.
Alles recht einfach, kein Hexenwerk, und einfach zu verstehen und umzusetzen.
Und dann gibt es halt noch logische UND und ODER-Gatter und Flipflops. Aber ich denke, als RFT-Techniker müßtest du doch alles kennen, was ich bisher aufgezählt habe.
Ansonsten: Vergiß das elektronische Geraffel, das Ganze ist auch mit einfachen Relais sehr gut umsetzbar. Es gibt Relais mit eingebauter Anzugs- und Abfallverzögerung, und was eine Selbsthaltung ist weißt du, so schätze ich, auch. Da werden vielleicht vier oder fünf Relais nötig...wenn überhaupt.
Für den Tiny sehe ich, wenn ich so darüber nachdenke, überhaupt keinen Grund den einzusetzen, für dich ist das die schlechteste Lösung von allen. Du mußt dich mit Zeug auseinandersetzen was du eigentlich nicht willst, um dann eine Lösung zu haben die du weder hinreichend verstehst noch selbständig reparieren kannst. Und das alles, ohne das ich einen Vorteil gegen analoge Elektronik oder gar Klappertechnik erkennen kann.
Okay Leute danke für Tipps ich werde darüber am WE nachdenken.
Hallo Leute,
Es wurde eine Lösung gefunden.
Ich möchte mich hier bei allen Usern bedanken für die Zahlreichen Tips und Lösungsvorschläge. DANKE
Geändert von Schnorry (06.05.2019 um 11:17 Uhr)
Und du magst uns nicht verraten, was du dir nun ausgedacht hast?
Ja klar verrate ich euch die Lösung. Wurde mir in ein Nachbarforum geschrieben, Funktioniert perfekt!
>>> Hinweis von Autor!>>> Dieses Programm ist öffentlich und zur freien Verfügung. Wer mein Geschenk in irgendeiner Form (Geld, Lächeln, Tierfutter für das Tierheim) weitergeben möchte, darf dies gerne tun, denn ich glaube an das Gute im Menschen.
Code:/* ATMEL ATtiny85 +-\/-+ Reset 1| |8 Vcc Ain3 (D 3) PB3 2| |7 PB2 (D 2) Ain1 Ain2 (D 4) PB4 3| |6 PB1 (D 1) pwm1 GND 4| |5 PB0 (D 0) pwm0 +----+ Programmstart >> Rel 1 & Rel 2 in Ruhezustand. Wird der Taster betätigt soll Rel 1 erst bei loslassen des Tasters für kurze Zeit ein Impuls abgeben. Ca. 05 - 1 Sek. Wird der Taster länger als 5 Sek. betätigt soll Rel 2 anziehen bis zum loslassen des Tasters. Rel 1 soll hierbei keinen Impuls abgeben. Taster schaltet gegen GND, also gedrückt = LOW Relais schalten aktiv LOW */ const unsigned long relaisimpuls = 1000; // in Millisekunden, ggf. anpassen const unsigned long tastenintervall = 5000; // in Millisekunden const byte taster = 2; // D2 des ATtiny85 const byte relais1 = 3; // D3 des ATtiny85 const byte relais2 = 4; // D4 des ATtiny85 const unsigned long debounceDelay = 50; unsigned long jetzt, vorhin, tasterMillis; bool altZustand, aktZustand; byte zustand = 1; void setup() { digitalWrite(relais1, HIGH); digitalWrite(relais2, HIGH); pinMode(relais1, OUTPUT); pinMode(relais2, OUTPUT); pinMode(taster, INPUT_PULLUP); aktZustand = digitalRead(taster); altZustand = aktZustand; } void loop() { jetzt = millis(); altZustand = aktZustand; if (jetzt - tasterMillis >= debounceDelay) { aktZustand = digitalRead(taster); if (altZustand != aktZustand) tasterMillis = jetzt; } switch (zustand) { case 1: if (altZustand && !aktZustand) { vorhin = jetzt; zustand = 2; } break; case 2: if (!altZustand && aktZustand) { vorhin = jetzt; zustand = 3; digitalWrite(relais1, LOW); } if (jetzt - vorhin >= tastenintervall) { zustand = 11; digitalWrite(relais2, LOW); } break; case 3: if (jetzt - vorhin >= relaisimpuls) { zustand = 1; digitalWrite(relais1, HIGH); } break; case 11: if (!altZustand && aktZustand) { zustand = 1; digitalWrite(relais2, HIGH); } break; } }
Lesezeichen