INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Wie nur ansteigende Flanken einlesen ?
21.09.2014, 10:16
Beitrag #9
RE: Wie nur ansteigende Flanken einlesen ?
Hallo Thorsten und Corvus,

ich habe eure beide Versionen ausprobiert und sie funktionieren bei mir. (ich hätte das so nie hin bekommen ...). Vielen Dank erstmal!

Wenn ich das so richtig deute dann ist das so eine Art "lange" Tastenentprellung ?
Was mir jedoch auffiel : nach dem ersten Impuls leuchtet dann die entsprechende Led für 1 sec. (das habe ich als Kontrolle als ausführende Code ergänzt). Danach ist der Eingang für 6 sec taub. Aber nicht ganz ... lege ich während dieser Sperrzeit noch einen weiteren Impuls darauf so reagiert der entsprechende Ausgang innerhalb der Zeit zwar nicht aber danach leuchtet die entsprechende Led ein zweites Mal obwohl keine Eingangssignale mehr anliegen.
Mache ich da was falsch in der ausführenden Code ? : (die anderen liegen an 10,11,12)

"
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
"

Wieso darf die ausführende Code nur wenige ms lang sein ?
Das es später nach dem Einschalten erst funktioniert - das macht nichts, es soll immer eingeschaltet sein.

Gruß,
mops
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.09.2014, 10:35
Beitrag #10
RE: Wie nur ansteigende Flanken einlesen ?
(21.09.2014 10:16)mops schrieb:  Wenn ich das so richtig deute dann ist das so eine Art "lange" Tastenentprellung ?
Ja, genau.

Zitat:Was mir jedoch auffiel : nach dem ersten Impuls leuchtet dann die entsprechende Led für 1 sec. (das habe ich als Kontrolle als ausführende Code ergänzt). Danach ist der Eingang für 6 sec taub. Aber nicht ganz ...
Das ist mir nicht so ganz klar. Um das genau nachvollziehen zu können bräuchte man noch ein paar Details. Ist aber eigentlich eh egal.

Zitat: digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);

Wieso darf die ausführende Code nur wenige ms lang sein ?
Deine Pulse sind 500ms lang. D.h. dass jeder Eingang mindestens alle 500ms abgefragt werden muss, sonst verpasst Du ggf. etwas. Da es vier Eingänge sind bleiben für jeden nur in etwa 125ms.
Außerdem messe ich die millis() nur einmal am Anfang. Dadurch wird timestamp[i] nicht die tatsächlich Zeit zugewiesen, bei der der Impuls festgestellt wurde. Das macht nur einen Unterschied, wenn der ausführende Code wesentlich Zeit verbraucht. Z.B. werden dann aus den 6,5 Sekunden Wartezeit nur noch 5,5Sekunden.

Du darfst also aus verschiedenen Gründen kein delay(1000) verwenden. Wenn man Sketches schreibt, die verschiedene Dinge sozusagen parallel machen, dann muss man delay() aus seiner Welt komplett verbannen! (Das hat prinzipielle Gründe, da Du ja spätestens alle 500ms, oder eigentlich 499ms, Deine Eingänge abfragen musst.)
Ich würde das so machen: Im "auszuführenden Coding" nur den entsprechenden Ausgang einschalten. Dann nach der momentanen for-Schleife (oder an ihrem Ende) für den jeweiligen Ausgang prüfen, ob er "an" ist. Falls ja, dann prüfen, ob inzwischen genug Zeit vergangen ist, um ihn wieder auszuschalten. Du hast ja mit timestamp[i] die Zeit, bei der er eingeschaltet wurde.

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.09.2014, 11:04
Beitrag #11
RE: Wie nur ansteigende Flanken einlesen ?
Das muss ich erstmal sacken lassen um das Ganze zu verstehen. Nebenbei: ich habe mich ein wenig geirrt: die Schaltung die abgefragt werden soll sendet genau 12 Impulse innerhalb von 6 sec pro Ereignis. Die Sketche habe ich bisher jedoch nur auf einem Steckbrett manuell simuliert. In den nächsten Tagen hänge ich mal die vorgesehene Schaltung dran und sehe dann obs genau passt. Smile
An der ausführenden Code werde ich noch etwas basteln müssen.

Was mir noch nicht klar ist: der Arduino soll die ganze Zeit in Betrieb sein. Kann es dadurch zu Problemen (Zählerüberlauf) kommen nach einer längeren Zeit ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.09.2014, 11:12
Beitrag #12
RE: Wie nur ansteigende Flanken einlesen ?
(21.09.2014 11:04)mops schrieb:  Was mir noch nicht klar ist: der Arduino soll die ganze Zeit in Betrieb sein. Kann es dadurch zu Problemen (Zählerüberlauf) kommen nach einer längeren Zeit ?
Ja, nach etwa 49 Tagen. Wenn Du es aber genau so machst, wie ich gezeigt habe, dann sollte das kein Problem darstellen. (Siehe auch z.B. hier: http://tomblanch.wordpress.com/2013/07/1...no-millis/)
Voraussetzung ist, dass es für jeden Eingang mindestens einmal alle 49 Tage einen Impuls geben muss.
Sollte das nicht unbedingt gegeben sein, dann müssen wir uns noch was überlegen.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Zahl von SD-Card Modul einlesen und Var. zuweisen Nafetz 13 290 28.10.2016 10:12
Letzter Beitrag: hotsystems
  433 Mhz Signal von Garagentor Fernbedieung einlesen Much 6 797 07.02.2016 10:45
Letzter Beitrag: Binatone
  Port B vom Arduino Ethernet einlesen magifix 0 350 08.01.2016 10:46
Letzter Beitrag: magifix
  Takt einlesen Igor_H 4 608 07.11.2015 12:06
Letzter Beitrag: Igor_H
  Byteweise von Datei einlesen von SD-Karte. arduinofan 8 902 28.10.2015 19:52
Letzter Beitrag: arduinofan
  GUI für Arduino Werte einlesen/rausschreiben Xtremefly 2 922 23.01.2015 18:41
Letzter Beitrag: Xtremefly
  Analogwerte einlesen kendrick 10 2.538 03.01.2015 20:27
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste