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
Fehler im Programmablauf
04.10.2016, 16:26 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2016 16:28 von binderj1.)
Beitrag #1
Fehler im Programmablauf
Hallo
Ich brauche wieder eure Hilfe.
Für die Raffstore in meinem Haus habe ich ein Prog. geschrieben, (rauf, runter, Lamellen drehen) funktioniert einwandfrei.
nun mein Problem.
Ich habe das Prog. um die Windmessung erweitert, nun ist der Processor die meiste Zeit mit der Windmessung beschäftigt, das die Taster für die Raffstorebedienung nicht mehr erkannt werden.

vielleicht kann mir jemand weiter helfen

Code:
//*****************************************

#include "OneButton.h"

const int taster1 = 22;
const int taster2 = 23;
const int taster3 = 24;
const int taster4 = 25;
const int taster5 = 26;
const int taster6 = 27;
const int taster7 = 28;
const int taster8 = 29;
const int taster9 = 30;
const int taster10 = 31;
const int taster11 = 32;
const int taster12 = 33;
const int taster13 = 34;
const int taster14 = 35;
const int taster15 = 36;
const int taster16 = 37;
const int taster17 = 11;  //zentral auf
const int taster18 = 12;  //zentral ab
const int windsensor = 15;  //Windsensor

const int k1 = 38;
const int k2 = 39;
const int k3 = 40;
const int k4 = 41;
const int k5 = 42;
const int k6 = 43;
const int k7 = 44;
const int k8 = 45;
const int k9 = 46;
const int k10 = 47;
const int k11 = 48;
const int k12 = 49;
const int k13 = 50;
const int k14 = 51;
const int k15 = 52;
const int k16 = 53;


unsigned long k1millis;
unsigned long k2millis;
unsigned long k3millis;
unsigned long k4millis;
unsigned long k5millis;
unsigned long k6millis;
unsigned long k7millis;
unsigned long k8millis;
unsigned long k9millis;
unsigned long k10millis;
unsigned long k11millis;
unsigned long k12millis;
unsigned long k13millis;
unsigned long k14millis;
unsigned long k15millis;
unsigned long k16millis;

const long kzeit = 90000; // laufzeit [in msec.] für Raffstore von ganz unten bis ganz oben, und umgekehrt
const long kzeitk = 100;  //laufzeit für Taster tippen (Lamellen drehen)

int k1lang = 0;
int k2lang = 0;
int k3lang = 0;
int k4lang = 0;
int k5lang = 0;
int k6lang = 0;
int k7lang = 0;
int k8lang = 0;
int k9lang = 0;
int k10lang = 0;
int k11lang = 0;
int k12lang = 0;
int k13lang = 0;
int k14lang = 0;
int k15lang = 0;
int k16lang = 0;

int k1kurz = 0;
int k2kurz = 0;
int k3kurz = 0;
int k4kurz = 0;
int k5kurz = 0;
int k6kurz = 0;
int k7kurz = 0;
int k8kurz = 0;
int k9kurz = 0;
int k10kurz = 0;
int k11kurz = 0;
int k12kurz = 0;
int k13kurz = 0;
int k14kurz = 0;
int k15kurz = 0;
int k16kurz = 0;

int zentral_auf = 0;
int zentral_ab = 0;

OneButton button1(taster1, false);
OneButton button2(taster2, false);
OneButton button3(taster3, false);
OneButton button4(taster4, false);
OneButton button5(taster5, false);
OneButton button6(taster6, false);
OneButton button7(taster7, false);
OneButton button8(taster8, false);
OneButton button9(taster9, false);
OneButton button10(taster10, false);
OneButton button11(taster11, false);
OneButton button12(taster12, false);
OneButton button13(taster13, false);
OneButton button14(taster14, false);
OneButton button15(taster15, false);
OneButton button16(taster16, false);
OneButton button17(taster17, false);
OneButton button18(taster18, false);

long imp;
long startzeit;

void setup() {
pinMode(taster1 , INPUT);
pinMode(taster2 , INPUT);
pinMode(taster3 , INPUT);
pinMode(taster4 , INPUT);
pinMode(taster5 , INPUT);
pinMode(taster6 , INPUT);
pinMode(taster7 , INPUT);
pinMode(taster8 , INPUT);
pinMode(taster9 , INPUT);
pinMode(taster10 , INPUT);
pinMode(taster11 , INPUT);
pinMode(taster12 , INPUT);
pinMode(taster13 , INPUT);
pinMode(taster14 , INPUT);
pinMode(taster15 , INPUT);
pinMode(taster16 , INPUT);
pinMode(taster17 , INPUT);
pinMode(taster18 , INPUT);
pinMode(windsensor , INPUT);

pinMode(k1 , OUTPUT);
pinMode(k2 , OUTPUT);
pinMode(k3 , OUTPUT);
pinMode(k4 , OUTPUT);
pinMode(k5 , OUTPUT);
pinMode(k6 , OUTPUT);
pinMode(k7 , OUTPUT);
pinMode(k8 , OUTPUT);
pinMode(k9 , OUTPUT);
pinMode(k10 , OUTPUT);
pinMode(k11 , OUTPUT);
pinMode(k12 , OUTPUT);
pinMode(k13 , OUTPUT);
pinMode(k14 , OUTPUT);
pinMode(k15 , OUTPUT);
pinMode(k16 , OUTPUT);

button1.attachClick(klick1);
button1.attachLongPressStart(longPressStart1);
button2.attachClick(klick2);
button2.attachLongPressStart(longPressStart2);
button3.attachClick(klick3);
button3.attachLongPressStart(longPressStart3);
button4.attachClick(klick4);
button4.attachLongPressStart(longPressStart4);
button5.attachClick(klick5);
button5.attachLongPressStart(longPressStart5);
button6.attachClick(klick6);
button6.attachLongPressStart(longPressStart6);
button7.attachClick(klick7);
button7.attachLongPressStart(longPressStart7);
button8.attachClick(klick8);
button8.attachLongPressStart(longPressStart8);
button9.attachClick(klick9);
button9.attachLongPressStart(longPressStart9);
button10.attachClick(klick10);
button10.attachLongPressStart(longPressStart10);
button11.attachClick(klick11);
button11.attachLongPressStart(longPressStart11);
button12.attachClick(klick12);
button12.attachLongPressStart(longPressStart12);
button13.attachClick(klick13);
button13.attachLongPressStart(longPressStart13);
button14.attachClick(klick14);
button14.attachLongPressStart(longPressStart14);
button15.attachClick(klick15);
button15.attachLongPressStart(longPressStart15);
button16.attachClick(klick16);
button16.attachLongPressStart(longPressStart16);
button17.attachClick(klick17);
button18.attachClick(klick18);


}

void loop() {
//***********Windmessung*******************
    
   imp=0;
  startzeit=micros();
  do{
    if (pulseIn(windsensor,HIGH)>0)
     {
      imp++;
     }
    }
  
  while(micros()<(startzeit+5e6));  //Messfenster 5e6 = 5000000microsec. = 5sec.
  
  float z;
  
  z=(imp*0.158256);
   float topspeed = 50;  //in km/h eingeben
  if (z > topspeed)
  {
k1lang = 1;
k1millis = millis();
k2lang = 0;
k3lang = 1;
k3millis = millis();
k4lang = 0;
k5lang = 1;
k5millis = millis();
k6lang = 0;
k7lang = 1;
k7millis = millis();
k8lang = 0;
k9lang = 1;
k9millis = millis();
k10lang = 0;
k11lang = 1;
k11millis = millis();
k12lang = 0;
k13lang = 1;
k13millis = millis();
k14lang = 0;
k15lang = 1;
k15millis = millis();
k16lang = 0;
}

//***********Windmessung*******************  
  
  
  button1.tick();
  
//*************** K1 kurz ********************
if (k1kurz == 1){  
   if ( millis() - k1millis < kzeitk)
  {
    k2lang = 0;
    digitalWrite(k1, LOW);
    //digitalWrite(k2, HIGH);
  }
  else
  {    
    digitalWrite(k1, HIGH);
    digitalWrite(k2, HIGH);
    k1kurz = 0;
  }  
  }  
//*************** K1 lang ********************
if (k1lang == 1){  
   if ( millis() - k1millis < kzeit)
  {
    digitalWrite(k1, LOW);
    //digitalWrite(k2, HIGH);    
  }
  else
  {    
    digitalWrite(k1, HIGH);
    digitalWrite(k2, HIGH);
    k1lang = 0;
  }  
  }    
//*************** K1 ENDE ********************  
   button2.tick();

//*************** K2 kurz ********************
if (k2kurz == 1 )
{  
  
   if ( millis() - k2millis < kzeitk)
  {
    digitalWrite(k1, LOW);
   if (k1lang == 0)
      {
       digitalWrite(k2, LOW);    
      }
  }
  else
  {    
    digitalWrite(k1, HIGH);
    digitalWrite(k2, HIGH);
    k1lang = 0;
    k2kurz = 0;
  }  
  }  
//*************** K2 lang ********************
if (k2lang == 1){  
   if ( millis() - k2millis < kzeit)
  {
    digitalWrite(k1, LOW);
    digitalWrite(k2, LOW);    
  }
  else
  {    
    digitalWrite(k1, HIGH);
    digitalWrite(k2, HIGH);
    k2lang = 0;
  }  
  }  
//*************** K2 ENDE ********************
   button3.tick();
//*************** k3 kurz ********************
if (k3kurz == 1){  
   if ( millis() - k3millis < kzeitk)
  {
    k4lang = 0;
    digitalWrite(k3, LOW);
    //digitalWrite(k4, HIGH);
  }
  else
  {    
    digitalWrite(k3, HIGH);
    digitalWrite(k4, HIGH);
    k3kurz = 0;
  }  
  }  
//*************** k3 lang ********************
if (k3lang == 1){  
   if ( millis() - k3millis < kzeit)
  {
    digitalWrite(k3, LOW);
    //digitalWrite(k4, HIGH);    
  }
  else
  {    
    digitalWrite(k3, HIGH);
    digitalWrite(k4, HIGH);
    k3lang = 0;
  }  
  }    
//*************** k3 ENDE ********************
   button4.tick();

//*************** k4 kurz ********************
if (k4kurz == 1 )
{  
  
   if ( millis() - k4millis < kzeitk)
  {
    digitalWrite(k3, LOW);
   if (k3lang == 0)
      {
       digitalWrite(k4, LOW);    
      }
  }
  else
  {    
    digitalWrite(k3, HIGH);
    digitalWrite(k4, HIGH);
    k3lang = 0;
    k4kurz = 0;
  }  
  }  
//*************** k4 lang ********************
if (k4lang == 1){  
   if ( millis() - k4millis < kzeit)
  {
    digitalWrite(k3, LOW);
    digitalWrite(k4, LOW);    
  }
  else
  {    
    digitalWrite(k3, HIGH);
    digitalWrite(k4, HIGH);
    k4lang = 0;
  }  
  }  
//*************** k4 ENDE ********************
   button5.tick();
//*************** k5 kurz ********************
if (k5kurz == 1){  
   if ( millis() - k5millis < kzeitk)
  {
    k6lang = 0;
    digitalWrite(k5, LOW);
    //digitalWrite(k6, HIGH);
  }
  else
  {    
    digitalWrite(k5, HIGH);
    digitalWrite(k6, HIGH);
    k5kurz = 0;
  }  
  }  
//*************** k5 lang ********************
if (k5lang == 1){  
   if ( millis() - k5millis < kzeit)
  {
    digitalWrite(k5, LOW);
    //digitalWrite(k6, HIGH);    
  }
  else
  {    
    digitalWrite(k5, HIGH);
    digitalWrite(k6, HIGH);
    k5lang = 0;
  }  
  }    
//*************** k5 ENDE ********************
   button6.tick();

//*************** k6 kurz ********************
if (k6kurz == 1 )
{  
  
   if ( millis() - k6millis < kzeitk)
  {
    digitalWrite(k5, LOW);
   if (k5lang == 0)
      {
       digitalWrite(k6, LOW);    
      }
  }
  else
  {    
    digitalWrite(k5, HIGH);
    digitalWrite(k6, HIGH);
    k5lang = 0;
    k6kurz = 0;
  }  
  }  
//*************** k6 lang ********************
if (k6lang == 1){  
   if ( millis() - k6millis < kzeit)
  {
    digitalWrite(k5, LOW);
    digitalWrite(k6, LOW);    
  }
  else
  {    
    digitalWrite(k5, HIGH);
    digitalWrite(k6, HIGH);
    k6lang = 0;
  }  
  }  
//*************** k6 ENDE ********************
   button7.tick();
//*************** k7 kurz ********************
if (k7kurz == 1){  
   if ( millis() - k7millis < kzeitk)
  {
    k8lang = 0;
    digitalWrite(k7, LOW);
    //digitalWrite(k8, HIGH);
  }
  else
  {    
    digitalWrite(k7, HIGH);
    digitalWrite(k8, HIGH);
    k7kurz = 0;
  }  
  }  
//*************** k7 lang ********************
if (k7lang == 1){  
   if ( millis() - k7millis < kzeit)
  {
    digitalWrite(k7, LOW);
    //digitalWrite(k8, HIGH);    
  }
  else
  {    
    digitalWrite(k7, HIGH);
    digitalWrite(k8, HIGH);
    k7lang = 0;
  }  
  }    
//*************** k7 ENDE ********************
   button8.tick();

//*************** k8 kurz ********************
if (k8kurz == 1 )
{  
  
   if ( millis() - k8millis < kzeitk)
  {
    digitalWrite(k7, LOW);
   if (k7lang == 0)
      {
       digitalWrite(k8, LOW);    
      }
  }
  else
  {    
    digitalWrite(k7, HIGH);
    digitalWrite(k8, HIGH);
    k7lang = 0;
    k8kurz = 0;
  }  
  }  
//*************** k8 lang ********************
if (k8lang == 1){  
   if ( millis() - k8millis < kzeit)
  {
    digitalWrite(k7, LOW);
    digitalWrite(k8, LOW);    
  }
  else
  {    
    digitalWrite(k7, HIGH);
    digitalWrite(k8, HIGH);
    k8lang = 0;
  }  
  }  
//*************** k8 ENDE ********************
   button9.tick();
//*************** k9 kurz ********************
if (k9kurz == 1){  
   if ( millis() - k9millis < kzeitk)
  {
    k10lang = 0;
    digitalWrite(k9, LOW);
    //digitalWrite(k10, HIGH);
  }
  else
  {    
    digitalWrite(k9, HIGH);
    digitalWrite(k10, HIGH);
    k9kurz = 0;
  }  
  }  
//*************** k9 lang ********************
if (k9lang == 1){  
   if ( millis() - k9millis < kzeit)
  {
    digitalWrite(k9, LOW);
    //digitalWrite(k10, HIGH);    
  }
  else
  {    
    digitalWrite(k9, HIGH);
    digitalWrite(k10, HIGH);
    k9lang = 0;
  }  
  }    
//*************** k9 ENDE ********************  
   button10.tick();

//*************** k10 kurz ********************
if (k10kurz == 1 )
{  
  
   if ( millis() - k10millis < kzeitk)
  {
    digitalWrite(k9, LOW);
   if (k9lang == 0)
      {
       digitalWrite(k10, LOW);    
      }
  }
  else
  {    
    digitalWrite(k9, HIGH);
    digitalWrite(k10, HIGH);
    k9lang = 0;
    k10kurz = 0;
  }  
  }  
//*************** k10 lang ********************
if (k10lang == 1){  
   if ( millis() - k10millis < kzeit)
  {
    digitalWrite(k9, LOW);
    digitalWrite(k10, LOW);    
  }
  else
  {    
    digitalWrite(k9, HIGH);
    digitalWrite(k10, HIGH);
    k10lang = 0;
  }  
  }  
//*************** k10 ENDE ********************
   button11.tick();
//*************** k11 kurz ********************
if (k11kurz == 1){  
   if ( millis() - k11millis < kzeitk)
  {
    k12lang = 0;
    digitalWrite(k11, LOW);
    //digitalWrite(k12, HIGH);
  }
  else
  {    
    digitalWrite(k11, HIGH);
    digitalWrite(k12, HIGH);
    k11kurz = 0;
  }  
  }  
//*************** k11 lang ********************
if (k11lang == 1){  
   if ( millis() - k11millis < kzeit)
  {
    digitalWrite(k11, LOW);
    //digitalWrite(k12, HIGH);    
  }
  else
  {    
    digitalWrite(k11, HIGH);
    digitalWrite(k12, HIGH);
    k11lang = 0;
  }  
  }    
//*************** k11 ENDE ********************  
   button12.tick();

//*************** k12 kurz ********************
if (k12kurz == 1 )
{  
  
   if ( millis() - k12millis < kzeitk)
  {
    digitalWrite(k11, LOW);
   if (k11lang == 0)
      {
       digitalWrite(k12, LOW);    
      }
  }
  else
  {    
    digitalWrite(k11, HIGH);
    digitalWrite(k12, HIGH);
    k11lang = 0;
    k12kurz = 0;
  }  
  }  
//*************** k12 lang ********************
if (k12lang == 1){  
   if ( millis() - k12millis < kzeit)
  {
    digitalWrite(k11, LOW);
    digitalWrite(k12, LOW);    
  }
  else
  {    
    digitalWrite(k11, HIGH);
    digitalWrite(k12, HIGH);
    k12lang = 0;
  }  
  }  
//*************** k12 ENDE ********************
   button13.tick();
//*************** k13 kurz ********************
if (k13kurz == 1){  
   if ( millis() - k13millis < kzeitk)
  {
    k14lang = 0;
    digitalWrite(k13, LOW);
    //digitalWrite(k14, HIGH);
  }
  else
  {    
    digitalWrite(k13, HIGH);
    digitalWrite(k14, HIGH);
    k13kurz = 0;
  }  
  }  
//*************** k13 lang ********************
if (k13lang == 1){  
   if ( millis() - k13millis < kzeit)
  {
    digitalWrite(k13, LOW);
    //digitalWrite(k14, HIGH);    
  }
  else
  {    
    digitalWrite(k13, HIGH);
    digitalWrite(k14, HIGH);
    k13lang = 0;
  }  
  }    
//*************** k13 ENDE ********************  
   button14.tick();

//*************** k14 kurz ********************
if (k14kurz == 1 )
{  
  
   if ( millis() - k14millis < kzeitk)
  {
    digitalWrite(k13, LOW);
   if (k13lang == 0)
      {
       digitalWrite(k14, LOW);    
      }
  }
  else
  {    
    digitalWrite(k13, HIGH);
    digitalWrite(k14, HIGH);
    k13lang = 0;
    k14kurz = 0;
  }  
  }  
//*************** k14 lang ********************
if (k14lang == 1){  
   if ( millis() - k14millis < kzeit)
  {
    digitalWrite(k13, LOW);
    digitalWrite(k14, LOW);    
  }
  else
  {    
    digitalWrite(k13, HIGH);
    digitalWrite(k14, HIGH);
    k14lang = 0;
  }  
  }  
//*************** k14 ENDE ********************
   button15.tick();
//*************** k15 kurz ********************
if (k15kurz == 1){  
   if ( millis() - k15millis < kzeitk)
  {
    k16lang = 0;
    digitalWrite(k15, LOW);
    //digitalWrite(k16, HIGH);
  }
  else
  {    
    digitalWrite(k15, HIGH);
    digitalWrite(k16, HIGH);
    k15kurz = 0;
  }  
  }  
//*************** k15 lang ********************
if (k15lang == 1){  
   if ( millis() - k15millis < kzeit)
  {
    digitalWrite(k15, LOW);
    //digitalWrite(k16, HIGH);    
  }
  else
  {    
    digitalWrite(k15, HIGH);
    digitalWrite(k16, HIGH);
    k15lang = 0;
  }  
  }    
//*************** k15 ENDE ********************  
   button16.tick();
//*************** k16 kurz ********************
if (k16kurz == 1 )
{  
  
   if ( millis() - k16millis < kzeitk)
  {
    digitalWrite(k15, LOW);
   if (k15lang == 0)
      {
       digitalWrite(k16, LOW);    
      }
  }
  else
  {    
    digitalWrite(k15, HIGH);
    digitalWrite(k16, HIGH);
    k15lang = 0;
    k16kurz = 0;
  }  
  }  
//*************** k16 lang ********************
if (k16lang == 1){  
   if ( millis() - k16millis < kzeit)
  {
    digitalWrite(k15, LOW);
    digitalWrite(k16, LOW);    
  }
  else
  {    
    digitalWrite(k15, HIGH);
    digitalWrite(k16, HIGH);
    k16lang = 0;
  }  
  }  
  
button17.tick();
button18.tick();

//*************** k16 ENDE ********************


}

//--------------ende loop---------------------------------



void klick1()
{
k1millis = millis();
  k1kurz =1;
}
//***************************
void longPressStart1()
{
   k1millis = millis();
k1lang =1;
}
//***************************
void klick2()
{
   k2millis = millis();
   k2kurz =1;
}
//***************************
void longPressStart2()
{
  k2millis = millis();
k2lang =1;
}
//***************************
void klick3()
{
   k3millis = millis();
   k3kurz =1;
}
//***************************
void longPressStart3()
{
  k3millis = millis();
k3lang =1;
}
//***************************
void klick4()
{
   k4millis = millis();
   k4kurz =1;
}
//***************************
void longPressStart4()
{
  k4millis = millis();
k4lang =1;
}
//***************************
void klick5()
{
   k5millis = millis();
   k5kurz =1;
}
//***************************
void longPressStart5()
{
  k5millis = millis();
k5lang =1;
}
//***************************
void klick6()
{
   k6millis = millis();
   k6kurz =1;
}
//***************************
void longPressStart6()
{
  k6millis = millis();
k6lang =1;
}
//***************************
void klick7()
{
   k7millis = millis();
   k7kurz =1;
}
//***************************
void longPressStart7()
{
  k7millis = millis();
k7lang =1;
}

//***************************
void klick8()
{
   k8millis = millis();
   k8kurz =1;
}
//***************************
void longPressStart8()
{
  k8millis = millis();
k8lang =1;
}
//***************************
void klick9()
{
   k9millis = millis();
   k9kurz =1;
}
//***************************
void longPressStart9()
{
  k9millis = millis();
k9lang =1;
}
//***************************
void klick10()
{
   k10millis = millis();
   k10kurz =1;
}
//***************************
void longPressStart10()
{
  k10millis = millis();
k10lang =1;
}
//***************************
void klick11()
{
   k11millis = millis();
   k11kurz =1;
}
//***************************
void longPressStart11()
{
  k11millis = millis();
k11lang =1;
}
//***************************
void klick12()
{
   k12millis = millis();
   k12kurz =1;
}
//***************************
void longPressStart12()
{
  k12millis = millis();
k12lang =1;
}
//***************************
void klick13()
{
   k13millis = millis();
   k13kurz =1;
}
//***************************
void longPressStart13()
{
  k13millis = millis();
k13lang =1;
}
//***************************
void klick14()
{
   k14millis = millis();
   k14kurz =1;
}
//***************************
void longPressStart14()
{
  k14millis = millis();
k14lang =1;
}
//***************************
void klick15()
{
   k15millis = millis();
   k15kurz =1;
}
//***************************
void longPressStart15()
{
  k15millis = millis();
k15lang =1;
}
//***************************
void klick16()
{
   k16millis = millis();
   k16kurz =1;
}
//***************************
void longPressStart16()
{
  k16millis = millis();
k16lang =1;
}
//***************************
//***************************
void klick17()
{
k1lang = 1;
k1millis = millis();
k2lang = 0;
k3lang = 1;
k3millis = millis();
k4lang = 0;
k5lang = 1;
k5millis = millis();
k6lang = 0;
k7lang = 1;
k7millis = millis();
k8lang = 0;
k9lang = 1;
k9millis = millis();
k10lang = 0;
k11lang = 1;
k11millis = millis();
k12lang = 0;
k13lang = 1;
k13millis = millis();
k14lang = 0;
k15lang = 1;
k15millis = millis();
k16lang = 0;
}


//***************************
void klick18()
{
k1lang = 0;
k2millis = millis();
k2lang = 1;
k3lang = 0;
k4lang = 1;
k4millis = millis();
k5lang = 0;
k6lang = 1;
k6millis = millis();
k7lang = 0;
k8lang = 1;
k8millis = millis();
k9lang = 0;
k10lang = 1;
k10millis = millis();
k11lang = 0;
k12lang = 1;
k12millis = millis();
k13lang = 0;
k14lang = 1;
k14millis = millis();
k15lang = 0;
k16lang = 1;
k16millis = millis();
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.10.2016, 16:39 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2016 16:41 von hotsystems.)
Beitrag #2
RE: Fehler im Programmablauf
Sorry, aber durch deinen Sketch durchzufinden, ist für einen Außenstehenden sehr schwer, sogar fast unmöglich.

Du hast fast keine Dokumentation und die Variablennamen sind fürchterlich. Da findet man sich nicht durch.

Du solltest da besser sprechende Namen verwenden, dann findest du dich nach einem Jahr auch besser zurecht.

Z.B. finde ich nicht, wo die Variable "5e6" gefüllt wird.

"while(micros()<(startzeit+5e6)); //Messfenster 5e6 = 5000000microsec. = 5sec."
Ich vermute an der Stelle bleibt er hängen.

Und "while" ist oft blockierend, warum nimmst du nicht "if" ?

Sorry, wenn ich da keine bessere Antwort liefern kann, aber der Sketch ist echt unübersichtlich.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.10.2016, 16:47
Beitrag #3
RE: Fehler im Programmablauf
genau das meinte ich;

Der Zyklus für das messen der Windgeschwindigkeit dauert 5 Sekunden (5sec. messfenster, Impulse zählen und auf geschwindigkeit zurückrechnen) .
während dieser Zeit werden keine Bedien-Taster erkannt.

was muss ich ändern?

lG Hannes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.10.2016, 16:59 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2016 17:01 von hotsystems.)
Beitrag #4
RE: Fehler im Programmablauf
Dann erkläre doch mal, was genau ist die Variable "5e6".

Du musst die "while-Schleife" rausnehmen.
Der bleibt doch 5 Sek. darin hängen.
Wieso muss diese 5 Sek. warten ?

Nochmals, ohne eine Erklärung versteht man den Code nicht.

Und wenn er immer diese 5 Sek. braucht, wie du schreibst, dann geht es nicht anders.

Dann musst du diese Funktion eben Timergesteuert nur alle 30 Min aufrufen oder einen eigenen Controller dafür verwenden, oder alle anderen Funktionen per Interrupt steuern.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.10.2016, 17:00 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2016 17:05 von Pit.)
Beitrag #5
RE: Fehler im Programmablauf
(04.10.2016 16:39)hotsystems schrieb:  Sorry, aber durch deinen Sketch durchzufinden, ist für einen Außenstehenden sehr schwer, sogar fast unmöglich.

