- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: stimmt dieser Sketch-Teil?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221

    stimmt dieser Sketch-Teil?

    Anzeige

    Powerstation Test
    Code:
    /   
    unsigned long zeit;
    unsigned long zeit1;
    unsigned long zeit2;
    .
    .
    .
    void loop() {
    
    zeit=millis();
    zeit1=zeit;
    zeit2=zeit-zeit1; 
    
                   
    while (analogValue>50 && zeit2>5000) {   //5 Sekunden Wartezeit sowie höchste Schwelle nicht überschritten
    zeit2=zeit-zeit1;
    digitalWrite(green, LOW);
    
    digitalWrite(yellow, HIGH);
    
     digitalWrite(red, LOW);
    usw.
    Was ich will:
    eine Wartezeit mit der bestimmten LED Konstellation (Yellow = on) soll erhalten werden, außer eine Schwelle wird unterschritten (A/D Eingang < 50), dann sollte die Schleife beendet werden. Klappt aber in der Praxis nicht (keine Wartezeit)...
    Geändert von xxrider (11.02.2018 um 11:53 Uhr)

  2. #2
    HaWe
    Gast
    ich denke: nein.

    durch zeit=millis();
    zeit1=zeit;
    zeit2=zeit-zeit1;

    wird
    zeit1=zeit;

    und weil dadurch
    zeit-zeit1 dasselbe ist wie zeit-zeit,
    und weil zeit-zeit immer = Null ist,
    ist automatisch immer
    zeit2=0.

    Tipp:
    benenne mal zeit1 um in "zeitAlt"
    und zeit2 benenne um in "delta_t"
    dann wirds vielleich auch semantisch klarer.

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    Zitat Zitat von HaWe Beitrag anzeigen
    ich denke: nein.

    durch zeit=millis();
    zeit1=zeit;
    zeit2=zeit-zeit1;

    wird
    zeit1=zeit;

    und weil dadurch
    zeit-zeit1 dasselbe ist wie zeit-zeit,
    und weil zeit-zeit immer = Null ist,
    ist automatisch immer
    zeit2=0.

    Tipp:
    benenne mal zeit1 um in "zeitAlt"
    und zeit2 benenne um in "delta_t"
    dann wirds vielleich auch semantisch klarer.
    Ich wollte über Zeit1=Zeit einen Wert für zeit1 unveränderlich für die darauffolgende While-Schleife festlegen.
    IN der while-schleife dürfte doch zeit1 nicht verändert werden, aber zeit (davon unabhängig, weils im Hintergrund immer weiterläuft) ist variabel, oder verstehe ich das falsch?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Das sollte evtl. so funktionieren:

    Code:
    digitalWrite(yellow, HIGH);   // gelbe Led an ?
    
    zeit = millis() + 5000;    // aktueller Zeitwwert + deine maximale Wartezeit 5 Sekunden
    do                         // Schleifen  
    {
      if (analogValue < 50) break;     // Abbruch der Schleife wenn der Analogwert < 50 wird
    } while (millis() < zeit);         // ansonsten weiterschleifen bis millis den Wert von zeit überschreitet
    
    // landet hier wenn die Zeit abgelaufen ist und/oder Analogwert kleiner 50 geworden ist.
    
    digitalWrite(yellow, LOW);   // gelbe Led aus ?
    must natürlich dafür sorgen, das dein Analogwert noch innerhalb der Schleife irgendwie aktualisiert wird.

    Siro
    Geändert von Siro (11.02.2018 um 20:45 Uhr)

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.02.2006
    Beiträge
    221
    Danke, Siro. Das habe ich gemerkt, dass man in der Schleife den A/D Wandler weiter auslesen muss.
    Und auch für deinen Code, werde ich mir anschauen und mir zueigen machen!

Ähnliche Themen

  1. Outsourcen von Sketch-Teilcode als Lib?
    Von HaWe im Forum Arduino -Plattform
    Antworten: 4
    Letzter Beitrag: 11.06.2017, 15:58
  2. Fehler im Sketch für ATtiny?
    Von achso im Forum Arduino -Plattform
    Antworten: 35
    Letzter Beitrag: 08.11.2016, 20:13
  3. Digispark - Sketch hochladen
    Von Cysign im Forum Arduino -Plattform
    Antworten: 2
    Letzter Beitrag: 23.02.2016, 14:36
  4. Sketch Problem
    Von wendtdir im Forum Arduino -Plattform
    Antworten: 1
    Letzter Beitrag: 16.07.2015, 19:25
  5. Was stimmt an dieser OPV-Schaltung nicht?
    Von Jaecko im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 06.02.2012, 20:34

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen