INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Infrarot zu RS232 für Steuerung
08.01.2017, 18:51
Beitrag #1
Infrarot zu RS232 für Steuerung
Hallo,

Ich habe folgendes Problem mit dem Sketch.
Das Sketch steuert eine Samsung Motorhalterung was auch im Moment funktioniert.
In der letzen Zeile des Sketch ist noch ein Befehl das wenn der TV abgeschaltet wird und der IR Empfänger des Arduino es nicht mitbekommt soll die Halterung einfahren.
Dazu frage ich am TV einen USB Port ab der im Betrieb 5Volt hat und beim abschalten 0Volt.
Leider funktioniert es so im Moment nicht. Ich bräuchte eine IF Abfrage ob der Eingang 2 von High auf Low geht und nur dann sollte er den Befehl nach der IF Abfrage ausführen.
Für einen Tip wäre ich Dankbar Rolleyes

PHP-Code:
#include <IRremote.h>
#include <IRremoteInt.h>
#include <SoftwareSerial.h>




//------------------------------------------------------------------------------
// Tell IRremote which Arduino pin is connected to the IR Receiver (TSOP4838)
//
int recvPin 6;
IRrecv irrecv(recvPin);
const 
int inputPin 2;
byte tv_status 0// aus USB Anschluss TV
unsigned long aus_millis 0//Zähler







/*
  / int blinkPin = 4;
  / IRrecv irrecv(recvPin, blinkPin); */
SoftwareSerial mySerial(1011); // RX, TX


byte message0[] = {0xAD0xA10x030x010x000x010xA6 };  //Power ON
byte message1[] = {0xAD0xA10x030x000x000x010xA5 };  //Power OFF
byte message2[] = {0xAD0xA20x010x140xB7 };              //Move Right
byte message3[] = {0xAD0xA20x010x130xB6 };              //Move Left
byte message4[] = {0xAD0xA20x010x120xB5 };              //Move Up
byte message5[] = {0xAD0xA20x010x110xB4 };              //Move Down
byte message6[] = {0xAD0xA50x010x010xA7 };              //Red
byte message7[] = {0xAD0xA50x010x020xA8 };              //Green
byte message8[] = {0xAD0xA50x010x030xA9 };              //Yellow
byte message9[] = {0xAD0xA10x030x000x000x010xA5 };  //Blue (off)
// byte message10[] = {0xAD, 0xA2, 0x01, 0x15, 0xB8 };              //Return (Info Reset)



// Configure the Arduino

void  setup ( )
{
  
mySerial.begin(9600); // RS232 output
  
Serial.begin(9600);   //Monitor
  
irrecv.enableIRIn();  // Start the receiver
  
irrecv.blink13(true);
  
pinMode(inputPinINPUT);
}

//+=============================================================================


// Translate to RS232
//
void  translate (decode_results *results)

