Interpretation einer Fehlermeldung

Hallo zusammen.
Ich bin ein Neuling hier und überhaupt bei Arduino.
Aufgrund Timing Probleme bei einem UNO und WS2812B möchte ich die IR Decodierung auf einen extrenen Controller outsourcen und dann via I2C übertragen: Also IR_to_I2C ..

Die Suche hat ergeben, dass HOTSYSTEMS sich dem Problem schon erfolgreich angenommen hat und für mich eine passende Lösung programmiert hat.
Das finde ich super und möchte mich bedanken!! :slight_smile:

https://forum.arduino.cc/index.php?topic=372623.msg3175583#msg3175583

Ich bekomme leider folgende Compiler Fehlermeldungen und kann diese nicht deuten. Möglicherweise hat sich die IDE im Laufe der Jahre schon so weit verändert, dass es nicht mehr klappen kann.
Aber alles nur Vermutung. Evtl. sieht ja jemand gleich, woran es scheitert:

* ATtiny85 Slave IR to I2C * 14.03.2017
 ........

Und die Fehlermeldung hierzu:

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Chef\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Chef\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Chef\Documents\Arduino\libraries -fqbn=attiny:avr:ATtinyX5:cpu=attiny25,clock=internal8 -ide-version=10812 -build-path C:\Users\Chef\AppData\Local\Temp\arduino_build_697282 -warnings=all -build-cache C:\Users\Chef\AppData\Local\Temp\arduino_cache_332927 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Chef\Documents\Arduino\IR_TO_I2C\IR_TO_I2C.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Chef\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Chef\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Chef\Documents\Arduino\libraries -fqbn=attiny:avr:ATtinyX5:cpu=attiny25,clock=internal8 -ide-version=10812 -build-path C:\Users\Chef\AppData\Local\Temp\arduino_build_697282 -warnings=all -build-cache C:\Users\Chef\AppData\Local\Temp\arduino_cache_332927 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino5.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Chef\Documents\Arduino\IR_TO_I2C\IR_TO_I2C.ino
Using board 'ATtinyX5' from platform in folder: C:\Users\Chef\AppData\Local\Arduino15\packages\attiny\hardware\avr\1.0.2
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny25 -DF_CPU=8000000L -DARDUINO=10812 -DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Users\\Chef\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1.0.2\\variants\\tiny8" "C:\\Users\\Chef\\AppData\\Local\\Temp\\arduino_build_697282\\sketch\\IR_TO_I2C.ino.cpp" -o nul
Alternatives for TinyWireS.h: [TinyWireS]
ResolveLibrary(TinyWireS.h)
  -> candidates: [TinyWireS]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny25 -DF_CPU=8000000L -DARDUINO=10812 -DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Users\\Chef\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1.0.2\\variants\\tiny8" "-IC:\\Program Files (x86)\\Arduino\\libraries\\TinyWireS" "C:\\Users\\Chef\\AppData\\Local\\Temp\\arduino_build_697282\\sketch\\IR_TO_I2C.ino.cpp" -o nul
