Ir Code empfangen verarbeiten und senden

Hallo ich hoffe hier kann mir jemand helfen einen skach zuschreiben.
Also ich habe vor das zumbeispiel beim betätigen von der Taste „ein“ am TV vernbedinung arduino den Signal empfängt verarbeitet und dann zbs. Drei Signale „ein“ verschickt von TV,Receiver und Musik Anlage.
Die benötigten Codes von Receiver und so können zuvor ausgelesen werden.

Danke schon mal

Da sieh dir mal die aktuellen Beispiele in der Library "IRremote" an, da wird alles beschrieben.
Das kannst du dann mit den von dir ausgelesenen IR-Codes nutzen.

:slight_smile: Danke für Antwort.
Also ich kriege es hin die Codes auszulesen mit Sketch aus dem Beispielen von irremote.
Ich kriege es auch hin das Fernseher in Schleife an und aus geht.
Aber ich kriege es nicht hin das wenn Signal x empfangen wird dann Signal y und und z gesendet werden.
Ich würde mich freuen über ein fertiges Sketch Beispiel freuen auf dem ich dan aufbauen kann.

UkrainezR:
Ich würde mich freuen über ein fertiges Sketch Beispiel freuen auf dem ich dan aufbauen kann.

Beispiele sind doch reichlich vorhanden.
Dann zeige doch mal das, was bei dir nicht funktioniert.

Hi

Wenn Du bisher hinbekommst, daß der TV an und aus geht, wirst Du wohl den Knopf 'On/Off' senden.
Wenn Du nun statt laufend On/Off eine andere Knopf-Kombination sendest? (die Knöpfe musst Du wohl vorher ebenfalls einlesen, damit Du die Codes bekommst).

Wenn (Empfangen On/Off)
Dann (der TV ist ja jetzt wohl bereits an)

  • Schalte Receiver AN
  • Schalte Soundsystem AN
  • stelle SoundSystem auf AUX 2
  • schalte Receiver auf ProSieben

... fertsch (ok, nur, wenn Du mit SoundSystem per Receiver ProSieben schauen möchtest, kann aber ja auch Mal vorkommen)

Und wie schon geschrieben wurde: Zeige, was Du bereits hast, dann können wir Das mit Dir so weit umstricken, daß auch Du wieder Was davon hast.

MfG

hallo
also ich fange jetzt von neu an.
kann mir jemand denn scatch bereinigen also alles unötiges weg.und denn signal code einbinden.

8850, 4450, 500, 600, 500, 600, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 600, 550, 1650, 550, 1650, 550, 1650, 550, 1700, 500, 1700, 550, 1650, 550, 1700, 500, 1700, 550, 550, 550, 550, 550, 550, 550, 550, 600, 500, 600, 550, 500, 650, 500, 550, 550, 1650, 550, 1700, 500, 1700, 550, 1650, 550, 1650, 550, 1700, 550, 1650, 550, 1650, 550,

/*
 * IRremote: IRrecvDump - dump details of IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 * JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
 * LG added by Darryl Smith (based on the JVC protocol)
 */

#include <IRremote.h>

/* 
*  Default is Arduino pin D11. 
*  You can change this to another available Arduino Pin.
*  Your IR receiver should be connected to the pin defined here
*/
int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}


void dump(decode_results *results) {
  // Dumps out the decode_results structure.
  // Call this after IRrecv::decode()
  int count = results->rawlen;
  if (results->decode_type == UNKNOWN) {
    Serial.print("Unknown encoding: ");
  }
  else if (results->decode_type == NEC) {
    Serial.print("Decoded NEC: ");

  }
  else if (results->decode_type == SONY) {
    Serial.print("Decoded SONY: ");
  }
  else if (results->decode_type == RC5) {
    Serial.print("Decoded RC5: ");
  }
  else if (results->decode_type == RC6) {
    Serial.print("Decoded RC6: ");
  }
  else if (results->decode_type == PANASONIC) {
    Serial.print("Decoded PANASONIC - Address: ");
    Serial.print(results->address, HEX);
    Serial.print(" Value: ");
  }
  else if (results->decode_type == LG) {
    Serial.print("Decoded LG: ");
  }
  else if (results->decode_type == JVC) {
    Serial.print("Decoded JVC: ");
  }
  else if (results->decode_type == AIWA_RC_T501) {
    Serial.print("Decoded AIWA RC T501: ");
  }
  else if (results->decode_type == WHYNTER) {
    Serial.print("Decoded Whynter: ");
  }
  Serial.print(results->value, HEX);
  Serial.print(" (");
  Serial.print(results->bits, DEC);
  Serial.println(" bits)");
  Serial.print("Raw (");
  Serial.print(count, DEC);
  Serial.print("): ");

  for (int i = 1; i < count; i++) {
    if (i & 1) {
      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
    }
    else {
      Serial.write('-');
      Serial.print((unsigned long) results->rawbuf[i]*USECPERTICK, DEC);
    }
    Serial.print(" ");
  }
  Serial.println();
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    dump(&results);
    irrecv.resume(); // Receive the next value
  }
}

Hallo,

das hast du fein kopiert, leider nicht wie hier üblich, in Code-Tags.

Setze den bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar, auch mobile Geräte.

Und auch sehe ich keinerlei Anpassung von dir, damit du deinen gewünschten Code sendest.

Sollen wir das jetzt für dich machen ?
Das ist aber nicht Sinn des Forums, du musst schon mitarbeiten und nicht einfach nur kopieren.

Du hattest doch geschrieben, das dass Senden auch funktioniert.

Dann hast du auch nicht alle Beispiele angesehen.
Z.B. IRrecord macht das was du brauchst.
Ein wenig lesen solltest du auch.

Was kann irrecord?
Nur Signal aufnehmen oder?

UkrainezR:
Was kann irrecord?
Nur Signal aufnehmen oder?

Da du nicht gewillt bist, uns bei deinen Fragen zu helfen und alles inden Wind schlägst, bin ich hier raus.

UkrainezR:
Was kann irrecord?
Nur Signal aufnehmen oder?

Hallo,

irrecord ist die Beispiel Datei "IRrecord.ino" im Verzeichnis exampels der lib.
Du willst Dir ja eine eigene Fernbedienung bauen, wenn ich das richtig verstanden habe.

Aber ich kriege es nicht hin das wenn Signal x empfangen wird dann Signal y und und z gesendet werden.
Ich würde mich freuen über ein fertiges Sketch Beispiel freuen auf dem ich dan aufbauen kann.

Zeig mal einen Schaltplan oder ein Foto oder zumindest eine Beschreibung, den zum senden brauchst Du eine IR LED. Das hat nichts mit den Empfangen von Signalen selbst zu tun.
Im Prinzip macht die genannte Beispiel Datei "irrecord" genau das was Du brauchst. Aufbauen kannst Du selber indem Du den Code soweit verändert das er eben auch noch das z Signal sendet, also ein zweites.

Grüße,
Donny

Hallo irgend wie läut das schief hier.
Sorry das ich mich nicht richtig verständlich beschreiben kann was ich will.

Also ich möchte mit arduino uno und ir Sender + ämfemger ein gerät bauen. Das wenn ich zumbeispiel auf meinem China Fernbedienung die eins drücke sendet arduino dann Befehle an TV, Receiver...

So ich hoffe man kann das verstehen mein Vorhaben.

Da mir hier keiner umgeänderten Sketch einfach schreiben will.

Stelle ich meine Frage mal anders kann mir jemand den Sketch von oben mal erklären?
und zu säuber für Übersichtlichkeit

UkrainezR:
Hallo irgend wie läut das schief hier.
Sorry das ich mich nicht richtig verständlich beschreiben kann was ich will.
.....

Und du liest nicht bzw. willst nicht verstehen, um was wir dich bitten.
Siehe mein Post #6.

Geht es um Sketch in Code Tag setzen?

Die Schaltfläche </> in iPhone Safari finde ich nicht. Leider. kann man irgendwelche Zeichen vor und hinter dem Sketch nachträglich machen damit das schöner aussieht?

