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
Gruß Dieter
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: 90)

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
Gruß Dieter
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
Gruß Dieter
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
Gruß Dieter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduin Radio Head Library driver Probleme gandalf7588 3 372 08.04.2018 13:05
Letzter Beitrag: gandalf7588
  Windmesser auslesen will noch nicht so recht klappen.. Stargazer 12 472 05.04.2018 10:54
Letzter Beitrag: amithlon
  Probleme mit multiplexing Thor Wallhall 55 3.409 18.03.2018 18:06
Letzter Beitrag: Tommy56
  Treppenbeleuchtung Probleme mit LED Anzahl Cellman 1 219 18.03.2018 10:13
Letzter Beitrag: hotsystems
Star BME680 IAQ Wert auslesen Bitklopfer 9 1.060 18.03.2018 02:33
Letzter Beitrag: Wampo
  Probleme mit Scheduler Arduino DUE juergen001 5 386 15.03.2018 11:44
Letzter Beitrag: juergen001
  Hilfe beim skript Devtris 24 1.105 12.03.2018 18:19
Letzter Beitrag: Tommy56
  Vorüberlegungen zum Bau eines Hexapoden juergen001 9 550 11.03.2018 11:13
Letzter Beitrag: Binary1
  Hilfe beim Programmieren Klawino 28 1.308 10.03.2018 13:36
Letzter Beitrag: hotsystems
  Serial auslesen > 64 Byte uk1408 18 808 09.03.2018 16:05
Letzter Beitrag: Tommy56

Gehe zu:


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