Du hast fast keine Dokumentation und die Variablennamen sind fürchterlich. Da findet man sich nicht durch.

Du solltest da besser sprechende Namen verwenden, dann findest du dich nach einem Jahr auch besser zurecht.

Z.B. finde ich nicht, wo die Variable "5e6" gefüllt wird.

"while(micros()<(startzeit+5e6)); //Messfenster 5e6 = 5000000microsec. = 5sec."
Ich vermute an der Stelle bleibt er hängen.

Und "while" ist oft blockierend, warum nimmst du nicht "if" ?

Sorry, wenn ich da keine bessere Antwort liefern kann, aber der Sketch ist echt unübersichtlich.


mama mia,
so etwas nennt man spaghetti-code in perfektion.
den code kann man durch verwendung von indizies/arrays bestimmt um 90% des jetzigen umfanges verkleinern, dann wird er auch lesbarer.
------------------
--->"Und "while" ist oft blockierend, warum nimmst du nicht "if" ?""
while ist nichts anderes als ein verkapptes if, es blockiert nicht mehr als ein if.
wenn ein while-konstrukt blockiert und ein if nicht, dann ist der programm-code nicht korrekt und man muss nach dem fehler suchen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2016, 09:51
Beitrag #6
RE: Fehler im Programmablauf
(04.10.2016 16:59)hotsystems schrieb:  Dann erkläre doch mal, was genau ist die Variable "5e6".

