Arduino Forum

International => Deutsch => Topic started by: JoSMask on Oct 21, 2019, 06:12 pm

Title: Anfänger benötigt Hilfe bei Volume Control
Post by: JoSMask on Oct 21, 2019, 06:12 pm
Hallo liebe Arduino Gemeinde,

ich bin neu hier im Forum sowie auch Neuling bzgl. Arduino
bzw. Programmierung vom Arduino.
Folgendes hatte ich vor:
Es gibt bereits einen Project Code für eine Volume Control

https://www.youtube.com/watch?v=jfoKsIjlmyQ

Dieser wäre für meine zwecke soweit auch gut geeignet.
Ich brauche jedoch den RC5 Philips Code um mein Gerät anzusteuern.
Weiterhin würde ich gern später noch ein paar zusätzliche Taster ansteuern
wollen wie z.B. On/Off/Play/Skip+/Skip-/Stop/Pause
Bisher ist es mir auch nach vielen Stunden probieren leider nicht gelungen das
auf den RC5 Code zu ändern …… geschweige denn die weiteren Extras
Ich wäre sehr erfreut wenn sich jemand bereit erklären würde mir bei der Umsetzung
zu helfen

im voraus schon mal ein Dankeschön

Gruß
Jo$Mask
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: agmue on Oct 21, 2019, 06:50 pm
Bisher ist es mir auch nach vielen Stunden probieren leider nicht gelungen das
auf den RC5 Code zu ändern ……
Was hast Du denn probiert? Ich sehe hier kein Programm, aus dem ich entnehmen könnte, wo es hakt.

Kennst Du denn den zu sendenden Code? Möglicherweise wäre eine vorherige Analyse mit der hoffentlich vorhandenen Fernbedienung notwendig.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: JoSMask on Oct 21, 2019, 07:51 pm
Hallo agmue,

ich bin jetzt davon ausgegangen das die zu sendenden Codes eine Art von Norm haben.

Der NEC Code wäre:

Code: [Select]
void loop(){
  n = digitalRead(encoder0PinA);
 if ((encoder0PinALast == LOW) && (n == HIGH)) {
   if (digitalRead(encoder0PinB) == LOW) {
     encoder0Pos--;
     irsend.sendNEC(0x20DF40BF,32);
     Serial.println ("volume up");
   } else {
     irsend.sendNEC(0x20DFC03F,32);
     Serial.println ("volume down");
     encoder0Pos++;
   }


Bei einem RC5 Code würde dann die (0x20DF40BF,32) sowie (0x20DF40BF,32) durch einen anderen ersetzt.

Muss man den Code der Originalen Fernbedienung auf jeden Fall auslesen ?



Gruß
Jo$Mask
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: Tommy56 on Oct 21, 2019, 07:56 pm
Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [*code] davor und [*/code] dahinter ohne *).
So ist er auch auf portablen Geräten lesbar. Das kannst Du auch noch nachträglich ändern.

Gruß Tommy
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: DrDiettrich on Oct 21, 2019, 07:57 pm
Zur IRremote Bibliothek gibt es ein Beispielprogramm zum Auslesen der originalen Fernbedienung, einschließlich NEC und RC5. Damit kannst Du herausfinden, welcher Code zu welcher Taste gehört, und das dann auf dem Arduino abspielen.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: Tommy56 on Oct 21, 2019, 08:00 pm
Wenn Du das gemacht hast, musst Du sendNEC durch sendRC5 mit den entsprechenden Werten ersetzen.

Gruß Tommy
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: JoSMask on Oct 21, 2019, 08:31 pm
Ich werde das morgen mal ausprobieren und Rückmeldung geben.

Vielen Dank schon mal für die schnelle und kompetente Unterstützung


Gruß
Jo$Mask

Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: DrDiettrich on Oct 21, 2019, 09:11 pm
Wenn Du das gemacht hast, musst Du sendNEC durch sendRC5 mit den entsprechenden Werten ersetzen.
Was stellst Du Dir unter "entsprechend" vor?

Es gibt keine Übersetzung von NEC in RC5.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: Tommy56 on Oct 21, 2019, 09:17 pm
Die, die er nach Deinem Vorschlag von der Fernbedienung ermittelt hat. Deshalb schrieb ich: Danach ...

Gruß Tommy
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: agmue on Oct 21, 2019, 09:35 pm
ich bin jetzt davon ausgegangen das die zu sendenden Codes eine Art von Norm haben.
In D sind viele Dinge genormt, aber bei der Zuordnung der Codes zu den Tasten macht vermutlich jeder Hersteller, was ihm in den Sinn kommt.

Muss man den Code der Originalen Fernbedienung auf jeden Fall auslesen ?
Würde die Sache vereinfachen.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: Deltaflyer on Oct 21, 2019, 11:59 pm
In D sind viele Dinge genormt, aber bei der Zuordnung der Codes zu den Tasten macht vermutlich jeder Hersteller, was ihm in den Sinn kommt.

Natürlich macht da jeder was ihm in den Sinn kommt. Wie sonnst soll der Hersteller denn sonst eine Ersatzfernbedienung zu völlig überteuerten Preisen an den Kunden bringen können?
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: Moko on Oct 22, 2019, 07:51 am
Vielleicht hast Du Glück und findest hier (http://lirc.sourceforge.net/remotes/) Dein Gerät und die passenden Codes.
Bei mir hat es bis jetzt fast immer geklappt.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: JoSMask on Oct 22, 2019, 12:30 pm
Ich habe jetzt ausgelesen aber dennoch  vielen Dank für den Link

Wie gesagt mich wundert es das die Codes doch unterschiedlich sind und es dennoch
funktioniert, denn mit Marantz CD Player Codes aus dem link geht es auch, obwohl diese anders sind.

Hier mal das Auslese Ergebnis

Code: [Select]

volumeUp 10
volumeDown 11
powerOn 40C
powerOff 40C
Play 35
Stop 36
Pause 30
SkipUp 20
SkipDown 21
CDInput 50F  CD Player Menu
TOC 52D
Select/Ok 17
Menu 12



Wie in dem Code weiter unten zu sehen musste ich das dann noch etwas abändern und danach
hat es dann funktioniert.


Besteht evtl. noch die Möglichkeit eine Art Beschleunigung für den Encoder zu realisieren ?
Mit jedem Raster ändert sich die Lautstärke in 0.5 db schritten was mir zu langsam ist.


Code: [Select]

int val;
int encoder0PinA = A2;
int encoder0PinB = A1;
int encoder0Pos = 0;
int encoder0PinALast = LOW;
int n = LOW;

static int cero=0;
long unsigned int irCode;

int cmdReceived;

void setup(){
  Serial.begin(9600);
  pinMode (encoder0PinA, INPUT);
  pinMode (encoder0PinB, INPUT);
}

void loop(){
   n = digitalRead(encoder0PinA);
  if ((encoder0PinALast == LOW) && (n == HIGH)) {
    if (digitalRead(encoder0PinB) == LOW) {
      encoder0Pos--;
      irsend.sendRC5(0x510,12);
      Serial.println ("volume up");
    } else {
      irsend.sendRC5(0x511,12);
      Serial.println ("volume down");
      encoder0Pos++;
    }
    Serial.println (encoder0Pos);
  }
  encoder0PinALast = n;
}




Danke und Gruß
Jo$Mask
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: HotSystems on Oct 22, 2019, 12:32 pm
Sieh dir mal deine Code-Tags n, da läuft was falsch.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: agmue on Oct 22, 2019, 12:54 pm
Besteht evtl. noch die Möglichkeit eine Art Beschleunigung für den Encoder zu realisieren ?
Du könntest sendRC5 mehrmals ausführen.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: Tommy56 on Oct 22, 2019, 01:21 pm
Andere Variante: Du merkst Dir den Zeitpunkt der letzten Encoderbetätigung (millis) und vergleichst beim nächsten Mal, wie lange das her ist.
Kurzer Abstand (schnell gedreht) größere Änderung (z.B. 3), ansonsten 1.
Beispiele hier (https://gammon.com.au/forum/?id=11130).

Gruß Tommy

Edit: Diesen Wert nimmst Du in eine Schleife, in der das sendRC5 ausgeführt wird.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: JoSMask on Oct 22, 2019, 05:06 pm
@HotSystems ...... kläre mich auf ...... was läuft da falsch ?
Ich habe jetzt schon ein paar mal drüber geguckt, konnte aber
keinen wirklichen Fehler finden.

Wie gesagt, ich bin blutiger Anfänger sowie auch schon etwas in die Jahre
gekommen.
Von Jahr zu Jahr habe ich morgens immer mehr Gesicht zu waschen
und brauche noch viel Nachhilfe. :-*

In den nächsten Tagen werde ich noch versuchen das ein und andere
zu ändern.


Gruß
Jo$Mask
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: HotSystems on Oct 22, 2019, 05:20 pm
@HotSystems ...... kläre mich auf ...... was läuft da falsch ?
Ich habe jetzt schon ein paar mal drüber geguckt, konnte aber
keinen wirklichen Fehler finden.
Bitte nicht falsch verstehen.
Es geht nicht um einen Fehler im Sketch, sondern wie du die Code-Tags anwendest.
Am Anfang des Sketches gehört ein Start-Tag [*code], ans Ende ein Ende-Tag [*/code], allerdings ohne die * (Sterne).
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: JoSMask on Oct 22, 2019, 07:57 pm
ahhhhh .......ok.......

Ich gelobe Besserung


Gruß
Jo$Mask
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: Tommy56 on Oct 22, 2019, 08:03 pm
Warum änderst Du es dann nicht?

Gruß Tommy
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: JoSMask on Oct 22, 2019, 09:02 pm
 Start-Tag und Ende-Tag    geändert und somit erledigt  :D


Wenn ich den Sendebefehl mehrfach ausführen möchte, könnte ich dann zwischen
den mehrfachen Befehlen ein delay von 50ms einfügen ?
Oder ist das zu einfach und komplett falsch gedacht ?


Gruß
Jo$Mask
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: agmue on Oct 22, 2019, 09:32 pm
Wenn ich den Sendebefehl mehrfach ausführen möchte, könnte ich dann zwischen
den mehrfachen Befehlen ein delay von 50ms einfügen ?
Ja, kannst Du, aber warum möchtest Du das? Der Sinn erschließt sich mir nicht.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: DrDiettrich on Oct 22, 2019, 10:59 pm
Bei IR Steuerung - wenn die immer noch verwendet wird - empfiehlt es sich sowieso, jedes einzelne Kommando mehrfach abzuschicken, weil man nicht weiß, ob es überhaupt ankommt. Wenn der Empfänger kein eigenes Kommando für stärkere Änderung kennt, tut man sich schwer. Konkreter: probier's halt aus, nur der Empfänger kann Dir sagen, wer recht hat.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: JoSMask on Oct 23, 2019, 01:05 am
Ja, kannst Du, aber warum möchtest Du das? Der Sinn erschließt sich mir nicht.

Ich bin jetzt davon ausgegangen wenn ich den Befehl 3x kurz hintereinander sende
das ich damit eine Art Beschleunigung beim Drehen am Encoder habe.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: agmue on Oct 23, 2019, 12:58 pm
Ich bin jetzt davon ausgegangen wenn ich den Befehl 3x kurz hintereinander sende
das ich damit eine Art Beschleunigung beim Drehen am Encoder habe.
Ja, das schon, aber meine Frage bezog sich auf die Verzögerung. Inzwischen habe ich bei meiner Grundig Remote Control 2 etwa 111 ms Verzögerung gemessen, wenn ich den Knopf gedrückt halte. Ob der Empfänger eine schnellere Folge von Signalen verarbeiten kann, mußt Du ausprobieren.

Manche Fernbedienungen senden einen Code für "lauter". Danach kommt dann bei Bedarf ein Wiederholungscode, nicht der Code für "lauter". Meine Fernbedienungen, die RC5 senden, tun das nicht, aber Du solltest es sicherheitshalber überprüfen.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: DrDiettrich on Oct 23, 2019, 03:03 pm
Der allgemeine REPEAT Code scheint eine Spezialität des NEC Protokolls zu sein.
Title: Re: Anfänger benötigt Hilfe bei Volume Control
Post by: uxomm on Oct 23, 2019, 07:49 pm
Es gibt verschiedene IR-Fernbedienungs-Protokolle, die verbreitetsten sind:
- RC-5, RC-6 (ursprünglich von Philips)
- NEC (viele Japanische Hersteller)
- SONY

Nähere Infos siehe hier: https://forum.arduino.cc/index.php?topic=437267.msg3014335#msg3014335 (https://forum.arduino.cc/index.php?topic=437267.msg3014335#msg3014335)