Alternatives for IRremote.h: [IRremote IRremote]
ResolveLibrary(IRremote.h)
  -> candidates: [IRremote IRremote]
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny25 -DF_CPU=8000000L -DARDUINO=10812 -DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Users\\Chef\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1.0.2\\variants\\tiny8" "-IC:\\Program Files (x86)\\Arduino\\libraries\\TinyWireS" "-IC:\\Users\\Chef\\Documents\\Arduino\\libraries\\IRremote" "C:\\Users\\Chef\\AppData\\Local\\Temp\\arduino_build_697282\\sketch\\IR_TO_I2C.ino.cpp" -o nul
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny25 -DF_CPU=8000000L -DARDUINO=10812 -DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Users\\Chef\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1.0.2\\variants\\tiny8" "-IC:\\Program Files (x86)\\Arduino\\libraries\\TinyWireS" "-IC:\\Users\\Chef\\Documents\\Arduino\\libraries\\IRremote" "C:\\Program Files (x86)\\Arduino\\libraries\\TinyWireS\\TinyWireS.cpp" -o nul
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny25 -DF_CPU=8000000L -DARDUINO=10812 -DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Users\\Chef\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1.0.2\\variants\\tiny8" "-IC:\\Program Files (x86)\\Arduino\\libraries\\TinyWireS" "-IC:\\Users\\Chef\\Documents\\Arduino\\libraries\\IRremote" "C:\\Program Files (x86)\\Arduino\\libraries\\TinyWireS\\usiTwiSlave.c" -o nul
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny25 -DF_CPU=8000000L -DARDUINO=10812 -DARDUINO_attiny -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Users\\Chef\\AppData\\Local\\Arduino15\\packages\\attiny\\hardware\\avr\\1.0.2\\variants\\tiny8" "-IC:\\Program Files (x86)\\Arduino\\libraries\\TinyWireS" "-IC:\\Users\\Chef\\Documents\\Arduino\\libraries\\IRremote" "C:\\Users\\Chef\\Documents\\Arduino\\libraries\\IRremote\\IRremote.cpp" -o nul
Alternatives for WProgram.h: []
ResolveLibrary(WProgram.h)
  -> candidates: []
In file included from C:\Users\Chef\Documents\Arduino\libraries\IRremote\IRremote.cpp:13:0:

Mehrere Bibliotheken wurden für "IRremote.h" gefunden
C:\Users\Chef\Documents\Arduino\libraries\IRremote\IRremoteInt.h:15:10: fatal error: WProgram.h: No such file or directory

 Benutzt: C:\Users\Chef\Documents\Arduino\libraries\IRremote
 #include <WProgram.h>

 Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\IRremote
          ^~~~~~~~~~~~

compilation terminated.

Bibliothek TinyWireS im Ordner: C:\Program Files (x86)\Arduino\libraries\TinyWireS (legacy) wird verwendet
Bibliothek IRremote im Ordner: C:\Users\Chef\Documents\Arduino\libraries\IRremote (legacy) wird verwendet
exit status 1
Fehler beim Kompilieren für das Board ATtiny25/45/85.

....ums kurz zu machen:
der Compiler sucht:
C:\Users\Chef\Documents\Arduino\libraries\IRremote\IRremoteInt.h:15:10: fatal error: WProgram.h: No such file or directory

Benutzt: C:\Users\Chef\Documents\Arduino\libraries\IRremote

Das irritiert mich

Du hast Dir irgend eine uralte IRemote-Lib installiert.

Gruß Tommy

Du musst die Libraries verwenden, die ich auch im Sketch eingesetzt und kommentiert habe.

Anders funktioniert es nicht.

Es ist mir recht peinlich. Ich möchte keinen nerven. Ich komme allerdings nicht weiter.

  • Ich habe die downloads , wie im sketch einkommentiert , herunterladen.
  • Ich habe Arduino in ein neues Verzeichnis installiert und die Libs in den Lib Ordner hinzugefügt.
  • ..die Boarderweiterung auf Tiny ergänzt
  • ..im User Ordner\arduino\libary\ hineinkopiert..
    ..und vorher immer alte libs gelöscht

Kann es sein, dass die libs von damals jetzt geändert wurden, aber noch den gleichen Download-Link im Internet haben ? Kann ..kann alles.. Aber ich komme echt nicht weiter. Auf meinem Laptop das Gleiche.

Mehr als oben beschrieben, muss ich doch nicht tun:
Sketch laden, passende Libarys im richtigen Speicherort, Boardverwaltung, Tiny auswählen....
Es liegt sicher an den Libs.. mehr fällt mir gerade nicht ein...
(weiß nicht mehr weiter.....)
Falls wer noch eine gute Idee hat, raus damit..
Falls sich die Libs von damals geändert haben, gibts die alten noch irgendwo ?

