Serieller Monitor: Zwei fast gleiche Sketche, einer gibt aus, der andere nicht

Hallo Leute,
kapier da was wohl gar nicht. Habe jetzt einige Sketche die ploetzlich ohne Ausgabe sind und keinen Plan warum. Habe noch einen Sketch gefunden der gibt noch wie gewohnt aus, es geht um eine BlinkWithOutDelay Variante. Der andere Sketch wo jetzt nicht funktioniert ist eigentlich der gleiche, veraendert wurde er in der Zeile 3, aus:

int LED_1 = 3;

wurde

int LED_1 = LED_BUILTIN;

und ab Zeile 35 wurden vierfache Zeilen Ausgaben (der Optik wegen)auf eine gekuerzt. Erklaert sich selber wenn ihr es seht. Beide Sketche laufen, beide haben den selben USB Port, die richtige Bautrate und kompelieren natuerich auch normal.

Zuerst der Sketch der ohne Ausgabe im Seriellen Monitor ist.


 
int LED_1 = LED_BUILTIN;
int zaehler1 = 0;
int zaehler2 = 0;
int zaehler3 = 0;
int zaehler4 = 0;
unsigned long currentMillis = 0;
unsigned long previousMillis1 = 0; 
unsigned long previousMillis2 = 0; 
unsigned long previousMillis3 = 0; 
unsigned long previousMillis4 = 0;        
const long pause1 = 3500;     //LED aus.
const long pause2 = 4000;     //LED an.
const long pause3 = 6500;     //LED aus.
const long pause4 = 9000;     //LED an.       

void setup() {
  Serial.begin(9600);
  pinMode(LED_1, OUTPUT);
}

void loop() {
  if (zaehler1 < 2) {
    digitalWrite(LED_1, HIGH); // If Bedingung wird nur einmal erfuellt (oder 2 mal, also 0 und 1).  
    }
  if (zaehler1 < 4) {          // Soll das duchzaehlen bis ultimo verhindern.
    //Serial.print("Zaehler1: ");
    //Serial.println(zaehler1);
    if (currentMillis - previousMillis1 >= pause1) {   //im ersten Durchlauf wird currentMillis
      previousMillis1 = currentMillis;                 // an previusMillis1 uebergeben,
      zaehler1 ++;                                     // Wenn der Zaehler auf 2 steht 
      if (zaehler1 == 2){                              // geht einmal die LED an.
        digitalWrite(LED_1, LOW);
        Serial.println("LED_1 aus. zaehler1 == 2");     
      }              
    }
  }
   if (zaehler2 < 4) {
   //Serial.print("Zaehler2: ");
   //Serial.println(zaehler2);
   if (currentMillis - previousMillis2 >= pause2) {
     previousMillis2 = currentMillis;
     zaehler2 ++;
     if (zaehler2 == 2){       
       digitalWrite(LED_1, HIGH);
       Serial.println("LED_1 an. zaehler2 == 2");      
      }              
    }
  }
   if (zaehler3 < 4) {
   //Serial.print("Zaehler3: ");
   //Serial.println(zaehler3);
   if (currentMillis - previousMillis3 >= pause3) {
     previousMillis3 = currentMillis;
     zaehler3 ++;
     if (zaehler3 == 2){       
       digitalWrite(LED_1, LOW);
       Serial.println("LED_1 an. zaehler3 == 2");       
      }              
    }
  }
    if (zaehler4 < 4) {
    //Serial.print("Zaehler4: ");
    //Serial.println(zaehler4);
    if (currentMillis - previousMillis4 >= pause4) {
      previousMillis4 = currentMillis;
      zaehler4 ++;
      if (zaehler4 == 2){       
        digitalWrite(LED_1, HIGH);
        Serial.println("LED_1 an. zaehler4 == 2");      
      }              
    }
  }

   
}

Und jetzt der fast gleiche Sketch, der aber auch im Monitor ausgibt.


 
int LED_1 = 3;
int zaehler1 = 0;
int zaehler2 = 0;
int zaehler3 = 0;
int zaehler4 = 0;
unsigned long previousMillis1 = 0; 
unsigned long previousMillis2 = 0; 
unsigned long previousMillis3 = 0; 
unsigned long previousMillis4 = 0;        
const long pause1 = 2000;     //LED aus.
const long pause2 = 7000;     //LED an.
const long pause3 = 15000;    //LED aus.
const long pause4 = 20000;    //LED an.       

