Anfänger benötigt Hilfe bei Volume Control

Tommy56:
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.

Die, die er nach Deinem Vorschlag von der Fernbedienung ermittelt hat. Deshalb schrieb ich: Danach ...

Gruß Tommy

JoSMask:
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.

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

Würde die Sache vereinfachen.

agmue:
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?

Vielleicht hast Du Glück und findest hier Dein Gerät und die passenden Codes.
Bei mir hat es bis jetzt fast immer geklappt.

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

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.

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

Sieh dir mal deine Code-Tags n, da läuft was falsch.

JoSMask:
Besteht evtl. noch die Möglichkeit eine Art Beschleunigung für den Encoder zu realisieren ?

Du könntest sendRC5 mehrmals ausführen.

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.

Gruß Tommy

Edit: Diesen Wert nimmst Du in eine Schleife, in der das sendRC5 ausgeführt wird.

@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

JoSMask:
@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).

ahhhhh .......ok.......

Ich gelobe Besserung

Gruß
Jo$Mask

Warum änderst Du es dann nicht?

Gruß Tommy

Start-Tag und Ende-Tag geändert und somit erledigt :smiley:

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

JoSMask:
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.

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.

agmue:
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.

JoSMask:
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.

Der allgemeine REPEAT Code scheint eine Spezialität des NEC Protokolls zu sein.

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: Fernsehsteuerung - #8 by uxomm - Deutsch - Arduino Forum