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
Funktionsaufruf einer anderen Funktion
10.12.2014, 15:16
Beitrag #1
Funktionsaufruf einer anderen Funktion
Hallo. Ich habe zwei Funktionen geschrieben. Ich erkläre sie kurz:
Diese Funktion ist quasi ein delay(); ohne Verzögerung, wie man das Beispiel auch im Internet findet. Für meinen Zweck habe ich das natürlich etwas abgewandelt. An diese Funktion wird mit dem Aufruf f_interval(); auch der Wert der gewünschten Verzögerung übergeben. Das ganze mache ich, damit ich später in der whileschleife der Funktion einen Status abfragen möchte.
Code:
void f_interval(long interval){
  unsigned long currentMillis = millis();
  while(currentMillis > 0){
    //change_accept();
    unsigned long currentMillis = millis();
    if(currentMillis - previousMillis > interval) {
      Serial.print(currentMillis - previousMillis);
      Serial.print("\t");
      delay(20);
      
      // save the last time you blinked the LED
      previousMillis = currentMillis;
      break;
    }
  }
}
Die nächste Funktion ruft die eben gezeigte Funktion auf. Die folgende Funktion ist dafür da, um einen Status eines digitalen Pins abzufragen. Wenn der Status auf 0 geht, dann wird eine Kette von Dingen abgearbeitet. Hierbei sollen einige RGB-LEDs in der Farbe grün für einen gewissen Zeitraum leuchten. Nach dem definierten Zeitraum sollen die LEDs wieder ausgehen und eine Variable wird geändert. Soweit, so gut. Hier erst einmal die Funktion:
Code:
void change_accept(){
  mic_val = digitalRead(inPin);   // read the input pin
  digitalWrite(ledPin, mic_val);    // sets the LED to the button's value
  
  if(mic_val < 1){
     for( int i=0 ; i < num_stripes ; i++){
       for(int j=0; j < NUMPIXELS; j++){ //Schleife für einen normalen Ring mit einer Farbe.
         stripes[i].setPixelColor(j, stripes[i].Color(0, 50, 0)); // Setzt die Farbe eines Pixels an der aktuellen Position aus der Schleife - für den Blinker ist es orange
         stripes[i].show();
       }  
      }
      f_interval(3000);
      for( int i=0 ; i < num_stripes ; i++){
       for(int j=0; j < NUMPIXELS; j++){ //Schleife für einen normalen Ring mit einer Farbe.
         stripes[i].setPixelColor(j, stripes[i].Color(0, 0, 0)); // Setzt die Farbe eines Pixels an der aktuellen Position aus der Schleife - für den Blinker ist es orange
         stripes[i].show();
       }  
      }
      if(mode < max_modus){
       mode = mode + 1;
       f_interval(100);
      }
     else{
       mode = 1;
       f_interval(100);
     }
    }
}
Und zwar rufe ich wieder mit f_interval(); und einem übergebenen Wert die erst genannte Funktion auf um die LEDs für 3000ms leuchten zu lassen. Das funktioniert aber nicht. Die LEDs gehen für den Bruchteil einer Sekunde an, und dann sofort wieder aus. Die in der Funktion aufgerufene Funktion wird also nicht einwandfrei abgearbeitet und ich weiß nicht warum. Könnt ihr mir einen Tipp geben?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.12.2014, 15:59
Beitrag #2
RE: Funktionsaufruf einer anderen Funktion
Hi,
Du musst wahrscheinlich vor der while-Schleife erstmal previousMillis setzen, sonst hat das ja noch den Wert vom letzten Mal. Ganz sicher bin ich mir allerdings nicht, da Du uns ja nicht alles zeigst.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.12.2014, 17:24
Beitrag #3
RE: Funktionsaufruf einer anderen Funktion
Ich habe das ganze nun anders gelöst. Dieses Problem hat sich also erledigt, danke Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Ausschaltverzögerung bei einer PV Heizung Hans_Maulwurf 27 746 29.11.2016 23:38
Letzter Beitrag: georg01
  Innenwiderstand einer Batterie (Rundzelle 1,5V) Einsteiger94 2 206 24.07.2016 11:42
Letzter Beitrag: SkobyMobil
  Funktion mit Parameterübergabe - u8g torsten_156 8 404 22.06.2016 18:53
Letzter Beitrag: Pit
  Brauche etwas Hilfe bei der Umsetzung einer Idee raspido 3 537 23.04.2016 10:26
Letzter Beitrag: rkuehle
  I2C Ansteuerung einer MSM3 (elv mp3 Box) Voreifel 2 316 09.04.2016 17:56
Letzter Beitrag: Voreifel
  Problem: SDFat - Das Ende einer Datei finden und Schleife beenden MartinK 4 490 01.04.2016 05:49
Letzter Beitrag: MartinK
  Problem: RFID code mit Inhalt einer Textdatei auf einer SD Karte vergleichen MartinK 6 515 29.03.2016 16:45
Letzter Beitrag: MartinK
  Inhalt einer Variable mit per Virtual Wire versenden toto1975 17 1.774 26.03.2016 18:57
Letzter Beitrag: hotsystems
  Funktion in Loop einmalig ausführen Haustechno 4 647 09.03.2016 22:43
Letzter Beitrag: Haustechno
  HC-05 Modul auf Funktion prüfen. arduinofan 2 365 03.02.2016 19:18
Letzter Beitrag: arduinofan

Gehe zu:


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