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: 34)

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
  Fehlermedungen beim Kompilieren Franz54 7 119 07.12.2016 14:29
Letzter Beitrag: Pit
  Mit dem Arduino JSON Webseiten auslesen seb201 3 97 05.12.2016 22:25
Letzter Beitrag: Tommy56
  Messchieber auslesen mit nem UNO roadcaptain 8 317 15.11.2016 14:30
Letzter Beitrag: Tommy56
  U-blox Neo 6M GPS auslesen Matthias_Arduino 15 880 09.11.2016 16:40
Letzter Beitrag: AvrRobot
  Fehler beim Kompilieren binderj1 5 296 03.10.2016 21:27
Letzter Beitrag: hotsystems
  Frage zur Programmierung eines Ultraschallsensors jalu4601 10 357 21.09.2016 15:06
Letzter Beitrag: Bitklopfer
  ArduinoDroid Probleme Brother Tak 1 205 10.09.2016 22:12
Letzter Beitrag: Brother Tak
  Ansteuern eines Schrittmotors Uwe1475 28 1.025 03.09.2016 21:03
Letzter Beitrag: Uwe1475
  Fehler beim Speichern von Projekten Manni66 16 691 23.08.2016 10:05
Letzter Beitrag: hotsystems
  mit Attiny85 Feuchtigkeitssensor auslesen toto1975 17 581 19.08.2016 22:40
Letzter Beitrag: hotsystems

Gehe zu:


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