bin gerade damit fertig geworden 3 Stunden zu googlen und zu
verzweifeln.
Habe ein Poti an dem ADC eines ATMEGA 8 und einen Taster am ATMEGA. Nur
wie schreib ich das jetzt in C das wenn der Taster gedrückt wurde er den
ADC Wert (1023 = 1200 sec) ausliest und solange ein Relais am Atmega
umschaltet wie es der ADC Wert vorgibt??? Irgendwie ist das alles sehr
kompliziert in C
> bin gerade damit fertig geworden 3 Stunden zu googlen und zu> verzweifeln.
Was hast denn alles gefunden?
Suchen allein Hilft da leider nicht. Wirst nicht drumherum kommen C zu
lernen. Gibt genug Bücher und Tutorials darüber. Eins davon ist gar
nicht weit entfernt und befindet sich am linken Rand dieser Webseite.
Taste einlesen heißt, Du brauchst ne zuverlässige Entprell- und
Flankenerkennungsroutine, dann ist alle ganz easy.
Es gibt unter C nicht für jede Sache nen extra Befehl.
Es gibt nur wenige Ausdrücke und daraus bastelt man sich dann
kompliziertere zusammen.
C ist also kein Chinesisch, wo es für jedes Wort einen extra Buchstaben
gibt und Du erst über 3000 Buchstaben lernen mußt, um die meisten Bücher
lesen zu können.
Hier im Forum gibt es schon ne Menge Codebeispiele (z.B.
Artikelsammlung), einfach mal schmökern.
Peter
>ur das ist sehr Fehler bahaftet weil er troz der eingebundenden Datei>delay_ms nicht kennt
Dann schau mal unterm Stuhl wo die fehlenden Klammern
geblieben sind ;)
Hi,
ich interpretiere dein Vorhaben einmal so :
Ziel : Durch Drücken eines Tasters soll ein Relais geschaltet werden.
Die Haltezeit soll über ein Poti mittels AD-Wert bestimmt werden ?
IST DAS SO RICHTIG ???
Wenn ja, dann es völlig egal mit welchen µC du es zu tun hast bzw. in
welcher Sprache du in Programmieren möchtest. Du musst dir zuerst
überlegen,
wie du vorgehst und welche Funktionen du brauchst :
1.) Taster drücken soll erkannt werden => Funktion : Taster erfassen
2.) Taster prellt => Funktion : Taster entprellen
3.) AD-Wert des Poti´s einlesen => Funktion : AD-Wert lesen
4.) AD-Wert in einen Zeitwert umwandeln => Funktion : ADC_to_Time
5.) Relais für Zeit X schalten => Funktion : SET_RELAIS_FOR_TIME_X
Dies stellt ganz grob die benötigten Funktionen dar. Mach dir jetzt
gedanken darüber die der Inhalt dieser Funktionen aussehen könnte und
reihe sie dann "richtig" zu deinem Programm zusammen.
Auch wenn ein Profis diese Problem innerhalb einer Stunde lösen kann,
denke ich (vermute, dass du Anfänger bist), dass du das ganze Wochenende
dran tüfteln wirst. Doch die Erfahrung, welche du damit machst
rechtfertigt den Aufwand. Lass dich also nicht abschrecken :-)
Ziel : Durch Drücken eines Tasters soll ein Relais geschaltet werden.
Die Haltezeit soll über ein Poti mittels AD-Wert bestimmt werden ?
Daumen hoch GENAU das
Wozu entprellen? Wenn ich die Aufgabe richtig verstanden habe, soll ein
nicht nachtriggerbarer Monoflop realisiert werden.
Also reicht's, beim ersten Preller zu starten. Was der Taster danach
macht, ist für eine ziemliche Zeitspanne (die viel, viel länger als
jedes Prellen ist) danach piepegal.
"Entprellen" ist nicht für alle Fragen, die einen Taster betreffen,
automatisch eine passende Antwort.
Hazeh Zimmerer schrieb:
> "Entprellen" ist nicht für alle Fragen, die einen Taster betreffen,> automatisch eine passende Antwort.
Doch schon.
Entprellen bewirkt implizit auch eine Störunterdrückung.
Das Gerät soll ja nicht einschalten, nur weil jemand in der Nähe den
Staubsauger einschaltet oder mit dem Handy telefoniert. Sondern erst,
wenn wirklich ne Taste gedrückt wird.
Man kann das zwar durch externe Maßnahmen erreichen (Kodensator,
kleinerer Pullup). Aber jede zusätzliche Hardware ist teurer als wenige
Zeilen Code.
Und Hardware muß jedesmal eingelötet werden, ne Entprellroutine muß nur
ein einziges mal entwickelt werden (oder einfach nur kopiert werden).
Peter
Die Taste schaltet das Relais ein, zusätzlich blinkt ne LED.
Das Poti schaltet aus oder die Taste nochmal drücken.
Solange an ist, kann die Zeit noch verstellt werden.
Das Programm würde auch bequem in nen ATtiny13 passen.
Peter