Go Down

Topic: Anfänger benötigt Hilfe bei Volume Control (Read 572 times) previous topic - next topic

JoSMask

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

agmue

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.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

JoSMask

#2
Oct 21, 2019, 07:51 pm Last Edit: Oct 22, 2019, 08:43 pm by JoSMask
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

Tommy56

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
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

DrDiettrich

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.

Tommy56

Wenn Du das gemacht hast, musst Du sendNEC durch sendRC5 mit den entsprechenden Werten ersetzen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

JoSMask

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


DrDiettrich

#7
Oct 21, 2019, 09:11 pm Last Edit: Oct 21, 2019, 09:16 pm by DrDiettrich
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.

Tommy56

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

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

agmue

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.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Deltaflyer

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?

Moko

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

JoSMask

#12
Oct 22, 2019, 12:30 pm Last Edit: Oct 22, 2019, 08:46 pm by JoSMask
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

HotSystems

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

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

agmue

#14
Oct 22, 2019, 12:54 pm Last Edit: Oct 22, 2019, 12:54 pm by agmue
Besteht evtl. noch die Möglichkeit eine Art Beschleunigung für den Encoder zu realisieren ?
Du könntest sendRC5 mehrmals ausführen.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Go Up