Deckenventilator schalten: Arduino funktioniert, ATtiny85 nicht

Hallo,

da mein Deckenventilator eine permanente Spannungsversorgung benötigt, musste ich den Lichtschalter für das Deckenlicht überbrücken. Das Raumlicht lässt sich jetzt mit der Fernbedienung des Ventilators schalten.
Jetzt möchte ich den ursprünglichen Lichtschalter durch einen (Wand-)Taster ersetzen, der das entsprechende Signal zum Ventilator sendet und das Licht an/ausschaltet.

Die Folgende Schaltung liest das Signal der Fernbedienung aus:
http://arduinobasics.blogspot.de/2014/07/433-mhz-rf-module-with-arduino-tutorial_30.html

Mit diesem Signal kann ich gemäß der anderen Kapiteln im Tutorial das passende Signal erzeugen und per Arduino senden. Das funktioniert soweit problemlos.

Da in der Wand hinter dem Taster nur wenig Platz ist, möchte ich den Arduino durch den deutlich kleineren und sparsameren Attiny85 mit Batteriebetrieb ersetzen. Das funktioniert bisher leider nicht. Auf dem Arduino läuft der Code wie gesagt ohne Probleme. Den Attiny85 kann ich beschreiben, aber das Licht bleibt beim Druck auf den Taster aus. Kann das an den unterschiedlichen Taktraten liegen? Übersehe ich etwas Grundlegendes?

Vielen Dank schonmal!

Kann alles sein. Aber wenn du nicht mehr Daten lieferst bringt das ganze nichts! Wo ist der Schaltplan, wo ist der Sketch ... ?

Und ebenso wichtig, welchen Empfänger (433 MHz) setzt du ein ?
Link posten.
Hast du auf dem ATtiny einen Bootloader drauf ?
Welche Taktfrequenz hast du geflasht ?
Sketch und Schaltung wurde ja schon angefragt.

Mein Empfänger ist genau der aus dem Tutorial: FS1000A

Einen Bootloader hab ich auf dem ATtiny85 drauf. Geflasht hab ich ihn einmal mit 1MHz, einmal mit 8MHz, jeweils ohne Erfolg.
Das Flashen selbst scheint zu funktionieren, immerhin kann das Blink-Beispiel auf dem ATtiny85 ausführen.

Schaltplan im Anhang, hier der Sketch:

#define rfTransmitPin 2   //AttinyPin 2 = leg 7
 #define buttonPin 4      //AttinyPin 4 = leg 3
 #define ledPin 3         //AttinyPin 3 = leg 2
 
 const int codeSize = 13;      //The size of the code to transmit
 int codeToTransmit[codeSize]; //The array used to hold the RF code
 int lightSWITCH[]={2,2,2,2,2,2,4,3,3,3,3,1,6}; //The RF code that will switch the light ON/OFF
 int codeToggler = 0;  //Used to switch between turning the light ON and OFF
 int timeDelay=210;      // The variable used to calibrate the RF signal lengths.
 int buttonState = 0;
 int tasterGedrueckt = 0;          // button was pushed?
 int entprellZeit = 80;           // time for debounce

unsigned long tasterZeit = 0;     // time, when button is pushed
 
 
 void setup(){
  // Serial.begin(9600);        // Turn the Serial Protocol ON
   pinMode(rfTransmitPin, OUTPUT);   //Transmit pin is an output  
   pinMode(ledPin, OUTPUT);          
   pinMode(buttonPin, INPUT);
  
 //LED initialisation sequence - gives us some time to get ready
  digitalWrite(ledPin, HIGH); 
  delay(3000);
  digitalWrite(ledPin, LOW); 
  delay(1000);
 }

  void loop(){
      // read the state of the pushbutton value:
      buttonState = digitalRead(buttonPin);

      // check if the pushbutton is pressed.
      // if it is, the buttonState is HIGH:
     if (buttonState == HIGH) 
        {
         tasterZeit = millis();      // actual tasterZeit
         tasterGedrueckt = 1;        // button was pushed
        } 

      // if button was pushed and time passed ...
     if ((millis() - tasterZeit > entprellZeit) && tasterGedrueckt == 1)
        {
         transmitCode();  // transmit the code to RF receiver on the Fan/Light
         tasterGedrueckt = 0;      // reset button
        }

    delay(50); 
  }
  
  /*-----------------------------------------------------------------
    transmitCode(): Used to transmit the signal to the RF receiver on
                    the fan/light. There are 6 different HIGH-LOW signal combinations. 
                    
                    SH = short high   or  LH = long high  
                                     PLUS
         SL = short low    or    LL = long low    or    VLL = very long low

coding:             ShortLow        LongLow     VeryLongLow
        ShortHigh       1             3             5
         LongHigh       2             4             6
         
                    
  -------------------------------------------------------------------*/
   void transmitCode(){
    // The LED will be turned on to create a visual signal transmission indicator.
    // digitalWrite(ledPin, HIGH);
   
   //initialise the variables 
    int highLength = 0;
    int lowLength = 0;
    
    //The signal is transmitted 12 times in succession - this may vary with your remote.       
    for(int j = 0; j<12; j++){
      for(int i = 0; i<codeSize; i++){ 
        switch(lightSWITCH[i]){
          case 1: // SH+SL
            highLength=2;
            lowLength=2;
          break;
          case 2: // LH+SL
            highLength=6;
            lowLength=2;
          break;
          case 3: // SH+LL
            highLength=2;
            lowLength=6;
          break;
          case 4: // LH+LL
            highLength=6;
            lowLength=6;
          break;
          case 5: // SH+VLL
            highLength=2;
            lowLength=200;
          break;
          case 6: // LH+VLL
            highLength=6;
            lowLength=200;
           break;
        }
           
         /* Transmit a HIGH signal - the duration of transmission will be determined 
            by the highLength and timeDelay variables */
         digitalWrite(rfTransmitPin, HIGH);     
         delayMicroseconds(highLength*timeDelay); 
         
         /* Transmit a LOW signal - the duration of transmission will be determined 
            by the lowLength and timeDelay variables */
         digitalWrite(rfTransmitPin,LOW);     
         delayMicroseconds(lowLength*timeDelay);  
      }
    }
    //Turn the LED off after the code has been transmitted.
    digitalWrite(ledPin, LOW); 
 }

Das sieht ja nach einem speziellen Code aus. Evtl. ist das das Problem.
Hast du schon mal versucht, den Code mit der RCSwitch-Library zu decodieren.
Die funktioniert auf dem ATtiny85. Wenn das funktioniert,könntest du es damit lösen.