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
ATTiny84 und IR Fernbedienung
07.02.2021, 14:50
Beitrag #1
ATTiny84 und IR Fernbedienung
Hallo.

Ich habe ein Sketch für den Arduino Uno geschrieben. Es werden ein paar LEDs mit einer IR Fernbedienung geschalten.

Diese sollten dann in einen Lego Model verbaut werden.

Also wollte ich das ganze auf ein ATTiny84 verwirklichen, aus Platzgründen.

Jetzt habe ich das Problem, das die Signale von der Fernbedienung nicht richtig verarbeitet werden.

Nach Recherchen im Internet habe ich herausgefunden, das es am genutzten Timer der verwendeten Bibliothek liegt, bzw. diesen den ATTiny84 nicht unterstützt.

Die englischen Anleitungen, einem ATTiny mit den Bibliotheken in Einklang zu bringen, habe ich nicht verstanden, bzw. endeten alle Versuche in Fehlermeldungen bzw. nicht funktionierender Fernbedienung.

Gibt es IR Bibliotheken die auf Anhieb mit einem ATTiny84 funktionieren? Gibt es ein Tutorial, am besten auf Deutsch, für eine IR Fernbedienung in Verbindung eines ATTinys84 (oder ähnliche)?

Ich bin für jegliche Hilfe Dankbar.

Im Anhang der Sketch und die IR Bibliothek.


Angehängte Datei(en)
.ino  ATTiny_Polizei.ino (Größe: 5,56 KB / Downloads: 14)
.cpp  IRremote.cpp (Größe: 31,02 KB / Downloads: 13)
.h  IRremote.h (Größe: 4,11 KB / Downloads: 13)
.h  IRremoteInt.h (Größe: 15,07 KB / Downloads: 11)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.02.2021, 15:44
Beitrag #2
RE: ATTiny84 und IR Fernbedienung
wie wärs damit?
tiny_IRremote
gruß lorenz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.02.2021, 17:04
Beitrag #3
RE: ATTiny84 und IR Fernbedienung
(07.02.2021 15:44)Corvus schrieb:  wie wärs damit?
tiny_IRremote
gruß lorenz

Leider scheitere ich wieder an Fehlermeldungen Sad
Code:
Arduino: 1.8.10 (Windows 10), Board: "ATtiny24/44/84, ATtiny84, Internal 1 MHz"

sketch\tiny_IRremote.cpp: In member function 'void IRsend::enableIROut(int)':

tiny_IRremote.cpp:208:3: error: 'TIMSK' was not declared in this scope

   TIMSK &= ~_BV(TOIE1); //Timer1 Overflow Interrupt

   ^~~~~

sketch\tiny_IRremote.cpp:208:3: note: suggested alternative: 'GIMSK'

   TIMSK &= ~_BV(TOIE1); //Timer1 Overflow Interrupt

   ^~~~~

   GIMSK

tiny_IRremote.cpp:217:3: error: 'TCCR1' was not declared in this scope

   TCCR1 = _BV(CTC1) | _BV(CS10);

   ^~~~~

sketch\tiny_IRremote.cpp:217:3: note: suggested alternative: 'TCCR1A'

   TCCR1 = _BV(CTC1) | _BV(CS10);

   ^~~~~

   TCCR1A

In file included from d:\arduino1810\arduino-1.8.10\hardware\tools\avr\avr\include\avr\io.h:99:0,

                 from d:\arduino1810\arduino-1.8.10\hardware\tools\avr\avr\include\avr\pgmspace.h:90,

                 from D:\Arduino1810\arduino-1.8.10\hardware\arduino\avr\cores\arduino/Arduino.h:28,

                 from sketch\tiny_IRremoteInt.h:24,

                 from sketch\tiny_IRremote.cpp:22:

tiny_IRremote.cpp:217:15: error: 'CTC1' was not declared in this scope

   TCCR1 = _BV(CTC1) | _BV(CS10);

               ^

sketch\tiny_IRremote.cpp:217:15: note: suggested alternative: 'CS01'

tiny_IRremote.cpp:220:15: error: 'PWM1B' was not declared in this scope

   GTCCR = _BV(PWM1B);

               ^

tiny_IRremote.cpp:223:3: error: 'OCR1C' was not declared in this scope

   OCR1C = SYSCLOCK / khz / 1000;

   ^~~~~

sketch\tiny_IRremote.cpp:223:3: note: suggested alternative: 'OCR1A'

   OCR1C = SYSCLOCK / khz / 1000;

   ^~~~~

   OCR1A

sketch\tiny_IRremote.cpp: In member function 'void IRrecv::enableIRIn()':

