Hi Leute,
ich will mir eine Schaltbox für meine Unterhaltungselektronik bauen,
pern IR-Fernbedienung schaltbare Steckdose und einen Aux-Umschalter für
das Audio-System.
Komme aber gerade bei meinem Code dafür nicht weiter, hab mir Einiges
drchgelesen, u.A. was zu BlinkWithoutDelay, wie es bei Tastern gelöst
ist und so ziemlich alles, was ich in der Richtung finden konnte.
Wie mache ich das, dass wenn ich eine Taste auf der FB zum Ein- und
Ausschalten desselben Relais nutzen will, aber zum Ausschalten soll die
Taste eine Weile gedrückt gehalten werden? Woran ich hänge ist, dass das
IR-Signal ja nicht konstant ist, also kein Dauer-An und auch der
empfangene Code kann sich mal ändern, das Letztere kann man ja so lösen,
dass man einen Wert von bis, abfragt, oder? Ich denke in Richtung einer
Art von Entprellung, aber weiter komme ich nicht, also wie ich das
umsetzen kann.
Na jedenfalls bin ich jetz mal wieder total kirre, hoffe ihr könnt den
Knoten lösen und mir da auf die Sprünge helfen. Gut erklärte
Code-Schnipsel wären perfekt.
Danke im Voraus und liebe Grüße,
Willi
Selbst programmieren ist angesagt.
Besorge dir den richtigen IR-Empfänger und die IRRemote-Library. Mit
beiliegenden Beispielen kannst du anfangen zu üben.
Das habe ich ja schon, das ist ja grundsätzlich einfach, hab diesen Code
noch nicht getestet, nur Teile davon, wie man sieht, habe ich noch
nichtmal die richtigen FB-Codes
Es wäre besser, wenn du klein anfängst und mit den vorhandenen
Beispielen übst.
Die richtigen Code kannst du dann aus deiner Fernbedienung auslesen.
Ich verstehe aber nicht, warum du deinen Sketch nicht testest, so wirst
du es nie lernen.
Ich habe schon damit ausreichend rumexperimentiert, alle meine
Fernbedienungen mal getestet und dabei verschiedenste Funktionen
ausprobiert und diese nun auf dem Handy so zusammen gefügt, wie ich mir
vorstellen, dass es funktionieren soll. Nur eine Funktion fehlt, nämlich
dass ich eine Verzögerung beim Ausschalten einbaue, damit ein
versehentliches Ausschalten verhinder wird, stehe da aber wie
geschrieben auf dem Schlauch. Der Sketch ansich ist fehlerfrei, die App
prüft das automatisch, die Funktionen funktionieren alle, es können nur
noch Schönheitsfehler sein.
Und warum schreibst du dann, du hast den Sketch noch nicht getestet ?
Zu deiner fehlenden Funktion:
Die IR-Fernbedienungen die ich kenne, geben bei längerem Drücken erst
den Fernsteuercode aus und anschließend einen zweiten Code, an dem zu
erkennen ist, dass die Taste länger gedrückt wird. Diesen Code kannst du
anschließend zur Auswertung nutzen.
Also wenn erst der Steuercode und anschließend für die Zeit x der
weitere Code kommt, dann ausschalten.
Hab ich ja auch nicht, diesen habe ich noch nicht auf den Arduino
geladen. Das hat nur eine FB von mir gemacht, die Philips von meiner
Anlage, aber auch nur bei ein paar Tasten, zu der habe ich auch eine
Code-Liste von der Lirc Webseite, hab schon früher mit WinLirc
rumexperimentiert.
Mit geht es wirklich nur um eine elegante, bzw. eine ordentliche Lösung
dafür, bisher bin ich bei einer verschachtelten If-Abfrage, wenn der
Code xxx, dann warte, wenn Code (immernoch) xxx, dann mach das, sonst
das, wenn ende, wenn ende, bzw. wenn Code von xxx bis xxy.
Aha, da geht es schon mit der Unkenntnis der Funktion von
IR-Fernsteuerungen los.
Fast alle IR-Fernsteuerungen senden bei längerem drücken:
A) Den Code immer wieder, bis man loslässt, oder
B) den Code nur ein-bis-einige Male.
Manche Fernsteurungen (RC5) ändern bei jedem Tastendruck
EIN spezielles Bit, das mit dem restlichen Code nix zu tun hat,
um dem Empfänger mitzuteilen, dass z.B. zweimal die [3] gedrückt
wurde, was '33' heißen soll. Dieses Bit ändert einfach bei JEDEM
neuen Druck JEDER Taste die Polarität. - Schöne Sache, aber hilft
dir nix.
Also:
Die Funktion ON kurz / OFF lang kann vernünftigerweise nur
im Empfänger geschehen.
Du zählst bei den empfangenen Relais-Steuer-Tasten-Codes einfach,
wie oft der gleiche Code empfangen wurde, bis für eine vorgegebene
Zeit kein Code mehr kommt, oder ein anderer Code kommt.
N < Grenzwert: ON, N >= Grenzwert: OFF
NULL Problem, WENN die Fernsteuerung den Tastencode immer
(oder ausreichend oft) wiederholt, solange eine Taste
gedrückt ist.
Abgesehen von der Scheu vor der echten Welt (die Simulator-
App hat aber gesagt...) sehe ich da kein Verwirklichungsproblem.
Übrigens:
Bei den meisten vernünftigen IR-Fernsteuerungen kommt die
Code-Wiederholung nach einer kurzen Pause, die deutlich
länger, als die Bit-Abstände innerhalb eines Codes ist.
Pause > 10 ms: Code komplett gesendet, aber
Wiederholung kann noch folgen...
Pause > 100 ms: Taste losgelassen. - Code bearbeiten!
Ich habe so etwas ähnliches auch mal gemacht. Läuft jetzt 24/7 um den
MP3-Player zu steuern.
Ich habe einfach einen TSOP genommen. Die IR-Bibliothek. Und dann mit
der Fernbedienung draufgehalten. Dann sieht man, was das Ding wirklich
sendet.
Drückt man länger, liefert bei mir die Bibliothek solange 0xffff, bis
ich loslasse. Das müßte man dann mitzählen.
Also einfach mal anfangen. Die Ausgaben auf die serielle Konsole, und
dann wird vieles klarer.
Danke Jakob, also hab ich schon richtig gedacht, Wert von bis, bzw.
kleiner größer und das in Wenns verschachtelt. Ich habe wie erwähnt
einige Fernbedienungen ebenso wie Empfänger getestet, aber sowas ist mir
eben nicht aufgefallen, außer, wie ebenfalls erwähnt, bei der Philips
Fernbedienung, bei der hat bei manchen Tasten, die an der Stereonlage
eine Funktion haben und diese auch ausführen, keiner der verwendeten
Empfänger irgendwas empfangen, bei der Power-Taste dagegen sendet diese
nach kurzem Halten einem anderen Code, klar, hat ja auch eine Funktion,
nämlich anstatt ins klassische Standby, in den "Eco Power"-Modus zu
schalten. Das hat aber sonst keine meiner FB gemacht, manche senden
scheinbar per zufall immer was anderes bei jedem Drücken, manchmal
mehrfach dasselbe.
Habe TSOP 1736, -38 und zwei verschiedene Standart-Dinger aus
irgendwelchen Geräten ausgeschlachtet, die man nie zuordnen kann, bei
dem einen ist die Linse oval, bei dem anderem rund.
Ich hab auch nichts von Simulator-App geschrieben, ich habe die Hardware
zusammengestellt und mich dann daran gemacht einen Sketch zu schreiben,
sowas mache ich lieber auf dem Handy, weil es ganz einfach weniger Strom
verbraucht als mein Laptop, geschweigedenn mein PC. Ich stand einfach
auf dem Schlauch, war dabei den Sketch zu schreiben und mir ist garnicht
erst eingefallen wie ich die nötigen Zeilen in den Sketch tippe, d.h. da
war einfach noch nichts von der "echten Welt", Arduino und Lappi sind
griffbereit, hätte ich auch nur den Hauch einer Idee, hätte ich es auch
ausprobiert, ich bin durch und durch Praktiker, wenn am Ende nichts bei
rumkommt, was ich mit all meinen Sinnen real wahrnemen kann, hab ich ein
Problem damit es zu lernen, daher muss ich aus der Praxis lernen.
Leute, seid doch nicht immer gleich so "der will mein Wissen abstauben",
man sieht das doch eindeutig, wenn das einer will und ich habe um Hilfe
gebeten, als ob ich beim Klettern keinen Griff finde und jemanden bitte
meine Hand dahin zu führen und nicht mir nen Fahrstuhl an den Berg zu
bauen. Ganz so schlimm ist es mit meiner Noobigkeit nicht mehr, dafür
könnt ihr mich gerne dissen, aber bedenkt bitte auch, dass es ein Hobby
ist, ich habe garnicht die Zeit und Energie jedes Teilgebiet der
Elektronik zu studieren, sonst hätte ich das auch gleich an eine Uni
machen können, oder? Wenn jeder Experte wäre, wäre dieses Forum unnötig
und ihr hättet keine Anfänger zu drauf rumhacken ;))))
Naja, musste ich mal loswerden. Werds heute nschmittag mal so probieren
und dann evtl. nochmal nachfragen.
Danke und lieben Gruß,
Willi
Willi schrieb:> Nur eine Funktion fehlt, nämlich> dass ich eine Verzögerung beim Ausschalten einbaue
Ich meine, da kann ich Dir helfen.
Bin blutiger Anfänger, habe aber so ein Problem
gelöst auf der Basis von blinkwithoutdelay
Beitrag "Re: Arduino UNO retriggerbares Monoflop if while"
Mit diesem Sketch kannst Du verzögert schalten.
Für Dich ist die Einstellung intervalb für die
Verzögerung und intervala machst Du unmerklich kurz.
LG
old.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang