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
Probleme beim Auslesen eines IR Empfängers
03.03.2016, 22:32
Beitrag #1
Probleme beim Auslesen eines IR Empfängers
Hallo Forum,

ich ich möchte mit einer Fernbidienung eine Lichterkette steuern.
Die Beispiele mit IRremote.h funktionieren alle einwandfrei.

Erweitere ich den Code um ein paar Schleifen, bekomme ich von der IR
keine reproduzierbaren Werte mehr. Das Problem ist wohl das Timing.
Man ließt die Daten während der Controller noch schreibt.

Als brauchbare Lösung habe ich jetzt sowas gebastelt:

boolean inService = false;
void serialInterrupt()
{
if (inService) return;
inService = true;
interrupts();
delay(70);
if (irrecv.decode(&results))
{
Serial.println(results.value, DEC);
irrecv.resume();
}
inService = false;
}

Entscheidend ist hier das nutzen eines INT und das delay(70).
Weiter runter kommt man fast nicht, weil der Timer von
IRremote wohl mit 50uS arbeitet.

Kennt jemand noch einen anderen Ansatz?

Smile
linuxpaul
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.03.2016, 22:38
Beitrag #2
RE: Probleme beim Auslesen eines IR Empfängers
Wenn du mal genau beschreibst, was du machen möchtest und deinen kompletten Sketch postest, können wir sicher helfen.

Poste den Sketch bitte in Code-Tags (Schaltfläche # verwenden).

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.03.2016, 23:51
Beitrag #3
RE: Probleme beim Auslesen eines IR Empfängers
(03.03.2016 22:38)hotsystems schrieb:  Wenn du mal genau beschreibst, was du machen möchtest und deinen kompletten Sketch postest, können wir sicher helfen.

Poste den Sketch bitte in Code-Tags (Schaltfläche # verwenden).

Ich möchte eine Lidl Lichterkette mit einer Fernbedienung selber
steuern. der Sketch ist im Anhang.
.ino  mystripe.ino (Größe: 2,16 KB / Downloads: 64)

Ich bin ganz neu im Thema Arduino und habe mit der Ferbedienung
und den Beispielen IRrecvDemo und IRrecvDump begonnen.
hat alles prima geklappt. Dann habe ich den Code in meinen Sketch
integriert und der IR Receiver hat nur noch Zufallszahlen geliefert.

Nu sieht es für mich so aus, als ob irrecv.decode (&results) die Daten
ließt, die gerade im Puffer sind, es reicht wohl ein BIT.
D.h. wenn dieser gerade befüllt wird saugt er das raus was gerade da ist,
den Rest und ggf. noch mehr wenn er wieder vorbei kommt.
Einstellmöglichkeiten (Puffer oder IR Type) habe ich keine gefunden,
daher die Lösung das Auslesen mit einem INT zu starten, >50 uS
zu warten und dann die Daten auslesen. Funktioniert.

Kennt ihr noch einen anderen Trick?

Smile
linuxpaul
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.03.2016, 00:09
Beitrag #4
RE: Probleme beim Auslesen eines IR Empfängers
Ich kann dein Problem nicht nachvollziehen.

In meinen Projekten kenne ich diese Problem nicht. Da läuft der Code auch in der Loop und die einzelnen Befehle (Funktionen) werden in einer if-Anweisung ausgeführt.
Das funktioniert fehlerfrei. Es wird immer der Befehlscode übertragen, der auch gesendet wird.

Was für eine IR-Empfänger verwendest du? das könnte noch das Problem sein.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.03.2016, 08:00
Beitrag #5
RE: Probleme beim Auslesen eines IR Empfängers
(04.03.2016 00:09)hotsystems schrieb:  Ich kann dein Problem nicht nachvollziehen.

In meinen Projekten kenne ich diese Problem nicht. Da läuft der Code auch in der Loop und die einzelnen Befehle (Funktionen) werden in einer if-Anweisung ausgeführt.
Das funktioniert fehlerfrei. Es wird immer der Befehlscode übertragen, der auch gesendet wird.

Was für eine IR-Empfänger verwendest du? das könnte noch das Problem sein.

ich habe mir diese Fernbedienung mit diesem Starter Kit gekauft.

So wie du das schreibst funktioniert bei dir ein Code wie dieser ohne Probleme?

void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
switch(go){
case false:
for(uint16_t i=0; i<LENGTH;i++)
{
strip.setPixelColor(i,Wheel(wc));
strip.show();
delay(20);
wc++;
if (wc>255) wc=0;
}
go = true;
break;

case true:
for(uint16_t i=LENGTH-1;i>0; i--)
{
strip.setPixelColor(i,Wheel(wc));
strip.show();
delay(20);
wc++;
if (wc>255) wc=0;
}
go = false;
break;
}
}

Bei mir leider nicht.

Smile
linuxpaul
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.03.2016, 10:38
Beitrag #6
RE: Probleme beim Auslesen eines IR Empfängers
Von deinem Sketch habe ich nicht geschrieben, dass er bei mir funktioniert.

Sondern dieser hier:
Code:
void loop()
{
  if (irrecv.decode(&results))
  {
  if (results.value == 16738455)                          //Taste 1 ein/aus
    {
     \\Meine Funktion 1
    }
    else if (results.value == 16750695)                   //Taste 2 ein/aus
    {
    \\Meine Funktion 2
    }
    else if (results.value == 16756815)                   //Taste 3 ein/aus  
    {
      \\Menie Funktion 3
    }
    }
  irrecv.resume(); // Receive the next value
  }
}
Das geht natürlich auch mit "Switch/Case"

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.03.2016, 14:13
Beitrag #7
RE: Probleme beim Auslesen eines IR Empfängers
(04.03.2016 10:38)hotsystems schrieb:  Von deinem Sketch habe ich nicht geschrieben, dass er bei mir funktioniert.

Mit "ein Code wie dieser" meinte ich exemplarisch wie.
In deinem Beispiel machst du die IR Freigabe nach der "StateMachine", oder?
Ok, damit hast du praktisch das selbe "Timing" wie in den Beispielen.
D.h. aber auch, dass Eingaben ignoriert werden, wenn es zu innerhalb
der Machine zu Laufzeiten kommt, oder?
Aber Danke für den Ansatz.

Smile
linuxpaul
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.03.2016, 14:44
Beitrag #8
RE: Probleme beim Auslesen eines IR Empfängers
(06.03.2016 14:13)linuxpaul schrieb:  Mit "ein Code wie dieser" meinte ich exemplarisch wie.
In deinem Beispiel machst du die IR Freigabe nach der "StateMachine", oder?
Ok, damit hast du praktisch das selbe "Timing" wie in den Beispielen.
D.h. aber auch, dass Eingaben ignoriert werden, wenn es zu innerhalb
der Machine zu Laufzeiten kommt, oder?
Aber Danke für den Ansatz.

Ja, das stimmt.
Generell sollten aber längere Laufzeiten verhindert werden, was ja auch meistens klappt.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehlermeldung beim Kompilieren Arduino/Genuino Uno Otto 3 102 Gestern 13:33
Letzter Beitrag: hotsystems
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 17 1.262 10.11.2017 22:24
Letzter Beitrag: r4c3
Question Problem beim seriellen Einlesen von RFID-Reader Bezel 5 206 05.11.2017 22:37
Letzter Beitrag: Tommy56
  Ablaufstruktur beim arbeiten mit Sensorwerten? Jan_OL 22 911 02.11.2017 00:08
Letzter Beitrag: georg01
  Probleme mit multiplexing Thor Wallhall 50 1.629 01.11.2017 21:15
Letzter Beitrag: Thor Wallhall
  Interrupt und I2C gibt das Probleme? Badger1875 5 272 03.10.2017 23:26
Letzter Beitrag: GuaAck
  MPU6050 / GY521 auslesen und verstehen Hitikatus 3 437 30.09.2017 11:48
Letzter Beitrag: Hitikatus
  Fortschritte beim 3-flammigen Gasgrill - nun wieder Pause MOE. 17 833 14.09.2017 11:24
Letzter Beitrag: Bitklopfer
  Bei Änderung eines Zustandes (boolean) Aktion auslösen - wie? Gelegenheitsbastler 3 573 04.07.2017 10:50
Letzter Beitrag: Gelegenheitsbastler
  MCP2307 - wie fragt man den Zustand eines Ausganges ab? Gelegenheitsbastler 2 365 22.06.2017 14:04
Letzter Beitrag: Gelegenheitsbastler

Gehe zu:


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