Wenn du auf "Modify" gehst, gibt es auch die Schaltfläche.
Ansonsten [code] und am Ende [/code] ohne die Sterne*.

UkrainezR:
Da mir hier keiner umgeänderten Sketch einfach schreiben will.

Wie stellst du dir das auch vor ?

Da wir deine Geräte und Teile nicht kennen, geht das nicht einfach so.

Stelle ich meine Frage mal anders kann mir jemand den Sketch von oben mal erklären?
und zu säuber für Übersichtlichkeit

Auch einfach säubern bzw. rauslöschen geht nicht, da dann evtl. etwas fehlt, was du brauchst.

Du musst schon mithelfen und den Sketch weitestgehend selbst schreiben, dann können wir bei Fehlern helfen.

Und nochmal die Frage:
Warum stellst du den Sketch nicht rein, der bei dir schon funktioniert hat ?
Den Sketch zum Senden und den zum Empfangen!

hier ist das sketch womit mein receiver an und aus geht einfach in schleife.
wie ich empfenger daten anbinde habe ich keine ahnung

/*
 * IRremote: IRsendRawDemo - demonstrates sending IR codes with sendRaw
 * An IR LED must be connected to Arduino PWM pin 3.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 *
 * IRsendRawDemo - added by AnalysIR (via www.AnalysIR.com), 24 August 2015
 *
 * This example shows how to send a RAW signal using the IRremote library.
 * The example signal is actually a 32 bit NEC signal.
 * Remote Control button: LGTV Power On/Off. 
 * Hex Value: 0x20DF10EF, 32 bits
 * 
 * It is more efficient to use the sendNEC function to send NEC signals. 
 * Use of sendRaw here, serves only as an example of using the function.
 * 
 */


#include <IRremote.h>

IRsend irsend;

void setup()
{

}

void loop() {
  int khz = 38; // 38kHz carrier frequency for the NEC protocol
  unsigned int irSignalan[] = {8900, 4450, 600, 550, 600, 550, 550, 550, 600, 550, 500, 650, 600, 500, 600, 550, 500, 1750, 600, 500, 600, 550, 600, 550, 600, 500, 550, 1700, 600, 1650, 550, 1650, 550, 600, 600, 550, 550, 550, 550, 600, 600, 550, 550, 600, 550, 550, 600, 1600, 600, 1650, 600, 1650, 600, 1600, 600, 1650, 550, 1700, 600, 1600, 600, 1650, 550, 600, 550, 600, 500}; //AnalysIR Batch Export (IRremote) - RAW
  
  irsend.sendRaw(irSignalan, sizeof(irSignalan) / sizeof(irSignalan[0]), khz); //Note the approach used to automatically calculate the size of the array.

  delay(5000); //In this example, the signal will be repeated every 5 seconds, approximately.

    unsigned int irSignalaus[] = {8900, 4450, 600, 550, 600, 550, 550, 550, 600, 550, 500, 650, 600, 500, 600, 550, 500, 1750, 600, 500, 600, 550, 550, 600, 600, 500, 600, 1650, 550, 1700, 600, 1600, 550, 600, 600, 1650, 550, 1650, 550, 1700, 600, 1600, 600, 1650, 500, 650, 600, 500, 600, 1650, 550, 600, 600, 500, 550, 600, 600, 550, 600, 550, 500, 1700, 600, 1650, 600, 550, 500};
irsend.sendRaw(irSignalaus, sizeof(irSignalaus) / sizeof(irSignalaus[0]), khz);
}

Also ich habe gehofft das jeman der sich gut auskennt einfach ein Sketch für mich schreibt den ich dan mit meinen ir Codes anpasse.

Und zu Sketch kürzen denk ich das mus eigentlich gehen wenn man sich den Sketch anschaut. Alle Ir Signale werden verglichen ob das ein Samsung oder LG ... ist. Das ist für mich nur un übersichtlich einfach raw reicht vollkommen

UkrainezR:
Also ich habe gehofft das jeman der sich gut auskennt einfach ein Sketch für mich schreibt den ich dan mit meinen ir Codes anpasse.

Und zu Sketch kürzen denk ich das mus eigentlich gehen wenn man sich den Sketch anschaut. Alle Ir Signale werden verglichen ob das ein Samsung oder LG ... ist. Das ist für mich nur un übersichtlich einfach raw reicht vollkommen

du kannst zwar hoffen und denken....aber ein wenig mitarbeiten musst du auch.
Z.B. die Grundlagen lernen, damit du das verstehst was wir hier posten.
Einfach nur Copy&Paste reicht da nicht.

Hier hast du ein Beispiel (nicht getestet) indem du deinen IR-Code empfängst und einen neuen sendest.
Du musst noch deine richtigen Daten eintragen.

/*
   IRremote: IRsendRawDemo - demonstrates sending IR codes with sendRaw
   An IR LED must be connected to Arduino PWM pin 3.
   Version 0.1 July, 2009
   Copyright 2009 Ken Shirriff
   http://arcfn.com

   IRsendRawDemo - added by AnalysIR (via www.AnalysIR.com), 24 August 2015

   This example shows how to send a RAW signal using the IRremote library.
   The example signal is actually a 32 bit NEC signal.
   Remote Control button: LGTV Power On/Off.
   Hex Value: 0x20DF10EF, 32 bits

   It is more efficient to use the sendNEC function to send NEC signals.
   Use of sendRaw here, serves only as an example of using the function.
*/

#include <IRremote.h>
IRsend irsend;

int RECV_PIN = 11;     // hier muss dein Pin rein
unsigned long irValue;

IRrecv irrecv(RECV_PIN);
decode_results results;

int khz = 38; // 38kHz carrier frequency for the NEC protocol
unsigned int irSignalan[] = {8900, 4450, 600, 550, 600, 550, 550, 550, 600, 550, 500, 650, 600, 500, 600, 550, 500, 1750, 600, 500, 600, 550, 600, 550, 600, 500, 550, 1700, 600, 1650, 550, 1650, 550, 600, 600, 550, 550, 550, 550, 600, 600, 550, 550, 600, 550, 550, 600, 1600, 600, 1650, 600, 1650, 600, 1600, 600, 1650, 550, 1700, 600, 1600, 600, 1650, 550, 600, 550, 600, 500}; //AnalysIR Batch Export (IRremote) - RAW
unsigned int irSignalaus[] = {8900, 4450, 600, 550, 600, 550, 550, 550, 600, 550, 500, 650, 600, 500, 600, 550, 500, 1750, 600, 500, 600, 550, 550, 600, 600, 500, 600, 1650, 550, 1700, 600, 1600, 550, 600, 600, 1650, 550, 1650, 550, 1700, 600, 1600, 600, 1650, 500, 650, 600, 500, 600, 1650, 550, 600, 600, 500, 550, 600, 600, 550, 600, 550, 500, 1700, 600, 1650, 600, 550, 500};


void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop()
{
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irValue = results.value;
    
    switch (irValue) {
      case 12345678:        // dein empfangener Code 1
      Serial.println("Empfängt Code 1 und sendet Code1");
      irsend.sendRaw(irSignalan, sizeof(irSignalan) / sizeof(irSignalan[0]), khz); //Note the approach used to automatically calculate the size of the array.
      break;

      case 87654321:        // dein empfangener Code 2
      Serial.println("Empfängt Code 2 und sendet Code 2");
      irsend.sendRaw(irSignalaus, sizeof(irSignalaus) / sizeof(irSignalaus[0]), khz);
      break;
    }
    irrecv.resume(); // Receive the next value
  }
}

vielen dank

es kommt leider fehler meldung

/*
   IRremote: IRsendRawDemo - demonstrates sending IR codes with sendRaw
   An IR LED must be connected to Arduino PWM pin 3.
   Version 0.1 July, 2009
   Copyright 2009 Ken Shirriff
   http://arcfn.com

   IRsendRawDemo - added by AnalysIR (via www.AnalysIR.com), 24 August 2015

   This example shows how to send a RAW signal using the IRremote library.
   The example signal is actually a 32 bit NEC signal.
   Remote Control button: LGTV Power On/Off.
   Hex Value: 0x20DF10EF, 32 bits

   It is more efficient to use the sendNEC function to send NEC signals.
   Use of sendRaw here, serves only as an example of using the function.
*/

