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

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
Big Grin Probleme mit pgm_read_word NoGi 9 1.076 23.04.2017 10:09
Letzter Beitrag: NoGi
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 797 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt
  Lineares Messsystem zur Positionsbestimmung mithilfe eines Hallsensors Philipp_ 3 243 05.04.2017 16:29
Letzter Beitrag: ardu_arne
  Probleme mit einem Sketch für einen LED Cube 5x5x5 Frank1234 5 300 13.03.2017 12:12
Letzter Beitrag: Tommy56
  Interrupt beim ESP8266 dost0011 9 672 08.03.2017 14:32
Letzter Beitrag: Tommy56
  Arduino Serielle Schnittstelle auslesen mit Visual Basic Obermuda 1 346 29.01.2017 17:02
Letzter Beitrag: hotsystems
  Probleme bei Countdown ferdi 0 184 23.01.2017 10:45
Letzter Beitrag: ferdi
  Arduino hängt beim Upload deranda 14 1.052 20.01.2017 16:14
Letzter Beitrag: renid55
  Led Impuls beim Taster betätigen clemens5555 11 552 17.01.2017 20:00
Letzter Beitrag: renid55
  Beim Hochladen USB Problem Nils 10 903 29.12.2016 21:05
Letzter Beitrag: renid55

Gehe zu:


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