Probleme beim Nutzen des Arduinos ohne die Standartumgebung

Hallo,
ich habe mir in den letzten Tagen einen RGB LED controler zusammengebastelt, welchen man über IR ansteuern kann, und der auch wunderbar funktioniert.
Nun habe ich den Arduino auf eine Lochrasterplatine verpflanzt (natürlich mit quartz und allem) und anscheinend funktoiniert auch alles. Ich kann rot, grün, blau und weiss anwählen. Die Strobe funktion funktioniert, und ich kann auch die Zeit zwischen den einzelnen “strobes” verändern.
Nur wenn ich den Fader oder die “Mix” funktion nutzen möchte, resettet der Arduino sich selbst.
Ich habe absolut keinerleit erklärung dafür, da schliesslich exakt die gleichen Pins benutzt werden.
Anbei ist der Code, sollte er irgendetwas bringen.
Jegliche vermutungen wären sehr hilfreich :smiley:
vielen dank schonmal
max

/*
 * IRtraffic - control a walk / don't walk sign.
 *
 * An IR detector/demodulator must be connected to the input 11.
 * Relays must be connected to outputs 3 and 4.
 *
 * This uses the IRremote library: http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
 * Copyright 2010 Ken Shirriff
 * http://arcfn.com
 */


// Program variables
int redVal   = 255; // Variables to store the values to send to the pins
int greenVal = 0;   // Initial values are all off
int blueVal  = 0;


#include <IRremote.h>

#define RECV_PIN 11


#if 0
#define OFF_CODE 0xFFF807 // Stop on Sony DVD remote
#define ON_CODE 0xFFB04F // 1 on Sony DVD remote
#define RED_CODE 0xFF9867
#define GREEN_CODE 0xFFD827
#define BLUE_CODE 0xFF8877// 1 on Sony DVD remote
#define WHITE_CODE 0xFFA857
#define STROBE_CODE 0xFF00FF
#define FADE_CODE 0xFF58A7
#define UP_CODE 0xFF906F
#define DOWN_CODE 0xFFB847
#define MIX_CODE 0xFF30CF
#define REDUP_CODE 0xFF50AF
#define REDDOWN_CODE 0xFF38C7
#define GREENUP_CODE 0xFF7887
#define GREENDOWN_CODE 0xFF28D7
#define BLUENUP_CODE 0xFF708F
#define BLUEDOWN_CODE 0xFFF00F
#else

#define OFF_CODE 0xFFF807
#define ON_CODE 0xFFB04F
#define RED_CODE 0xFF9867
#define GREEN_CODE 0xFFD827
#define BLUE_CODE 0xFF8877
#define WHITE_CODE 0xFFA857
#define STROBE_CODE 0xFF00FF
#define FADE_CODE 0xFF58A7
#define UP_CODE 0xFF906F
#define DOWN_CODE 0xFFB847
#define MIX_CODE 0xFF30CF
#define REDUP_CODE 0xFF50AF
#define REDDOWN_CODE 0xFF38C7
#define GREENUP_CODE 0xFF7887
#define GREENDOWN_CODE 0xFF28D7
#define BLUENUP_CODE 0xFF708F
#define BLUEDOWN_CODE 0xFFF00F
#endif

#include "WProgram.h"
int modus=0;
int moduson=0;
long previousStrobe = 0;
long strobeinterval = 20;  
long previousFade = 0;
long fadeinterval = 50;  
int ledState = LOW;   
int redmix =170;
int bluemix=170;
int greenmix=170;
IRrecv irrecv(RECV_PIN);
decode_results results;
int phase =1;


void setup()
{

  pinMode(6, OUTPUT); //red
  pinMode(9, OUTPUT);  //green
  pinMode(10, OUTPUT);  //blue
  irrecv.enableIRIn(); // Start the receiver
}


void loop() {
  // Process the IR input, if any
  if (irrecv.decode(&results)) {

    if (results.value == OFF_CODE) {
      moduson=0;
    } 
    else if (results.value == ON_CODE) {
      moduson=1;
    } 

    else if (results.value == RED_CODE) {
      modus=0;
    } 
    else if (results.value == GREEN_CODE) {
      modus=1;
    } 
    else if (results.value == BLUE_CODE) {
      modus=2;
    } 

    else if (results.value == WHITE_CODE) {
      modus=3;
    } 

    else if (results.value == STROBE_CODE) {
      modus=4;
    } 

    else if (results.value == FADE_CODE) {
      modus=5;
    } 

    else if (results.value == MIX_CODE) {
      modus=6;
    } 


    else if (results.value == UP_CODE) {
      if(modus==4)
      {
        strobeinterval=strobeinterval+5;
      }
      if(modus==5)
      {
        fadeinterval=fadeinterval+5;
      }
    } 

    else if (results.value == DOWN_CODE) {
      if(modus==4)
      {
        strobeinterval=strobeinterval-5;
      }

      if(modus==5)
      {
        if(fadeinterval>5)
        {
          fadeinterval=fadeinterval-5;
        }
      }
    } 

    else if (results.value == REDUP_CODE) {
      if(redmix+15<=255)
      {
        redmix=redmix+15;
      }
      else
      {
        redmix=255;
      } 
    }

    else if (results.value == REDDOWN_CODE) {
      if(redmix-15>=0)
      {
        redmix=redmix-15;
      } 
      else
      {
        redmix=0;
      }
    }

    else if (results.value == GREENUP_CODE) {
      if(greenmix+15<=255)
      {
        greenmix=greenmix+15;
      }
      else
      {
        greenmix=255;
      } 
    }

    else if (results.value == GREENDOWN_CODE) {
      if(greenmix-15>=0)
      {
        greenmix=greenmix-15;
      } 
      else
      {
        greenmix=0;
      }
    }

    else if (results.value == BLUENUP_CODE) {
      if(bluemix+15<=255)
      {
        bluemix=bluemix+15;
      }
      else
      {
        bluemix=255;
      } 
    }

    else if (results.value == BLUEDOWN_CODE) {
      if(bluemix-15>=0)
      {
        bluemix=bluemix-15;
      } 
      else
      {
        bluemix=0;
      }
    }

    else {
    }
    irrecv.resume(); // Resume decoding (necessary!)
  }


  if(moduson==0)
  {
    digitalWrite(6, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
  }

  if(modus==0 && moduson==1)
  {
    digitalWrite(6, HIGH);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
  }

  if(modus==1 && moduson==1)
  {
    digitalWrite(6, LOW);
    digitalWrite(9, HIGH);
    digitalWrite(10, LOW);
  }

  if(modus==2 && moduson==1)
  {
    digitalWrite(6, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, HIGH);
  }

  if(modus==3 && moduson==1)
  {
    digitalWrite(6, HIGH);
    digitalWrite(9, HIGH);
    digitalWrite(10, HIGH);
  }
  if(modus==4 && moduson==1)
  {
    if(millis() - previousStrobe > strobeinterval) {
      if (ledState == LOW)
      {
        digitalWrite(6, HIGH);
        digitalWrite(9, HIGH);
        digitalWrite(10, HIGH);
        ledState = HIGH;
      }
      else{
        digitalWrite(6, LOW);
        digitalWrite(9, LOW);
        digitalWrite(10, LOW);
        ledState = LOW; }
      previousStrobe=millis();
    }
  }

  if(modus==5 && moduson==1)
  {
    if(millis() - previousFade > fadeinterval) {

      if(phase==1)
      {
        redVal=redVal-1;
        greenVal=greenVal+1;
        if(redVal==0)
        {
          phase=2;
        }
      }

      if(phase==2)
      {
        greenVal=greenVal-1;
        blueVal=blueVal+1;
        if(greenVal==0)
        {
          phase=3;
        }
      }

      if(phase==3)
      {
        blueVal=blueVal-1;

        redVal=redVal+1;
        if(blueVal==0)
        {
          phase=1;
        }
      }
      // we do "255-redVal" instead of just "redVal" because the
      // LEDs are hooked up to +5V instead of Gnd
      analogWrite(6,redVal);   // Write current values to LED pins
      analogWrite(9,greenVal);
      analogWrite(10,blueVal);  
      previousFade=millis();

    }
  }

  if(modus==6 && moduson==1)
  {
    analogWrite(6, redmix);
    analogWrite(10, bluemix);
    analogWrite(9, greenmix);
  }
}

hierbei wird im ersten teil das Signal empfangen und ausgewertet, und dementsprechent modus auf den gewünschten wert gesetzt und im 2. Teil wird je nach Modus die RGB angesteuert.

Wenn es auf dem Steckbrett funktioniert hat und jetzt nicht mehr, dann wäre der Schaltplan viel interessanter als der Code.

Aja, noch nen Tipp, wenn man den Code in [ code] [ /code] setzt ohne Leerzeichen, dann ist das gleich alles viel übersichtlicher.

Es könnte auch ein Problem mit der Spannungsversorgung sein. Weiß als Lichtfarbe funktioniert zuverlässig? Grüße Uwe

verzeihung, dass ich erst jetz antworte, aber ich hatte vorher keine zeit. Das mit dem Code posten wusste ich nicht aber für die Zukunft sicher hilfreich :P Also ich habe einen IR Empfänger an pin 11, Rot an bin 6, Grün an pin 9 Blau an pin 10. Ich habe mittlerweile auch rausgefunden, dass das Problem an der roten Ader liegt. Solang ich nur digitalWrite nutze funktioniert alles wunderbar. Sobald ich den Fader oder den Farbmixer einschalte, welche analogWrite nutzen, stürzt der Arduino ab und resetet. Vllt hilft das ja bei der Lösung. Als stromversorgung habe ich einfach ein USB Kabel aufgeschnitten und Power und Ground an die jeweiligen Pole auf der Platine gelötet. Das ganze hängt an einem 1A USB ladegerät. Es hat vorher auch schon funktioniert, aber sobald ich den Arduino so auf der Lochrasterplatine verlötet habe, haben die Probleme angefangen. Es kann ja eingentlich nichts Softwaremässiges sein, aber auch die Hardware, bis auf PWM funktioniert. Ich habe auch schon Pin 5 und 3 ausprobiert. Langsam verzweifel ich doch ein klein wenig.

Dann poste hier doch mal deinen Schaltplan, Luftlöcher raten bringt nicht viel.

Welche Vorwiderstände haben die LEDs? und bitte einen Schaltplan. Grüße Uwe