Ok, kein Problem.
Wenn ich am PC bin, werde ich mir das mal ansehen, was da schief läuft.

WProgram.h ist die Library für die arduinospezifischen Funktionen bis zur IDE Version 0.23. Ab der IDE 1.x die im Oktober 2012 herauskam heißt die Bibliothek arduino.h
Wenn Du einen Sketch mit der IDE1.xx kompilieren willst der für die IDE 0.x x geschrieben wurde bekommst Du diesen Fehler. Du solltest Dir eine aktualisierte Version des Sketches/Bibliothek suchen und diese verwenden.

ansonsten: FAQ Neuigkeiten und Probleme ab Arduino IDE 1.0 - Deutsch - Arduino Forum

Grüße Uwe

Die ATtiny-Tools habe ich seinerzeit mit der IDE 1.6.5 und ATtiny-Version 1.5.4 entwickelt.
Damit funktioniertes bei mir auch noch fehlerfrei.

Auf neuerer IDE schmeißt es auch, aber andere Fehler. Da kann ich aktuell nichts zu sagen.

Hallo und vielen Dank für eure Mühen...
Leider bin ich nicht weitergekommen. Ich habe mir die letzten Tage vieles über I2C einverleibt. Aber alles kapiert man beim Selbststudium halt doch nicht...
Nun habe ich versucht, den Sketch für Uno umzuschreiben. Ich weiß aber nicht, ob und wo ich Fehler eingebaut habe, weil die Kommunikation zwischen Master (UNO) und Slave (UNO als IR Empfänger ) nicht funktioniert. Um festzustellen, wo es denn hängt, habe ich mir Debuggings eingebaut, damit ich im Seriellen Monitor sehen kann, wie weit das Programm jeweils durchläuft. Nun bin ich soweit, dass der Slave im Master den Interrupt auslöst und auf Nachricht auf Adresse 50 (vergeblich) wartet. Entweder fragt der Master nicht richtig oder der Slave antwortet nicht. Es sind nur wenige Zeilen. Darf ich euch nochmals bemühen? (Leider hab ich nix passendes gefunden, wo ich abkupfern hätte können.....).
Dank
Der Mastercode läuft bis nach der Interruptabfrage (als Debugging bekomme ich 22 angezeigt), wenn er einen IR Code erkannt hat und der Slave "Interrupt" am Master auslöst..

Mastercode:

/// Master für: I2C Abfragen eines Slaves mit Interrupt-Auslöser

#include <Wire.h>

void setup() {
  pinMode(3, INPUT); //attachinterrput 1 auf PIN3 
  pinMode(13, OUTPUT);  //LED13 ist onboard
  Serial.begin(57600);
  Wire.begin();          // I2C Start

  attachInterrupt(1, Adresse50abfragen, FALLING);  //auf Interrupt lauern
  Serial.println("17 "); //DebugMeldung
}
void Adresse50abfragen()
{
  Serial.println("22 "); //Debugmeldung, 
  Wire.requestFrom(50, 1, true);   // Wir erwarten jetzt "1 Byte" auf 0x50 u. Busfreigabe
  Serial.println("24 "); //Debugmeldung
  while (Wire.available())
  {
    Serial.print("27 ");  //Debug Meldung für Zeile 27

    byte c = Wire.read(); // was so ankommt, bleibt als Byte
    Serial.print(c);         // mein Byte seriell ausgeben.... mein Debugging
    digitalWrite(13, HIGH);
    delay(10);
    digitalWrite(13, LOW);
  }
}
void loop() //  Abfrage RTC von 0x68 und NEOPIXEL Ausgabe
{
}

Und nun der von mir aus Uno umgeschriebene Slave (IR_2_I2C)

// Slave Interrupt IR I2C "sender"
//29.03.2020 // neuer versuch
#include "Wire.h"
#include <IRremote.h>
#define IRRec_PIN 7  //weil ich es da angelötet habe 
#define IRQ_PIN 8 // auf DigitalPIN 3 vom Master UNO gelötet
#define Led_PIN 13 //die ist Onboard - es muss nix gelötet werden