{
  switch ((
results->value))
 
  
  
  {
   case 
0xE0E040BF:
   if (
tv_status == 0) {
    
Serial.println("Rausfahren letzte Position TV an wenn abgespeichert"); 
    
mySerial.write(message0sizeof(message0));   Serial.println (tv_status);  delay(100);     break ; // Power On
   
}
      
  else if (
tv_status == 1) {
    
Serial.println("Reinfahren TV wurde ausgeschaltet");
    
mySerial.write(message1sizeof(message1));   Serial.println (tv_status);  delay(100);     break ; // Power OFF 
 

  
             
    case 
0xE0E046B9:          mySerial.write(message2sizeof(message2));    delay(20);     break ; // Move Right

    
case 0xE0E0A659:          mySerial.write(message3sizeof(message3));    delay(20);     break ; // Move Left

    
case 0xE0E08679:          mySerial.write(message4sizeof(message4));    delay(20);     break ; // Move Down

    
case 0xE0E006F9:          mySerial.write(message5sizeof(message5));    delay(20);     break ; // Move Up

    
case 0xE0E036C9:          mySerial.write(message6sizeof(message6));    delay(20);     break ; // Red

    
case 0xE0E028D7:          mySerial.write(message7sizeof(message7));    delay(20);     break ; // Green

    
case 0xE0E0A857:          mySerial.write(message8sizeof(message8));    delay(20);     break ; // Yellow

    
case 0xE0E06897:          mySerial.write(message9sizeof(message9));    delay(20);     break ; // Blue

//   case 0xE0E01AE5:          mySerial.write(message10, sizeof(message10));    delay(20);     break ; // Return (Info Reset)

   
    
  
}
}


//+=============================================================================
// The repeating section of the code
//

void  loop ( )
{
  
decode_results  results;        // Somewhere to store the results
  
if (irrecv.decode(&results)) {  // Grab an IR code
    
translate(&results);
    
irrecv.resume();              // Prepare for the next value
    
  
}
  
tv_status digitalRead(inputPin);
  
byte status digitalRead(inputPin);
  
{
if (
tv_status == && status == HIGH) {
  
tv_status 1// eingeschaltet
  
aus_millis 0;  
  }
if (
tv_status == && status == LOW) {
  
tv_status 0;  // ausgeschaltet
  
aus_millis millis();
  }
if (
aus_millis && (millis) - aus_millis >= 60000) {
  
aus_millis 0;
  
Serial.println("Halterung reinfahren nach 1min da TV ausgeschaltet");
  
mySerial.write(message9sizeof(message9));     delay(20);
  }
}


gruß

Stephan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2017, 21:02
Beitrag #2
RE: Infrarot zu RS232 für Steuerung
(08.01.2017 18:51)DG0JG schrieb:  Ich habe folgendes Problem mit dem Sketch.
Das Sketch steuert eine Samsung Motorhalterung was auch im Moment funktioniert.
In der letzen Zeile des Sketch ist noch ein Befehl das wenn der TV abgeschaltet wird und der IR Empfänger des Arduino es nicht mitbekommt soll die Halterung einfahren.
Dazu frage ich am TV einen USB Port ab der im Betrieb 5Volt hat und beim abschalten 0Volt.
Leider funktioniert es so im Moment nicht. Ich bräuchte eine IF Abfrage ob der Eingang 2 von High auf Low geht und nur dann sollte er den Befehl nach der IF Abfrage ausführen.
Für einen Tip wäre ich Dankbar Rolleyes

Den Status des USB in altstatus merken. Wenn altstatus = HIGH && status = LOW --> einfahren.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2017, 23:58
Beitrag #3
RE: Infrarot zu RS232 für Steuerung
Hi Tommy,

Danke ich habe den fehler gefunden im Sketch und nun funktioniert es nach mehreren Tests ohne Probleme.
Hier der Ausschitt wo der Fehler lag
Hier hatte ich eine Klammer zu wenig bei millis
if (aus_millis > 0 && (millis()) - aus_millis >= 60000) {

Danke nochmals

Gruß

Stephan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Photo Servo Steuerung PCA9685 und Joystick Timon 16 512 03.03.2020 21:06
Letzter Beitrag: MicroBahner
  Stepper Steuerung mit Taster und Endschalter Milano 10 549 27.02.2020 14:34
Letzter Beitrag: hotsystems
Brick Rutschauto LED Steuerung TheUndecision 1 260 21.01.2020 08:38
Letzter Beitrag: hotsystems
  Kühllüfter Steuerung Matthias4x4 13 777 14.01.2020 15:11
Letzter Beitrag: RMR
  Steuerung KFZ Hebebühne Markus3D 5 970 02.09.2019 09:36
Letzter Beitrag: Markus3D
  RS232 Druckerschnittstelle Luis90 2 562 28.08.2019 19:19
Letzter Beitrag: Luis90
  Steuerung Lüftungsanlage über Temperatursensoren roller64 7 1.165 06.04.2019 10:26
Letzter Beitrag: rkuehle
  Simultane Steuerung von Motoren, Motorshield V2 zucchero 3 773 14.03.2019 21:22
Letzter Beitrag: Tommy56
  Daten Rs232 und Funk oetscherbaer1 3 1.142 25.01.2019 23:04
Letzter Beitrag: oetscherbaer1
  Tv Wandhalterung Steuerung Sushi582 6 1.834 30.04.2018 22:57
Letzter Beitrag: Sushi582

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste