Hallo zusammen, ich bin neu hier und habe auch gleich große Pläne mit meinen Attiny85 Leider habe ich nicht viel Ahnung vom programmieren und hoffe deshalb es kann mir hier jemand helfen. Ich möchte gern einen Stromstoßschalter mit Rückfallverzögerung auf meinen Attiny85 aufspielen. Das ganze soll wie folgt aussehen, Taster PB4 gegen Masse geschalten und PB0 als Ausgang High aktiv Wenn ich den Taster ein mal betätige, soll eine LED am Ausgeng PB0 leuchten und nach zirka 5min von alleine ausgehen. Wenn ich aber den selben Taster an PB4 zum zweiten mal betätige soll die LED sofort ausgehen. Wenn ich den Taster dann wieder betätige soll die LED wieder 5min lang an sein und dann von allein ausgehen wenn man den Taster nicht betätigt (sonst sofort aus.) Ein ganz prima Sache wäre dann noch wenn man es hinbekommen könnte zusätzlich über ein High oder Low Signal am PB3 als (Schalter gesehen) das Programm wahlweise nur als Stromstoßschalter (selbe Funktion ohne Zeit) und als Stromstoßschalter mit Rückfallverzögerung. Ist das machbar mit dem Attiny85?
Ok und gibt es hier jemand der so was auf die schnelle mal programmieren kann am besten in Assembler? Das ganze wäre mir auch 20€ wert. Ich meine ich habe zwar einen normalen Stromstoßschaler programmiert bekommen aber das hat schon mal einen Monat Zeit und ein haufen nerven gekostet. Und Ich dachte mal so, hier gibt es doch bestimmt viele die so was in handumdrehen hinbekommen weil sie vielleicht gerade ähnliche Programme abgespeichert irgendwo rumliegen haben und auch so mit Programmieren viel mehr zu tun haben als ich.
Soll jetzt hier jemand das Programm rüberreichen? Und wenn das jemand macht, womit spielst du es auf den Tiny85? Hast du dir überhaupt schon ein paar Gedanken gemacht, wie das Programm funktionieren könnte? - Tast-Erkennung? - Zeitliche Abläufe? - Logik für die gewünschten Funktionen?
Also ich habe doch einen Programmer auf isp basis hab damit auch schon paar kleine Sachen programmiert. Dann ja, ich dachte mir sendet jemand das fertige Programm per Mail und der bekommt dann die 20€ überwiesen ganz einfach.
Also in C mach ich das in 10-20 Minuten. Assembly is nich so mein Ding. Bist du im Stande dem tiny die benötigten Rahmenbedingungen (stabile Versorgung, Max. 40 mA am Ausgang, usw.) zu liefern?
Der Attiny85 hat 8MHz max, aber für 5min braucht man bestimmt ein Vorteiler. Wegen den in C Programmieren naja wenn es funktioniert ist es natürlich auch ok. Leider hat mein Programmer mit C immer mal ein paar Probleme bringt immer Fehlermeldung und programmiert erst nach den zwanzigsten mal selbst bei Musterprogrammen. Mit Assembler läuft immer gleich alles kann aber eine Einstellungsfrage sein. Also wenn es mit C bei mir läuft gibt es die 20€ natürlich auch.
Wegen der Spannungsversorgung, also die ganze Schaltung soll letztendlich auf 12V laufen wollte für den Attiny85 einen Festspannungsregler 5Volt nehmen so einen TS7805 oder einen noch kleineren in TO92 Gehäuse am Ausgang PB0 Wiederstand 330Ohm an basis NPN Transistor und collector an 12V, emitter auf die Spule von eine 12V Printrelais. Dann noch einen kleinen DIL-Schalter oder nur eine Drahtbrücke zum umschalten an PB3 Stromstoßschalter - Stromstoßschalter mit Rückfallverzögerung.
Mit was flashed du den Tiny wenn ein Hex aus nem C Programm nicht immer geht ? Freilaufdiode nicht vergessen. Gruß JackFrost
Karl M. schrieb: > wie schnell läuft der AVR t85, 1MHz, 8MHz oder mit 16MHz ? Microlutz schrieb: > Der Attiny85 hat 8MHz max, aber für 5min braucht man bestimmt ein > Vorteiler. Microlutz schrieb: > so einen TS7805 oder einen noch kleineren in TO92 Gehäuse am Ausgang PB0 > Wiederstand 330Ohm an basis NPN Transistor und collector an 12V, emitter > auf die Spule von eine 12V Printrelais. Darf, soll oder muß man die "Experten" unter sich lassen?
Microlutz schrieb: > Leider hat mein Programmer mit C immer mal ein paar Probleme woher weiß dein Programmer dass die Daten von einem C-Compiler stammen?
Falk B. schrieb: > Ja, das geht sogar auf dem kleinsten Tiny13. Habe ich sogar auf einem Tiny12 laufen, wer bietet weniger? wendelsberg
wendelsberg schrieb: > wer bietet weniger? PIC10F100 (gleich kommen bestimmt wieder die Stimmen, die erklären, warum für diese Aufgabe ein 32-Bit ARM viel besser geeignet ist) ;)
Hallo! Eine ähnliche Funktionalität habe ich vor längerer Zeit für meine Regenfasspumpe programmiert. Ich glaube es war Assembler auf einem Attiny11? Funktion: Das Regenfass steht im Garten und soll in der Trockenzeit aus dem unterirdischen Regenspeicher gefüllt werden. Dort ist eine Tauchpumpe vorhanden. Es kam immer wieder vor, das ich die Pumpe nach dem Einschalten vergaß und das Fass überlief bis der Erdtank fast leer war. Also Zeitbegrenzung mit Komfort. Programm funktioniert so: 1) Pumpe aus 2) kurzer Tastendruck: Pumpe läuft für 12 Minuten (dann ist das Fass voll) 3) durch kurzen Tastendruck kann die Pumpe jederzeit ausgeschaltet werden wenn z.B. das Fass vorher nicht ganz leer war 4) während des Zeitablaufes blitzt eine LED 5) aus 1) oder 2) kann durch einen langen Tastendruck auf Dauerbetrieb geschaltet werden, die LED leuchtet durchgehend. Jetzt kann die Pumpe auch zum Wässern von Bäumen und Hecken benutzt werden. 6) kurzer Tastendruck macht die Pumpe wieder aus. Soll so ungefähr die Funktion sein? Dann muß ich mal in alten Disketten nach dem Programm kramen.
Gib mir mal eine Möglichkeit (eMail) dich zu kontaktieren, dann könne wir gerne alles aus machen. Mein Angebot wäre ein ASM Programm mit ausführlicher Kommentierung.
Guten Mittag, ich habe mich auch an eine eigenständige Realisierung gemacht. Das Programm ist für 1MHz CPU-Clock ausgelegt, es arbeitet nicht blockierend und verwendet keine Delay o.ä. Der Taster an PortB.4 wird entprellt (peda Routine) und über den Tasterevent wird entweder: a) portb.0 auf High gesetzt, der Ausgangszustand von portb.3 gewechselt und der 5 min Delaytimer gestartet. oder b) portb.0 auf Low gesetzt, der Ausgangszustand von portb.3 gewechselt und der 5 min Delaytimer gestoppt. Ist der Delaytimer abgelaufen, also die verstrichene Zeit >= 5min, dann wird portb.0 auf Low gesetzt und der Delaytimer gestoppt. Das Programm belegt 538 Byte im Flashspeicher, es benutzt Timer1 als Zeitbasis und die statische Ram-Belegung liegt bei 13 Byte. Hier noch ein Report des Compilers, bzw. der IDE.
:
Bearbeitet durch User
Habs gefunden: 0x4f Worte also 158 Bytes Flash 8 RAM-Zellen 1 Stack Adresse fuer Interrupt zur Tastenenprellung und Zeitablauf Na Moby, ist doch ein tolles beispiel fuer Assembler <-> C
Sorry bin nicht eher zum schreiben gekommen,zum Angebot vom Uwe S. ich bin erst mal begeistert das du so schnell das Programm zusammenbekommen hast. Hab da aber noch eine Frage es klingt mir so als könnte man nur vom PB3 den 5min Timer auschalten? Also von PB4 muss sich der Timer auch vor ablauf der 5min zurücksetzen lassen mit wiederholen drücken des Tasters. Der Unterschied den ich mit PB3 erreichen wollte ist nur das dann die LED nach einschalten nicht mehr ausgeht außer ich drücke wieder PB4 und das Umschalten an PB3 aktiviert nur den 5min Timer. Wenn das so klappt sende mir das Programm an offroader78@hotmail.de mit deiner IBAN. oder PAYPAL-konto was dir lieber ist ich werde das Programm prüfen und wenns funktioniert bekommst du dein Geld überwiesen. Ein paar Infos was ich voreinstellen muss wäre gut.
Ach so, was ich noch Fragen wollte, kann ich den Zeitwert mit ein paar einfachen Änderungen in Programm erhöhen falls mal die 5min nicht ausreichen sollten?
Du solltest Dich mal anmelden, dann kannst Du Deine direkten Fragen per PN an den User Deiner Wahl stellen.
Guten Morgen, erst soll es nur ein lauffähiges Programm als Hex- oder BIN-Datei sein und dafür wird ein Trinkgeld vereinbart. Und nun noch der gesamte Quellcode - für lau ? Keiner weis bisher, wie das Programm genau arbeiten soll, da sich die Anforderung scheinbar ändert, oder ungenau ist. Hier sollte man sich mit dem Entwickler direkt austauschen, nur wenn ALLE Fragen genau beantwortet sind, dann verhält sich ein Programm auch genau so, wie man es vorher definiert hatte. Gibt es Interpretationsspielraum, dann kann ein Programm sich in diesen Bereichen anders Verhalten, d.h. eine andere Logik zeigen.
Schick ihm ne hex mit Wartezeit 10-20 Sekunden oder so und wenn der Rest passt dann gibt's gegen Geld den Code für die gewünschte Zeit gegen Geld oder so. (nur ne Idee)
Hallo Lutz, ich habe die Problembeschreibung wie folgt interpretiert:
1 | '--------------------------------------- |
2 | ' Attiny85 @1MHz |
3 | ' +----------+ |
4 | ' Reset -| ## |- Vcc |
5 | ' Mode Switch - PB3 -| |- PB2 - ADC1 |
6 | ' OnOff Switch - PB4 -| |- PB1 - #Mode Output |
7 | ' Gnd -| |- PB0 - Timed Output |
8 | ' +----------+ |
9 | '--------------------------------------- |
Das Programm reagiert nun auf eine Spannung an ADC1 mit Spannungen zwischen Vcc -- Gnd. Über 10 Sekunden Schritte lässt sich nun die Abschaltverzögerung einstellen. Dabei bedeutet: # N=0 (Nullwert) keine Abschaltverzögerung, # N=1 10 Sekunden, # N=x x*10 Sekunden und # N=127 (Endwert) 21 Minuten + 10 Sekunden Es gibt zwei Taster: Der "Mode Switch" an PB3 und der "OnOff Switch" an PB4. Über den Taster "Mode Switch" kann die Abschaltverzögerung aus- und wieder eingeschaltet werden, dabei signalisiert die LED (#Mode Output) an PB1 den Zustand des Programms. LED (#Mode Output) = Low - Abschaltverzögerung ein. LED (#Mode Output) = High - Abschaltverzögerung aus. Hier kann man eine LED mit 1k Vorwiderstand nach Vcc anschalten. Über den "OnOff Switch" an PB4 kann man nun im Wechsel den Ausgang (Timed Output) Ein- = High oder Ausschalten = Low. Bei einem Moduswechsel über "Mode Switch" bleibt der Zustand des Ausgangs (Timed Output) erhalten und man kann ihn immer mit betätigen von "OnOff Switch" wechseln. Die Abschaltverzögerung wird natürlich nur im Modus "Abschaltverzögerung ein" aktiviert.
:
Bearbeitet durch User
Ok, das ist schon so wie ich mir das vorgestellt habe. Wie machen wir nun den Austausch?
Schaue in deine Email und beantworte dort bitte meine Fragen. Bitte nicht mehr hier im Forum.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.