Hallo hotsystems,

5e6 ist keine Variable sondern eine Schreibweise für 5 * 10^6

Gruß
Stephan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2016, 10:05
Beitrag #7
RE: Fehler im Programmablauf
(05.10.2016 09:51)StephanBuerger schrieb:  Hallo hotsystems,
5e6 ist keine Variable sondern eine Schreibweise für 5 * 10^6

Hallo Stephan,
vielen Dank für den Hinweis, hatte mir das schon fast gedacht.

Verstehe allerdings nicht, warum mir der TO das nicht erklären kann.
Einzige Vermutung, der Code ist nicht von ihm.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2016, 16:15
Beitrag #8
RE: Fehler im Programmablauf
(05.10.2016 10:05)hotsystems schrieb:  
(05.10.2016 09:51)StephanBuerger schrieb:  Hallo hotsystems,
5e6 ist keine Variable sondern eine Schreibweise für 5 * 10^6

Hallo Stephan,
vielen Dank für den Hinweis, hatte mir das schon fast gedacht.

Verstehe allerdings nicht, warum mir der TO das nicht erklären kann.
Einzige Vermutung, der Code ist nicht von ihm.

nur zur Berichtigung das mi 5e6 ist die Zahlenschreibweise in Zehnerpotenzen
5e6 sind 5millionen siehe beschreibenden Text im Prog.

pConfused. der Code im ersten Beitrag stammt von mir.


Eine Frage an PIT
du schreibst in deinem Beitrag, das der Code mit der Verwendung von indizies/arrays kürzer wird.
kannst du mir ein beispiel senden, denn ich bin noch Programieranfänger.

Danke
Hannes
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehler in meinem Programm Franz54 7 163 01.12.2016 23:58
Letzter Beitrag: hotsystems
  Fehler beim Kompilieren binderj1 5 296 03.10.2016 21:27
Letzter Beitrag: hotsystems
Smile Simpler Fehler bei MAP? malsehen 8 230 02.10.2016 19:46
Letzter Beitrag: malsehen
  Fehler beim Speichern von Projekten Manni66 16 691 23.08.2016 10:05
Letzter Beitrag: hotsystems
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 744 02.07.2016 14:18
Letzter Beitrag: hotsystems
  Adafruit SD-master / logger shield: Fehler beim 2. Kompilieren kl-ing 3 337 06.06.2016 16:07
Letzter Beitrag: Bitklopfer
  Fehler beim Kompilieren Rudi 4 906 05.02.2016 19:46
Letzter Beitrag: Rudi
  Fehler in WCharacter.h beim Kompilieren sfl 0 357 04.02.2016 14:52
Letzter Beitrag: sfl
  LCD Display Fehler s_fr 2 641 30.01.2016 10:21
Letzter Beitrag: s_fr
  exit status 1 - Fehler beim kompilieren do1xxy 5 2.716 18.01.2016 17:43
Letzter Beitrag: hotsystems

Gehe zu:


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