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
serieller Monitor friert ein oder Programm hängt sich auf
17.06.2015, 18:55
Beitrag #1
serieller Monitor friert ein oder Programm hängt sich auf
Hallo zusammen,

ich habe folgenden Sketch erstellt, der an und für sich auch läuft... allerdings bleibt der serielle Monitor nach Ablauf der Zeit "hold1" stehen, bzw. bleibt das komplette Sketch hängen... Ich kann den Fehler nicht eingrenzen... steh da grad wie der Ochs vorm Tor...

Das ganze läuft auf einem Mega mit einem NRF24...
Code:
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
#include <Time.h>  
#include <TimeAlarms.h>
#include <NewPing.h>

// starte die Funkverbindung

RF24 radio(48,49);
RF24Network network(radio);
const uint16_t this_node = 0;
const uint16_t other_node = 1;
struct payload_t
{
  unsigned long ms;
  unsigned long counter;
};

// speicher die empfangene Szene

int Scene = 1;

// definiere 2 PIR Sensoren

const int PIR1 = 21;  
const int PIR2 = 22;
int sensorState1 = 0;
int sensorState2 = 0;

// definiere 2 Ultraschallsensoren (nur für die Leseleuchten relevant (?)

#define TRIGGER_PIN1  31  
#define ECHO_PIN1     32
#define MAX_DISTANCE1 320
NewPing sonar1(TRIGGER_PIN1, ECHO_PIN1, MAX_DISTANCE1);

#define TRIGGER_PIN2  33  
#define ECHO_PIN2     34
#define MAX_DISTANCE2 320
NewPing sonar2(TRIGGER_PIN2, ECHO_PIN2, MAX_DISTANCE2);

/* definiere die RGB Kanäle
Kanal 1 = Pflanzen
Kanal 2 = hinten (beim Sofa)
Kanal 3 = vorn (links, falls rechts eigener Kanal gewünscht ist)
Kanal 4 = vorn rechts */

int blau1 = 2;
int rot1 = 3;
int gruen1 = 4;
int br1blau = 15;
int br1rot = 175;
int br1gruen = 175;
int br1blauneu = 0;
int br1rotneu = 0;
int br1gruenneu = 0;
int blau2 = 5;
int rot2 = 6;
int gruen2 = 7;
int br2blau = 15;
int br2rot = 175;
int br2gruen = 175;
int br2blauneu = 0;
int br2rotneu = 0;
int br2gruenneu = 0;
int blau3 = 8;
int rot3 = 9;
int gruen3 = 10;
int br3blau = 15;
int br3rot = 175;
int br3gruen = 175;
int br3blauneu = 0;
int br3rotneu = 0;
int br3gruenneu = 0;
int blau4 = 11;
int rot4 = 12;
int gruen4 = 13;
int br4blau = 15;
int br4rot = 175;
int br4gruen = 175;
int br4blauneu = 0;
int br4rotneu = 0;
int br4gruenneu = 0;

int fadeAmount = 1;
int stepuprot = 15; //ms pro Helligkeitswert heller
int stepdownrot = 20; //ms pro Helligkeitswert dunkler
int stepupblau = 15; //ms pro Helligkeitswert heller
int stepdownblau = 20; //ms pro Helligkeitswert dunkler
int stepupgruen = 15; //ms pro Helligkeitswert heller
int stepdowngruen = 20; //ms pro Helligkeitswert dunkler
long hold1 = 90000; //ms Haltezeit
long hold2 = 9000; //ms Haltezeit
long hold3 = 9000; //ms Haltezeit
long hold4 = 9000; //ms Haltezeit

void setup(void)
{
  Serial.begin(57600);
  Serial.println("Empfange Szenario");

  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 90, /*node address*/ this_node);
  
  pinMode(PIR1, INPUT);  
  pinMode(PIR2, INPUT);
  
  pinMode(blau1, OUTPUT);
  pinMode(rot1, OUTPUT);
  pinMode(gruen1, OUTPUT);
  pinMode(blau2, OUTPUT);
  pinMode(rot2, OUTPUT);
  pinMode(gruen2, OUTPUT);
  pinMode(blau3, OUTPUT);
  pinMode(rot3, OUTPUT);
  pinMode(gruen3, OUTPUT);
  pinMode(blau4, OUTPUT);
  pinMode(rot4, OUTPUT);
  pinMode(gruen4, OUTPUT);
}

void loop(void)
{
static unsigned long lastHigh1 = 0;  //  <<< INSERT
static unsigned long lastHigh2 = 0;  //  <<< INSERT
static int lastSensorState1 = LOW;  // <<< INSERT
static int lastSensorState2 = LOW;  // <<< INSERT

analogWrite(blau1, br1blauneu);
analogWrite(rot1, br1rotneu);
analogWrite(gruen1, br1gruenneu);
analogWrite(blau2, br2blauneu);
analogWrite(rot2, br2rotneu);
analogWrite(gruen2, br2gruenneu);
analogWrite(blau3, br3blauneu);
analogWrite(rot3, br3rotneu);
analogWrite(gruen3, br3gruenneu);
analogWrite(blau4, br4blauneu);
analogWrite(rot4, br4rotneu);
analogWrite(gruen4, br4gruenneu);

if (br1blauneu < br1blau)
   {
    br1blauneu + br1blauneu++;
    delay(stepupblau);
   }  
else if (br1blauneu > br1blau)
   {
    br1blauneu-- ;
   delay(stepdownblau);
   }
else
   {
     br1blauneu = br1blau;
   }

if (br1rotneu < br1rot)
   {
    br1rotneu++ ;
    delay(stepuprot);
   }  
else if (br1rotneu > br1rot)
   {
    br1rotneu-- ;
   delay(stepdownrot);
   }
else
   {
     br1rotneu = br1rot;
   }

if (br1gruenneu < br1gruen)
   {
    br1gruenneu++ ;
    delay(stepupgruen);
   }  
else if (br1gruenneu > br1gruen)
   {
    br1gruenneu-- ;
   delay(stepdowngruen);
   }
else
   {
     br1gruenneu = br1gruen;
   }
  
  
   if (br2blauneu < br2blau)
   {
    br2blauneu++ ;
    delay(stepupblau);
   }  
else if (br2blauneu > br2blau)
   {
    br2blauneu-- ;
   delay(stepdownblau);
   }
else
   {
     br2blauneu = br2blau;
   }

if (br2rotneu < br2rot)
   {
    br2rotneu++ ;
    delay(stepuprot);
   }  
else if (br2rotneu > br2rot)
   {
    br2rotneu-- ;
   delay(stepdownrot);
   }
else
   {
     br2rotneu = br2rot;
   }

if (br2gruenneu < br2gruen)
   {
    br2gruenneu++ ;
    delay(stepupgruen);
   }  
else if (br2gruenneu > br2gruen)
   {
    br2gruenneu-- ;
   delay(stepdowngruen);
   }
else
   {
     br2gruenneu = br2gruen;
   }

if (br3blauneu < br3blau)
   {
    br3blauneu++ ;
    delay(stepupblau);
   }  
else if (br3blauneu > br3blau)
   {
    br3blauneu-- ;
   delay(stepdownblau);
   }
else
   {
     br3blauneu = br3blau;
   }

if (br3rotneu < br3rot)
   {
    br3rotneu++ ;
    delay(stepuprot);
   }  
else if (br3rotneu > br3rot)
   {
    br3rotneu-- ;
   delay(stepdownrot);
   }
else
   {
     br3rotneu = br3rot;
   }

if (br3gruenneu < br3gruen)
   {
    br3gruenneu++ ;
    delay(stepupgruen);
   }  
else if (br3gruenneu > br3gruen)
   {
    br3gruenneu-- ;
   delay(stepdowngruen);
   }
else
   {
     br3gruenneu = br3gruen;
   }

if (br4blauneu < br4blau)
   {
    br4blauneu++ ;
    delay(stepupblau);
   }  
else if (br4blauneu > br4blau)
   {
    br4blauneu-- ;
   delay(stepdownblau);
   }
else
   {
     br4blauneu = br4blau;
   }

if (br4rotneu < br4rot)
   {
    br4rotneu++ ;
    delay(stepuprot);
   }  
else if (br4rotneu > br4rot)
   {
    br4rotneu-- ;
   delay(stepdownrot);
   }
else
   {
     br4rotneu = br4rot;
   }

if (br4gruenneu < br4gruen)
   {
    br4gruenneu++ ;
    delay(stepupgruen);
   }  
else if (br4gruenneu > br4gruen)
   {
    br4gruenneu-- ;
   delay(stepdowngruen);
   }
else
   {
     br4gruenneu = br4gruen;
   }


Serial.print("Szene: ");
Serial.print(Scene);
Serial.print(" - PIR1: ");
Serial.print(sensorState1);
Serial.print(" - PIR2: ");
Serial.print(sensorState2);
Serial.print(" - Timer: ");
Serial.print(lastHigh1);
Serial.print(" - Kanal 1 b/r/g: ");
Serial.print(br1rotneu);
Serial.print("-");
Serial.print(br1blauneu);
Serial.print("-");
Serial.print(br1gruenneu);
Serial.print(" - Kanal 2 b/r/g: ");
Serial.print(br2rotneu);
Serial.print("-");
Serial.print(br2blauneu);
Serial.print("-");
Serial.print(br2gruenneu);
Serial.print(" - Kanal 3 b/r/g: ");
Serial.print(br3rotneu);
Serial.print("-");
Serial.print(br3blauneu);
Serial.print("-");
Serial.print(br3gruenneu);
Serial.print(" - Kanal 4 b/r/g: ");
Serial.print(br4rotneu);
Serial.print("-");
Serial.print(br4blauneu);
Serial.print("-");
Serial.println(br4gruenneu);


  network.update();

  while ( network.available() )
  {
    RF24NetworkHeader header;
    payload_t payload;
    network.read(header,&payload,sizeof(payload));
    Serial.print("Szenario- Vorgabe: ");
    Serial.println(payload.counter);
    Scene = payload.counter;
  }

sensorState1 = digitalRead(PIR1);
unsigned long now = millis();   // <<< INSERT

//  if (sensorState == LOW)   // <<< DELETE
if (sensorState1 == LOW && now - lastHigh1 > hold1)   // <<< INSERT
{
  Szene0();
}

if (sensorState1 == HIGH)
   lastHigh1 = now;     // <<< INSERT

if (sensorState1 == HIGH && lastSensorState1 == LOW)  // <<< INSERT
{

    switch (Scene)
    {
      case 0:
      Szene0();
         Serial.println("Start- Scene");
      break;
      
      case 1:
      Szene1();
         Serial.println("Scene 1");
      break;
      
      case 2:
      Szene2();
         Serial.println("Scene 2");
      break;
      
      case 3:
      Szene3();
         Serial.println("Scene 3");
      break;
      
      case 4:
      Szene4();
         Serial.println("Scene 4");
      break;
      
      case 5:
      Szene5();
         Serial.println("Scene 5");
      break;
      
      case 6:
      Szene6();
         Serial.println("Scene 6");
      break;
      
      case 7:
      Szene7();
         Serial.println("Scene 7");
      break;
      
      case 8:
      Szene8();
         Serial.println("Scene 8");
      break;
      
      case 9:
      Szene9();
         Serial.println("Scene 9");
      break;
      
      case 10:
      Szene10();
         Serial.println("Scene 10");
      break;
      
      case 11:
      Szene11();
         Serial.println("Scene 11");
      break;
      
      case 12:
      Szene12();
         Serial.println("Scene 12");
      break;
      
      case 13:
      Szene13();
         Serial.println("Scene 13");
      break;
      
      case 14:
      Szene14();
         Serial.println("Scene 14");
      break;
            
      case 15:
      Szene15();
         Serial.println("Scene 15");
      break;
      
      case 16:
      Szene16();
         Serial.println("Scene 16");
      break;
      
      case 17:
      Szene17();
         Serial.println("Scene 17");
      break;
      
      default:
         Serial.println("keine Scene erkannt");
        
    }
  }
lastSensorState1 = sensorState1;   // <<< INSERT
}

void Szene0()
{
  br1rot = 0;
  br1gruen = 0;
  br1blau = 0;
  br2rot = 0;
  br2gruen = 0;
  br2blau = 0;
  br3rot = 0;
  br3gruen = 0;
  br3blau = 0;
  br4rot = 0;
  br4gruen = 0;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 2000;
  hold2 = 2000;
  hold3 = 2000;
  hold4 = 2000;
}

void Szene1()
{
  //neutrales weiß: rot: 255; gruen: 40; blau: 2

  br1rot = 150;
  br1gruen = 130;
  br1blau = 0;
  br2rot = 150;
  br2gruen = 130;
  br2blau = 0;
  br3rot = 150;
  br3gruen = 130;
  br3blau = 0;
  br4rot = 110;
  br4gruen = 80;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 2000;
  hold2 = 2000;
  hold3 = 2000;
  hold4 = 2000;
}

void Szene2()
{
  br1rot = 155;
  br1gruen = 120;
  br1blau = 0;
  br2rot = 110;
  br2gruen = 90;
  br2blau = 0;
  br3rot = 70;
  br3gruen = 50;
  br3blau = 0;
  br4rot = 70;
  br4gruen = 50;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 2000;
  hold2 = 2000;
  hold3 = 2000;
  hold4 = 2000;
}

void Szene3()
{
  br1rot = 1;
  br1gruen = 1;
  br1blau = 0;
  br2rot = 1;
  br2gruen = 1;
  br2blau = 0;
  br3rot = 1;
  br3gruen = 1;
  br3blau = 0;
  br4rot = 1;
  br4gruen = 1;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 2000;
  hold2 = 2000;
  hold3 = 2000;
  hold4 = 2000;
}

void Szene4()
{
  br1rot = 1;
  br1gruen = 1;
  br1blau = 0;
  br2rot = 1;
  br2gruen = 1;
  br2blau = 0;
  br3rot = 1;
  br3gruen = 1;
  br3blau = 0;
  br4rot = 1;
  br4gruen = 1;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 2000;
  hold2 = 2000;
  hold3 = 2000;
  hold4 = 2000;
}

void Szene5()
{
  br1rot = 1;
  br1gruen = 1;
  br1blau = 0;
  br2rot = 1;
  br2gruen = 1;
  br2blau = 0;
  br3rot = 1;
  br3gruen = 1;
  br3blau = 0;
  br4rot = 1;
  br4gruen = 1;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 2000;
  hold2 = 2000;
  hold3 = 2000;
  hold4 = 2000;
}

void Szene6()
{
  br1rot = 180;
  br1gruen = 160;
  br1blau = 10;
  br2rot = 180;
  br2gruen = 160;
  br2blau = 10;
  br3rot = 180;
  br3gruen = 160;
  br3blau = 10;
  br4rot = 180;
  br4gruen = 160;
  br4blau = 10;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*200;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*170;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*145;
  hold1 = 200000;
  hold2 = 200000;
  hold3 = 200000;
}

void Szene7()
{
  br1rot = 220;
  br1gruen = 190;
  br1blau = 10;
  br2rot = 220;
  br2gruen = 190;
  br2blau = 10;
  br3rot = 220;
  br3gruen = 190;
  br3blau = 10;
  br4rot = 220;
  br4gruen = 190;
  br4blau = 10;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*200;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*170;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*145;
  hold1 = 200000;
  hold2 = 200000;
  hold3 = 200000;
}

void Szene8()
{
  br1rot = 180;
  br1gruen = 160;
  br1blau = 10;
  br2rot = 180;
  br2gruen = 160;
  br2blau = 10;
  br3rot = 180;
  br3gruen = 160;
  br3blau = 10;
  br4rot = 180;
  br4gruen = 160;
  br4blau = 10;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*200;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*170;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*145;
  hold1 = 200000;
  hold2 = 200000;
  hold3 = 200000;
}

void Szene9()
{
  br1rot = 180;
  br1gruen = 160;
  br1blau = 10;
  br2rot = 180;
  br2gruen = 160;
  br2blau = 10;
  br3rot = 180;
  br3gruen = 160;
  br3blau = 10;
  br4rot = 180;
  br4gruen = 160;
  br4blau = 10;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*200;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*170;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*145;
  hold1 = 200000;
  hold2 = 200000;
  hold3 = 200000;
  hold4 = 200000;
}

void Szene10()
{
  br1rot = 12;
  br1gruen = 7;
  br1blau = 0;
  br2rot = 12;
  br2gruen = 7;
  br2blau = 0;
  br3rot = 12;
  br3gruen = 7;
  br3blau = 0;
  br4rot = 12;
  br4gruen = 7;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*80;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*70;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 15000;
  hold2 = 15000;
  hold3 = 15000;
  hold4 = 15000;
}

void Szene11()
{
  br1rot = 60;
  br1gruen = 40;
  br1blau = 0;
  br2rot = 155;
  br2gruen = 120;
  br2blau = 0;
  br3rot = 120;
  br3gruen = 90;
  br3blau = 0;
  br4rot = 90;
  br4gruen = 60;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 12000;
  hold2 = 12000;
  hold3 = 12000;
  hold4 = 12000;
}

void Szene12()
{
  br1rot = 155;
  br1gruen = 110;
  br1blau = 0;
  br2rot = 120;
  br2gruen = 80;
  br2blau = 0;
  br3rot = 90;
  br3gruen = 60;
  br3blau = 0;
  br4rot = 60;
  br4gruen = 40;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 12000;
  hold2 = 12000;
  hold3 = 12000;
  hold4 = 12000;
}

void Szene13()
{
  br1rot = 55;
  br1gruen = 30;
  br1blau = 0;
  br2rot = 55;
  br2gruen = 30;
  br2blau = 0;
  br3rot = 55;
  br3gruen = 30;
  br3blau = 0;
  br4rot = 55;
  br4gruen = 30;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 12000;
  hold2 = 12000;
  hold3 = 12000;
  hold4 = 12000;
}

void Szene14()
{
  br1rot = 100;
  br1gruen = 0;
  br1blau = 100;
  br2rot = 100;
  br2gruen = 0;
  br2blau = 100;
  br3rot = 100;
  br3gruen = 0;
  br3blau = 100;
  br4rot = 100;
  br4gruen = 0;
  br4blau = 100;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 15000;
  hold2 = 15000;
  hold3 = 15000;
  hold4 = 15000;
}

void Szene15()
{
  br1rot = 0;
  br1gruen = 120;
  br1blau = 0;
  br2rot = 0;
  br2gruen = 120;
  br2blau = 0;
  br3rot = 0;
  br3gruen = 120;
  br3blau = 0;
  br4rot = 0;
  br4gruen = 120;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 20000;
  hold2 = 20000;
  hold3 = 20000;
  hold4 = 20000;
}

void Szene16()
{
  br1rot = 120;
  br1gruen = 0;
  br1blau = 0;
  br2rot = 120;
  br2gruen = 0;
  br2blau = 0;
  br3rot = 120;
  br3gruen = 0;
  br3blau = 0;
  br4rot = 120;
  br4gruen = 0;
  br4blau = 0;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 20000;
  hold2 = 20000;
  hold3 = 20000;
  hold4 = 20000;
}

void Szene17()
{
  br1rot = 0;
  br1gruen = 0;
  br1blau = 120;
  br2rot = 0;
  br2gruen = 0;
  br2blau = 120;
  br3rot = 0;
  br3gruen = 0;
  br3blau = 120;
  br4rot = 0;
  br4gruen = 0;
  br4blau = 120;
  stepuprot = (255/br1rot)*10;
  stepdownrot = (255/br1rot)*50;
  stepupgruen = (255/br1gruen)*11;
  stepdowngruen = (255/br1gruen)*48;
  stepupblau = (255/br1blau)*12;
  stepdownblau = (255/br1blau)*45;
  hold1 = 20000;
  hold2 = 20000;
  hold3 = 20000;
  hold4 = 20000;
}

Ich wäre echt dankbar, wenn mir hier jemand einen kleinen Stubs in die richtige Richtung geben kann....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.06.2015, 07:00
Beitrag #2
RE: serieller Monitor friert ein oder Programm hängt sich auf
Mal eine generelle Frage zu meiner Programmstruktur... Vielleicht bin ich da zu wenig experimentierfreudig... aber könnte ich den Aufbau generell wie folgt machen?
Code:
- initialisieren der Libaries

- void steup()

- void loop()
  - Abfrage der Sensoren
  - Abfrage der Funkverbindung
    - if Schleife um bei bestimmten Randbedingungen:
      - void (fade out) aufrufen
      else
       - case Schleife
          - void (Zustand 1)
          - void (Zustand 2)
            ....
       - Ende case Schlefe
    - Ende if Schleife
- Ende void loop()

void Zustand 1()
   - Setze LED-Werte und Zeiten
   - void (fade in)
ende

void Zustand 2()
   - Setze LED-Werte und Zeiten
   - void (fade in)
ende

void (fade in)
   - Zähle Helligkeitswerte bis zum Zielwert
      -  if Schleife  (Zielwert erreicht)
          void (halten)
      - ende if Schleife
ende

void halten()
   - halte Helligkeit entsprechend vorgegebener Zeit
     - if Schleife (Zeit abgelaufen?)
        void (fade out)
    - ende if Schleife
ende

void fade out ()
   - Zähle Helligkeitswert bis auf 0
ende

also das nur mal als ganz prinzipiellen Aufbau...

Ich bin mir nicht sicher, ob das hoch und runterzählen, was ja mehrere Durchläufe diese Programmanschnittes erfordert aus der void loop ausgelagert werden kann...
Oder muss das immer in der loop bleiben???
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.06.2015, 19:34
Beitrag #3
RE: serieller Monitor friert ein oder Programm hängt sich auf
(18.06.2015 07:00)MaHaI976 schrieb:  Mal eine generelle Frage zu meiner Programmstruktur... Vielleicht bin ich da zu wenig experimentierfreudig... aber könnte ich den Aufbau generell wie folgt machen?
Code:
- initialisieren der Libaries

- void steup()

- void loop()
  - Abfrage der Sensoren
  - Abfrage der Funkverbindung
    - if Schleife um bei bestimmten Randbedingungen:
      - void (fade out) aufrufen
      else
       - case Schleife
          - void (Zustand 1)
          - void (Zustand 2)
            ....
       - Ende case Schlefe
    - Ende if Schleife
- Ende void loop()

void Zustand 1()
   - Setze LED-Werte und Zeiten
   - void (fade in)
ende

void Zustand 2()
   - Setze LED-Werte und Zeiten
   - void (fade in)
ende

void (fade in)
   - Zähle Helligkeitswerte bis zum Zielwert
      -  if Schleife  (Zielwert erreicht)
          void (halten)
      - ende if Schleife
ende

void halten()
   - halte Helligkeit entsprechend vorgegebener Zeit
     - if Schleife (Zeit abgelaufen?)
        void (fade out)
    - ende if Schleife
ende

void fade out ()
   - Zähle Helligkeitswert bis auf 0
ende

also das nur mal als ganz prinzipiellen Aufbau...

Ich bin mir nicht sicher, ob das hoch und runterzählen, was ja mehrere Durchläufe diese Programmanschnittes erfordert aus der void loop ausgelagert werden kann...
Oder muss das immer in der loop bleiben???

Hi,

nur mal so einen Tip am Rande. Ich habe auch eine ganze Weile mit dem
Arduino-C "gekämpft". Ich kann programmieren und weiß, daß man eine ganze Menge machen kann. Es ist oft hilfreich, ein variables Debugging mit einzubauen, damit man sehen kann, wann was gemacht wird. Es hilft einem auch zu verstehen, wie alles zusammen hängt und um Deine Frage zu beantworten -JA-, das Auslagern gleichartiger Abläufe in eine Funktion oder Subroutine macht auf jeden Fall Sinn, sonst schreibt man sich die Finger wund oder der Code wird zu groß oder/und unübersichtlich.

Variables Debugging heißt : Per Code ein und auszuschalten, wenn man es braucht. Vielleicht sogar mit einem Tastendruck. Verbraucht ein bischen Speicherplatz, erspart einem aber eine Menge graue Haare.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2015, 13:45
Beitrag #4
RE: serieller Monitor friert ein oder Programm hängt sich auf
Ich habe an einigen Stellen immer ein paar seriell prints eingefügt, um sehen zu können was läuft...

bisher bin ich auch gut mit meinen ganzen Steuerungen zurecht gekommen- nur nehmen die langsam Dimmensionen an, wo ich klarer Strukturieren muss.... ;-)

Ich werde mal nach dieser Struktur ein Sketch erstellen und testen... bin mal gespannt... :-D
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  mit if aus do-while oder while Schleife aussteigen Nafetz 6 118 05.12.2016 21:41
Letzter Beitrag: Pit
  Fehler in meinem Programm Franz54 7 162 01.12.2016 23:58
Letzter Beitrag: hotsystems
  Arduino lässt sich nicht installieren bergfrei 4 147 20.11.2016 18:34
Letzter Beitrag: bergfrei
  Ausgabe Serial Monitor zu viele Byt`s Hannes 0 98 12.11.2016 20:29
Letzter Beitrag: Hannes
  Welche IDE? Arduini.cc oder .org Bilbo 1 209 17.10.2016 21:03
Letzter Beitrag: ardu_arne
  Ardublock übertragt nicht an IDE oder UNO R3 tobi83 5 353 16.10.2016 14:07
Letzter Beitrag: Pit
  Arduino hängt beim Upload deranda 11 505 12.08.2016 21:27
Letzter Beitrag: hotsystems
  Arduino lässt sich nicht mehr beschreiben Maxi290997 15 984 07.08.2016 11:40
Letzter Beitrag: Maxi290997
  Serial Monitor ASCII 1 schreiben BennIY 11 580 01.08.2016 16:42
Letzter Beitrag: Mathias
  Programmspeicher auf i2c_EEPROM oder SD_Card erweitern? avoid 11 348 11.07.2016 15:46
Letzter Beitrag: avoid

Gehe zu:


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