Funktionen du är ute efter är att vid ON så ska tejpen tändas och börja dimma upp och ner. Trycker du ON igen så ska den stanna där den är i fade:ningen men fortsätta vara på. Trycker du ON igen så ska den återuppta fade:ningen.
När du slutligen trycker OFF så ska den släckas?
Om det stämmer så hade jag missat det där med "pausen".
Vad jag kan se så gör det inget att fade-funktionen ligger i loop:en. Denna funktionen kommer rullas om och om igen fram till du trycker på ON/OFF, då triggas ett interrupt som pausar fade-funktionen, utför processCode() och sedan återgår där den var i fade-funktionen/loopen.
Måste klura lite mer men en sak vi kan göra (om ingen annan ser problemet) är att ladda ner "NEXA-koden" igen om verkligen bekräfta att den dimmar LED:en upp och ner med nedan modiferad kod.
Har inte provkört eller kompilerat koden men säg till om du får något fel du inte klurar ut direkt.
Kod: Markera allt
#include <NewRemoteReceiver.h>
boolean codeLearned = false;
unsigned long learnedAddress;
unsigned short learnedUnit;
int receivedCmd;
const int ledPin = 9;       // the pin that the LED is attached to
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by
void setup() {
  // LED-pin as output
  pinMode(9, OUTPUT);
  // Init a new receiver on interrupt pin 0, minimal 2 identical repeats, and callback set to processCode.
  NewRemoteReceiver::init(0, 2, processCode);
}
void loop() {
  // Blink led until a code has been learned
  if (!codeLearned) {
    digitalWrite(13, HIGH);
    delay(500);
    digitalWrite(13, LOW);
    delay(500);
  }
  while(receivedCmd){
    analogWrite(ledPin, brightness);
    // change the brightness for next time through the loop:
    brightness = brightness + fadeAmount;
    // reverse the direction of the fading at the ends of the fade:
    if (brightness <= 0 || brightness >= 255) {
      fadeAmount = -fadeAmount;
    }
    // wait for 30 milliseconds to see the dimming effect
    delay(30);
  }
  brightness = 0;
  analogWrite(ledPin, brightness);
}
// Callback function is called only when a valid code is received.
void processCode(NewRemoteCode receivedCode) {
  // A code has been received.
  // Do we already know the code?
  if (!codeLearned) {
    // No! Let's learn the received code.
    learnedAddress = receivedCode.address;
    learnedUnit = receivedCode.unit;
    codeLearned = true;   
  } else {
    // Yes!   
    // Is the received code identical to the learned code?
    if (receivedCode.address == learnedAddress && receivedCode.unit == learnedUnit) {
      // Yes!     
      // switchType == 1 means on, switchType == 0 means off.
      if (receivedCode.switchType == 1) {
        digitalWrite(13, HIGH);
        receivedCmd = 1;  
      } else if (receivedCode.switchType == 0) {        
        digitalWrite(13, LOW);                          //<<<<< Här är det FRÅN
        receivedCmd = 0;
      }
    }
  }
} 
				