#include <IRremote.h>
IRsend irsend;

int RECV_PIN = 11;     // hier muss dein Pin rein
unsigned long irValue;

IRrecv irrecv(RECV_PIN);
decode_results results;

int khz = 38; // 38kHz carrier frequency for the NEC protocol
unsigned int irSignalan[] = {8900, 4450, 600, 550, 600, 550, 550, 550, 600, 550, 500, 650, 600, 500, 600, 550, 500, 1750, 600, 500, 600, 550, 600, 550, 600, 500, 550, 1700, 600, 1650, 550, 1650, 550, 600, 600, 550, 550, 550, 550, 600, 600, 550, 550, 600, 550, 550, 600, 1600, 600, 1650, 600, 1650, 600, 1600, 600, 1650, 550, 1700, 600, 1600, 600, 1650, 550, 600, 550, 600, 500}; //AnalysIR Batch Export (IRremote) - RAW
unsigned int irSignalaus[] = {8900, 4450, 600, 550, 600, 550, 550, 550, 600, 550, 500, 650, 600, 500, 600, 550, 500, 1750, 600, 500, 600, 550, 550, 600, 600, 500, 600, 1650, 550, 1700, 600, 1600, 550, 600, 600, 1650, 550, 1650, 550, 1700, 600, 1600, 600, 1650, 500, 650, 600, 500, 600, 1650, 550, 600, 600, 500, 550, 600, 600, 550, 600, 550, 500, 1700, 600, 1650, 600, 550, 500};


void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop()
{
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irValue = results.value;
    
    switch (irValue) {
      case 4450, 4500, 500, 1750, 500, 1700, 500, 1750, 500, 600, 500, 600, 500, 650, 500, 600, 500, 600, 500, 1750, 500, 1700, 500, 1750, 500, 600, 500, 600, 500, 600, 550, 600, 500, 600, 500, 1700, 550, 1700, 500, 1700, 550, 600, 500, 600, 550, 550, 550, 1700, 500, 600, 500, 600, 550, 600, 500, 600, 550, 1650, 550, 1700, 550, 1650, 600, 550, 550, 1650, 550 
:        // dein empfangener Code 1
      Serial.println("Empfängt Code 1 und sendet Code1");
      irsend.sendRaw(irSignalan, sizeof(irSignalan) / sizeof(irSignalan[0]), khz); //Note the approach used to automatically calculate the size of the array.
      break;

      case 87654321:        // dein empfangener Code 2
      Serial.println("Empfängt Code 2 und sendet Code 2");
      irsend.sendRaw(irSignalaus, sizeof(irSignalaus) / sizeof(irSignalaus[0]), khz);
      break;
    }
    irrecv.resume(); // Receive the next value
  }
}
Arduino: 1.8.6 Hourly Build 2017/11/13 11:33 (Windows 7), Board: "Arduino/Genuino Uno"

C:\Users\UkrainezR\Documents\Arduino\mein_proekt_von_forum\mein_proekt.ino: In function 'void loop()':

mein_proekt_von_forum:46: error: expected ':' before ',' token

       case 4450, 4500, 500, 1750, 500, 1700, 500, 1750, 500, 600, 500, 600, 500, 650, 500, 600, 500, 600, 500, 1750, 500, 1700, 500, 1750, 500, 600, 500, 600, 500, 600, 550, 600, 500, 600, 500, 1700, 550, 1700, 500, 1700, 550, 600, 500, 600, 550, 550, 550, 1700, 500, 600, 500, 600, 550, 600, 500, 600, 550, 1650, 550, 1700, 550, 1650, 600, 550, 550, 1650, 550 

                ^

mein_proekt:46: error: expected primary-expression before ',' token

exit status 1
expected ':' before ',' token