boxtec Forum
Microcontroller => Arduino General => : palmerx 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
-
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};
-
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.:
if (sscanf(String, "Hallo") == true)
{
Serial.println("velo");
}
Den IR RAW Code kannst du ja auch vergleichen, aber ginge das nicht auch kürzer ?
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 ?
-
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.
-
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
}
}
-
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
}
}