Author Topic: Serial Read --- Vergeichen  (Read 10690 times)

palmerx

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
Serial Read --- Vergeichen
« on: April 22, 2013, 08:49:49 AM »
Hallo zusammen



Kann mir jemand sagen wie ich nach einem String in der serial Ebene suchen kann?

z.B: sobald "hallo" als input (serialread) kommt möchte ich "velo" schreien (serialwrite)


Besten Dank für eure Hilfe!


Marc

palmerx

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
Re: Serial Read --- Vergeichen
« Reply #1 on: April 22, 2013, 08:32:12 PM »
Wenn der IR RAW Code im Serial Monitor erscheint



unsigned int ir_input_signal_1[80] = {4550,4300,650,1600,650,1550,600,1600,650,450,650,450,650,450,650,450,700,450,650,1550,600,1600,650,1550,650,450,650,450,650,500,650,450,650,450,600,500,650,1550,650,450,650,450,650,450,650,450,700,450,650,450,650,1550,650,450,650,1550,650,1550,650,1600,650,1550,650,1550,650,1550,650};




soll mir nach delay(100);

dieser IR RAW Code gesendet werden:




unsigned int ir_output_signal_1[80] = {2450,500,1300,450,700,500,1250,500,700,500,1250,500,700,500,650,550,700,450,1300,500,700,450,1300,500,1250,500,1250,550,650,500,700,500,1300,450,700,500,650,500,1300,500,650};


Nukular

  • Newbie
  • *
  • Posts: 45
  • Karma: +1/-0
Re: Serial Read --- Vergeichen
« Reply #2 on: April 23, 2013, 06:44:21 AM »
Den "Serial Monitor" würde ich gar nicht benutzen.

Du kannst ja den String einlesen (Buchstabenkette bis Enter gedrückt wird)
und mit einem anderen String vergleichen.

Z.B.:
Code: [Select]
  if (sscanf(String, "Hallo") == true)     
    {
       Serial.println("velo");
    }

Den IR RAW Code kannst du ja auch vergleichen, aber ginge das nicht auch kürzer ?

Code: [Select]
if ( (ir_input_signal_1[0] ==4550 ) &
         (ir_input_signal_1[1] ==4300 ) &
         (ir_input_signal_1[2] ==650)  )  //und so weiter ev. in einer Schleife
    {
     delay(100);
     //Sende IR Signal
    }
Das funktioniert, aber fühlt sich viel zu aufwendig an.

Was möchtest du denn machen ?

palmerx

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
Re: Serial Read --- Vergeichen
« Reply #3 on: April 23, 2013, 08:55:06 AM »
Ich möchte einen IR Übersetzter / Translator bauen, dh.wenn ich möchte zb den ein/aus Befehl einer Sony FB in den Mute Befehl eines Samsung TVs wandeln.

Ich möchte es auf RAW machen da dies immer funktioniert selbst wenn ich ein unknown encoding habe.

palmerx

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
Re: Serial Read --- Vergeichen
« Reply #4 on: April 23, 2013, 03:45:50 PM »
Habe es heute noch so Versucht, aber wieder nix....:-(






/*IR Translator
 *
 *
 *
 *
 *
 *
 *Org Code eingelesen im Arduino: Sony ON Button
 *
 *
 * F4BA2988
 * Unknown encoding: F4BA2988 (32 bits)
 * Raw (68): 5372 4550 -4300 650 -1600 650 -1550 600 -1600 650 -450 650 -450 650 -450 650 -450 700 -450 650 -1550 600 -1600 650 -1550 650 -450 650 -450 650 -500 650 -450 650 -450 600 -500 650 -1550 650 -450 650 -450 650 -450 650 -450 700 -450 650 -450 650 -1550 650 -450 650 -1550 650 -1550 650 -1600 650 -1550 650 -1550 650 -1550 650
 *
 *
 *
 */

#include <IRremote.h>

IRsend irsend;


unsigned int samsung_on[200] = {4550,4300,650,1600,650,1550,600,1600,650,450,650,450,650,450,650,450,700,450,650,1550,600,1600,650,1550,650,450,650,450,650,500,650,450,650,450,600,500,650,1550,650,450,650,450,650,450,650,450,700,450,650,450,650,1550,650,450,650,1550,650,1550,650,1600,650,1550,650,1550,650,1550,650};






void setup()

{
  Serial.begin(9600);
}

void loop()


{   
    if (sscanf() == F4BA2988)   // Sony On Button   
    {
        irsend.sendRaw(samsung_on, 80, 38);   //zb:Samsung ON
    }
}

palmerx

  • Newbie
  • *
  • Posts: 10
  • Karma: +0/-0
Re: Serial Read --- Vergeichen
« Reply #5 on: April 24, 2013, 09:24:35 PM »
Also ich hab mich jetz eines anderen Projekts bedient und es etwas modifiziert, geht hervorragend:



#include <IRremote.h>
IRsend irsend;
IRrecv irrecv(11); // Receive on pin 11
decode_results results;


unsigned int samsung_vol[200] = {4500,4400,600,1600,600,1600,600,1600,650,450,650,450,650,450,650,500,600,500,600,1600,600,1600,650,1550,650,450,650,500,600,500,600,500,600,500,600,1600,650,1550,650,1550,650,500,600,500,600,500,600,500,600,500,650,450,650,450,650,450,650,1600,600,1600,600,1600,650,1550,650,1550,650};











void setup()
{
  irrecv.enableIRIn(); // Start the receiver

}
String last;





void loop() {
  if (irrecv.decode(&results)) {
    switch (results.value) {
        case 0xA90:
            // plus
            irsend.sendRaw(samsung_vol, 80, 38);
            last="plus";
            irrecv.enableIRIn();
            break;
        case 1:
              // minus
            irsend.sendRaw(samsung_vol, 80, 38);
              last="minus";
              irrecv.enableIRIn();
              break;
        case 0x2340B922:
              // on/off
              irsend.sendNEC(0x400501FE, 32);
              irrecv.enableIRIn();
              break;
        default:
              // statements
              if(last.equals("plus")){
                irsend.sendNEC(0x400555AA, 32);
                last="";
                irrecv.enableIRIn();
              }
              else if(last.equals("minus")){
                irsend.sendNEC(0x400556A9, 32);
                last="";
                irrecv.enableIRIn();
              }     
    }
    irrecv.resume(); // Continue receiving
  }
 
 
 
   


 
 
 
 

 

anything