tiny_IRremote.cpp:241:3: error: 'TCCR1' was not declared in this scope

   TCCR1 = _BV(CS11) | _BV(CS10);

   ^~~~~

sketch\tiny_IRremote.cpp:241:3: note: suggested alternative: 'TCCR1A'

   TCCR1 = _BV(CS11) | _BV(CS10);

   ^~~~~

   TCCR1A

tiny_IRremote.cpp:244:3: error: 'TIMSK' was not declared in this scope

   TIMSK |= _BV(TOIE1);

   ^~~~~

sketch\tiny_IRremote.cpp:244:3: note: suggested alternative: 'GIMSK'

   TIMSK |= _BV(TOIE1);

   ^~~~~

   GIMSK

ATTiny_Polizei:3:1: error: 'IRrecv' does not name a type

IRrecv irrecv(irpin); //Objekt initialisieren für die IR Übertragung

^~~~~~

ATTiny_Polizei:4:1: error: 'decode_results' does not name a type

decode_results results;

^~~~~~~~~~~~~~

D:\Bastelei\Lego Polizei Licht\ATTiny_Polizei\ATTiny_Polizei.ino: In function 'void irread()':

ATTiny_Polizei:150:7: error: 'irrecv' was not declared in this scope

   if (irrecv.decode(&results)) { //Wenn etwas gelesen wurde dann...

       ^~~~~~

D:\Bastelei\Lego Polizei Licht\ATTiny_Polizei\ATTiny_Polizei.ino:150:7: note: suggested alternative: 'irread'

   if (irrecv.decode(&results)) { //Wenn etwas gelesen wurde dann...

       ^~~~~~

       irread

ATTiny_Polizei:150:22: error: 'results' was not declared in this scope

   if (irrecv.decode(&results)) { //Wenn etwas gelesen wurde dann...

                      ^~~~~~~

exit status 1
'TIMSK' was not declared in this scope

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.02.2021, 17:53
Beitrag #4
RE: ATTiny84 und IR Fernbedienung
Habe bei mir Arduino IDE Version 1.8.13
In den Voreinstellungen bei den zusätlichen Boardverwalter-URLs "http://drazzy.com/package_drazzy.com_index.json" eingetragen.
Unter Werkzeuge->Board->Boardverwalter "ATTinyCore" in Version 1.4.1 installiert.
Dann unter Werkzeuge->Board->ATTinyCore->"ATtiny25/45/85 (No bootloader)" ausgewählt.
Und es kompiliert ohne Fehler.

ATTiny84 und ATTiny85 unterscheiden sich ja nur in der Anzahl der Pins.

gruß lorenz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.02.2021, 16:41
Beitrag #5
RE: ATTiny84 und IR Fernbedienung
(07.02.2021 17:53)Corvus schrieb:  ATTiny84 und ATTiny85 unterscheiden sich ja nur in der Anzahl der Pins.
Wie ich gerade sehe, sind die Timer leider auch etwas anders...
Damit hilft dir die tiny_IRremote für den ATtiny85 wohl doch nicht weiter.
Aber https://github.com/Arduino-IRremote/Arduino-IRremote/ unterstützt wohl auch den ATtiny84
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.02.2021, 18:32
Beitrag #6
RE: ATTiny84 und IR Fernbedienung
Danke für deine Mühe. Ich versuche jetzt die IR Signale über PulseIn auszuwerten. Es geht ja nur um das empfangen.

Erfolg hatte ich aber noch nicht.

Neben der Arbeit und Familie entwickelt das sich aber auch schleppend.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.02.2021, 19:46
Beitrag #7
RE: ATTiny84 und IR Fernbedienung
Mit PulseIn bekomme ich es auf dem ATTiny auch nicht zum laufen Sad

Der Sketch läuft auf dem Uno noch problemlos:
Code:
int ir_pin = 10;                        // Sensor pin
int bin_1 = 1200;                       // Binary 1 Messschwelle (Microsekunden)
int bin_0 = 400;                        // Binary 0 Messschwelle (Microsekunden)
int a;                                  // Helfszähler

void setup() {
  pinMode(ir_pin, INPUT);
  Serial.begin(9600);
}

void loop() {
  int key = getIRKey();                    
  if(a==1) {
    Serial.print("Code empfangen: ");
    Serial.println(key);
    a=0;
  }
}

int getIRKey() {
  if(pulseIn(ir_pin, HIGH) > 2000) {     // Nur ausführen, wenn das StartBit gesendet wird
    int data[22];
    data[0] = pulseIn(ir_pin, HIGH);        
    data[1] = pulseIn(ir_pin, HIGH);
    data[2] = pulseIn(ir_pin, HIGH);
    data[3] = pulseIn(ir_pin, HIGH);
    data[4] = pulseIn(ir_pin, HIGH);
    data[5] = pulseIn(ir_pin, HIGH);
    data[6] = pulseIn(ir_pin, HIGH);
    data[7] = pulseIn(ir_pin, HIGH);
    data[8] = pulseIn(ir_pin, HIGH);
    data[9] = pulseIn(ir_pin, HIGH);
    data[10] = pulseIn(ir_pin, HIGH);
    data[11] = pulseIn(ir_pin, HIGH);
    data[12] = pulseIn(ir_pin, HIGH);
    data[13] = pulseIn(ir_pin, HIGH);
    data[14] = pulseIn(ir_pin, HIGH);
    data[15] = pulseIn(ir_pin, HIGH);
    data[16] = pulseIn(ir_pin, HIGH);
    data[17] = pulseIn(ir_pin, HIGH);
    data[18] = pulseIn(ir_pin, HIGH);
    data[19] = pulseIn(ir_pin, HIGH);
    data[20] = pulseIn(ir_pin, HIGH);
    data[21] = pulseIn(ir_pin, HIGH);

    a=1;
    
    Serial.println("-----");

    for(int i=0;i<=21;i++) {                // Messwerte in Bits wandeln
      Serial.println(data[i]);
      if(data[i] > bin_1) {                 // Bit ist eine 1
        data[i] = 1;
      }  
      else {
        if(data[i] > bin_0) {               // Bit ist eine 0
          data[i] = 0;
        }
        else {
          data[i] = 2;                      // Lesefehler, nicht im Bereich Bit 1 oder Bit 0
        }
      }
    }
  
    for(int i=0;i<=21;i++) {                
      if(data[i] > 1) {
        return -1;                          // Bei Lesefehler übergibt den Wert -1
      }
    }
  
    int result = 0;
    int seed = 1;
  
    for(int i=21;i>=0;i--) {                // Bits in Integer wandeln
      if(data[i] == 1) {
        result += seed;
      }
      seed = seed * 2;
    }
    
    return result;                          // Übergibt den Schlüssel

  }
}

Aber auf dem ATTiny (Mit entfernten Serial) kommt die ganze Blinksequenz die gesteuert werden soll ins stocken. Geschaltet werden kann nichts.

Kann das an der anderen µC Frequenz liegen? Der ATTiny werkelt ja nur mit 1Mhz.

Ich werde mich wohl mal damit beschäftigen müssen, wie ich Daten Serial vom ATTiny zum PC bekomme.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.02.2021, 20:08
Beitrag #8
RE: ATTiny84 und IR Fernbedienung
Warum lässt du den ATtiny nur mit 1MHz laufen ?
Die meisten Libraries funktionieren mit 1MHz nicht auf den ATtinys.

Es hilft dir sicher nicht, aber IRremote funktioniert bei mir auf einem ATtiny85.
Aber eben nur mit 8MHz.

Gruß Dieter

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
  Buzzer und IR-Fernbedienung beim mBot phg 1 254 13.03.2021 19:40
Letzter Beitrag: Tommy56
  PIN Code Infrarot Fernbedienung Weserbergland 6 514 28.12.2020 15:05
Letzter Beitrag: Chopp
  Funk Fernbedienung Taster Abfrage kurz oder lange gedrückt Michi_exe 15 2.016 16.04.2020 17:19
Letzter Beitrag: Tommy56
  Arduino Schaltung 433 MHz Fernbedienung / Handsender AndreasOHZ 16 5.483 16.09.2018 15:43
Letzter Beitrag: hotsystems
  Lauflicht mit Fernbedienung und Shift Register Golffahrer 8 4.407 02.07.2017 19:05
Letzter Beitrag: Tommy56
  LED-RGB Steuerung mit IR-Fernbedienung Royal-mit-Käse 59 17.131 29.05.2017 22:00
Letzter Beitrag: Royal-mit-Käse
  2 und mehrere Led´s mit Fernbedienung AN / AUS + Blinkfunktion Golffahrer 22 9.108 07.06.2016 11:31
Letzter Beitrag: hotsystems
  Brauche Hilfe bei der Infrarot Fernbedienung Levi 11 4.281 24.02.2016 06:55
Letzter Beitrag: Levi
  Mehrere Geräte über eine IR Fernbedienung Respun 20 15.859 07.01.2016 23:51
Letzter Beitrag: hotsystems
  TM1637 mit Attiny84 Sp1elkind 12 6.702 01.08.2015 17:20
Letzter Beitrag: hotsystems

Gehe zu:


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