byte i2cByte[] = {200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223}; //vorläufiger Array Inhalt... meine FB hat xx Tasten
byte sendByte = 0; // Anfangswert 0
byte byteRcvd = 0; //hier auch auf 0 setzen - Datenanforderung vom Master ?
unsigned int irDecoded = 0; //keine Ahnung - auf 0 stellen

IRrecv irrecv(IRRec_PIN);   //siehe Empfänger PIN
decode_results results;    //

void setup()
{

  Serial.begin(57600);
  Serial.println("24");  //Ausgabe via Serial
  irrecv.enableIRIn();                  // Start IR-Receiver
  Wire.begin(50);                // I2C Bus initialisieren Hex 50
  digitalWrite(IRQ_PIN, HIGH);          // IRQ_PIN auf 5 Volt
  pinMode(IRQ_PIN, OUTPUT);             // PIN  ist hier der Ausgang, der den IRQ beim Master anfordert
  pinMode(Led_PIN, OUTPUT);             // LED am PIN  soll leuchten, wenns was gibt
  Serial.println("30");  //Ausgabe via Serial
}

void loop()
{
  byteRcvd = 0;
  readIRcode();                         // start IR-Code empfangen und dekodieren
  I2CReceived();                        // I2C Code empfangen und senden
}

void I2CReceived()
{
  //Serial.println("0x50 wird gleich  abgefragt");  //Ausgabe via Serial
  if (Wire.available()) // receive I2C --der master sollte n// receive I2C --der master fragt nun 0x50 ab
    Serial.println("0x50 empfangsbereit");  //Ausgabe via Serial
  byteRcvd = Wire.read();     // read byte from master - "ich bin jetzt dran und soll nun mein Byte übertragen "
  Serial.println("0x50 wurde abgefragt");  //Ausgabe via Serial
  Serial.println(byteRcvd);  //Ausgabe via Serial

  digitalWrite(Led_PIN, HIGH);   // LED an
  Serial.println("LED13 an");  //Ausgabe via Serial
  Wire.write(sendByte);           // send I2C-byte
  Serial.println("wire.write - sendbyte");  //Ausgabe via Serial
  delay(10);                        // warte ab
  Serial.println("delay10");  //Ausgabe via Serial
  digitalWrite(Led_PIN, LOW);            // LED  aus
  Serial.println("LED13 wieder aus");  //Ausgabe via Serial
}
void readIRcode()
{
  if (irrecv.decode(&results)) {
    //Serial.println(results.value);  //Ausgabe via Serial
    switch (results.value)
    {
      case 16726725:
        sendi2cIRQ(i2cByte[0]);
        Serial.println("Heller");  //Ausgabe via Serial
        break;

      case 16759365:
        sendi2cIRQ(i2cByte[1]);
        Serial.println("Dunkler");  //Ausgabe via Serial
        break;

      case 16745085:
        sendi2cIRQ(i2cByte[2]);
        Serial.println("RechtsPfeil");  //Ausgabe via Serial
        break;

      case 16712445:
        Serial.println("An-Aus");  //Ausgabe via Serial
        sendi2cIRQ(i2cByte[3]);
        break;
        // und noch viele Tasten mehr....
    }
    irrecv.resume();                    // Nächster....
  }
}

void sendi2cIRQ(byte x)                 // IR-Signal wurde dekodiert, den Interrupt auslösen - dann soll die Masterabfrage ausgelöst werden. 
{
  Serial.println("Interrupt PIN wurde ausgelöst");  //Ausgabe via Serial

  digitalWrite(IRQ_PIN, LOW);
  delay(10);
  digitalWrite(IRQ_PIN, HIGH);
  sendByte = x;  //ich möchte das Byte per I2C senden
  Serial.print(x);  //Ausgabe via Serial
}

Das sind die für mich relevanten Debuggingmeldungen , wenn ich die Fernbedienung verwende