void setup() {
  Serial.begin(9600);
  pinMode(LED_1, OUTPUT);
}

void loop() {
  unsigned long currentMillis = millis();
  if (zaehler1 < 2) {
    digitalWrite(LED_1, HIGH); // Das wird nur wichtig wenn der Sketch an einem Umschalter haengt                              // also von Programm 1 zu 2.  
    }
  if (zaehler1 < 4) {
    //Serial.print("Zaehler1: ");
    //Serial.println(zaehler1);
    if (currentMillis - previousMillis1 >= pause1) {
      previousMillis1 = currentMillis;
      zaehler1 ++;
      if (zaehler1 == 2){       
        digitalWrite(LED_1, LOW);
        Serial.println("LED_1 aus. zaehler1 == 2");
        Serial.println("LED_1 aus. zaehler1 == 2");
        Serial.println("LED_1 aus. zaehler1 == 2");
        Serial.println("LED_1 aus. zaehler1 == 2");      
      }              
    }
  }
   if (zaehler2 < 4) {
   //Serial.print("Zaehler2: ");
   //Serial.println(zaehler2);
   if (currentMillis - previousMillis2 >= pause2) {
     previousMillis2 = currentMillis;
     zaehler2 ++;
     if (zaehler2 == 2){       
       digitalWrite(LED_1, HIGH);
       Serial.println("LED_1 an. zaehler2 == 2");
       Serial.println("LED_1 an. zaehler2 == 2");
       Serial.println("LED_1 an. zaehler2 == 2");
       Serial.println("LED_1 an. zaehler2 == 2");       
      }              
    }
  }
   if (zaehler3 < 4) {
   //Serial.print("Zaehler3: ");
   //Serial.println(zaehler3);
   if (currentMillis - previousMillis3 >= pause3) {
     previousMillis3 = currentMillis;
     zaehler3 ++;
     if (zaehler3 == 2){       
       digitalWrite(LED_1, LOW);
       Serial.println("LED_1 aus. zaehler3 == 2");
       Serial.println("LED_1 aus. zaehler3 == 2");
       Serial.println("LED_1 aus. zaehler3 == 2");
       Serial.println("LED_1 aus. zaehler3 == 2");       
      }              
    }
  }
    if (zaehler4 < 4) {
    //Serial.print("Zaehler4: ");
    //Serial.println(zaehler4);
    if (currentMillis - previousMillis4 >= pause4) {
      previousMillis4 = currentMillis;
      zaehler4 ++;
      if (zaehler4 == 2){       
        digitalWrite(LED_1, HIGH);
        Serial.println("LED_1 an. zaehler4 == 2");
        Serial.println("LED_1 an. zaehler4 == 2");
        Serial.println("LED_1 an. zaehler4 == 2");
        Serial.println("LED_1 an. zaehler4 == 2");       
      }              
    }
  }

   
}

Ich komme nicht drauf, wahrscheinlich was einfaches. Ich moechte mich schon mal fuer die Hilfe im Voraus bedanken.

Gruesse,

gutschy

hast Du das absichtlich im 1. Sketch weggelassen? (1. Zeile im loop)

Das ist meinem BeyondCompare auch aufgefallen:

:slight_smile:

Und dadurch wird keine If-Abfrage erfüllt, mit der Folge das nie ein Serial.print ausgeführt wird, und somit nichts am Monitor erscheint.

Ja sorry Leute, ist wohl gerade nicht meine Zeit, bzw. dieses gelegenheits Skripten laesst einen wohl immer alt aussehen. Na ja, hier trotzdem von mir meinen grossen Dank, und danke der Nachsicht und dem Mangel an Laestereien. :expressionless:

Ist eine Variable die hardwareabhängig ist und den Pin bezeichent an dem ein LED auf der Platine gelötet ist. Bei den meisten Arduinos ist das Pin 13.

Grüße Uwe

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.