Arduino Infrarot senden unde empfangen

OP #5337428
Lesenswert?

Hallo,
Ich baue ein Lasertagsystem und habe ein Problem mit meinem Arduino UNO.

Das hier funktioniert nicht:
1
#include <IRremote.h>
2

3
IRsend irsend;
4

5
int RECV_PIN = 11;
6
IRrecv irrecv(RECV_PIN);
7
decode_results results;
8

9
void setup()
10
{
11
  Serial.begin(9600);
12
  Serial.println("Enabling IRin");
13
  irrecv.enableIRIn();
14
  Serial.println("Enabled IRin");
15
}
16

17
void loop() {
18
  if (millis() - last >= 1000)
19
  {
20
    irsend.sendSony(0xa90, 12);
21
  }
22

23
  if (irrecv.decode(&results)) {
24
    irrecv.resume();
25
    Serial.println(results.value, HEX);
26
  }
27

28
  delay(100);
29
}

Ich habe dann mal die zeit gemessen, die der Arduino bracuht, um das 
Signal zu senden: 20 Millisekunden.
Dann habe ich einfach das Senden durch delay(20) ersetzt.

Das hier empfängt IR von Fernbediehnungen aber zuverlässig:
1
#include <IRremote.h>
2

3
IRsend irsend;
4

5
int RECV_PIN = 11;
6
IRrecv irrecv(RECV_PIN);
7
decode_results results;
8

9
void setup()
10
{
11
  Serial.begin(9600);
12
  Serial.println("Enabling IRin");
13
  irrecv.enableIRIn();
14
  Serial.println("Enabled IRin");
15
}
16

17
void loop() {
18
  if (millis() - last >= 1000)
19
  {
20
    delay(20); //Senden braucht auch genau 20 Millisekunden
21
  }
22

23
  if (irrecv.decode(&results)) {
24
    irrecv.resume();
25
    Serial.println(results.value, HEX);
26
  }
27

28
  delay(100);
29
}

Wieso funktioniert es mit einem delay aber nicht mit dem Senden? Obwohl 
die IR-LED wirklich sendet und ich an der LED am Emfänger sehen kann, 
dass es ankommt?

Julius

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren