-         

Ergebnis 1 bis 2 von 2

Thema: Variable aus for-schleife ausserhalb weiterbenutzen. Arduino

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.11.2010
    Beiträge
    11

    Variable aus for-schleife ausserhalb weiterbenutzen. Arduino

    Anzeige

    Hallo,


    ich habe derzeit das Problem, dass ich eine Variable, die während einer for-schleife geändert wird, später nichtmehr nutzen kann.



    Die Schleife läuft eine gewisse Zeit lang.
    In der Schleife wird in gewissem Zeitabstand 2 mal ein Sensor ausgelesen. Die beiden Werte werden verglichen. Bei großen Unterschieden zwischen den Werten wird eine weitere Variable erhöht.

    Den "Endwert" dieser weitere Variable würde ich auch gerne ausserhalb der for-schleife nutzen.
    Über ein "serial.Println(weitere Variable)" innerhalb der Schleife, sehe ich, dass die Variable hochgezählt wird und auch ausgegeben werden kann.
    Sobald ich sie nach der Schleife ausgeben lasse ist sie wieder = 0.

    Definiert wurde die Variable global, nur scheint ihre Änderung innerhalb der Schleife hängen zu bleiben.



    void setup() {
    Serial.begin(9600);
    pinMode(A0,INPUT);
    }
    int vU = 0; // Variable die ausserhalb benutzt werden soll
    int vk;

    void loop()
    {
    vk = fotos(); // fotos() ließt den Sensor aus, vergleicht
    // und sollte am Ende die Variable ausgeben
    // und als vk speichern
    //Serial.println(vk);
    }


    int fotos()
    {
    long vZeit = 0;
    int vV = 0; // Sensorwert
    int vN = 0; // "skalierter" Sensorwert
    int vNa = 0; // "skalierter" Sensorwert der vorherigen Messung


    for (vZeit = 0; vZeit < 3000; vZeit++) // Schleife soll 3000 mal durchlaufen werden
    {
    vV = analogRead(A0); // Sensor auslesen
    vN =sq(vV-62); // Wert skalieren
    if(vNa > 200 && vN < 20) // bei abfallender Flanke vU hochzählen
    {
    vU++;
    }
    delayMicroseconds(50); // Zeit zwischen den beiden Messungen
    vNa = vN; // neuen "alten Wert"
    Serial.println(vU); // Von hier lässt sich vU ausgeben

    }
    Serial.println(vU); // Von hier nichtmehr
    return vU; // return liefert demnach auch nurnoch 0
    }


    ps.: Interessieren tut mich nur der Wert den vU nach dem Schleifendurchlauf hat. Also die "Sensorausschläge" innerhalb xx Sekunden.
    Soll später mal ein Drehzahlmesser werden.


    Vielen Dank

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Da vU global definiert ist und alles in "fotos()" passiert, müsste es eigentlich gehen.
    Desweiteren benutz bitte die Code-Tags, sonst ist dein Code kaum lesbar.

    Wenn es um eine Drehzahlmessung geht, gehst du falsch an die Sache ran! Da wäre ein Timer und ein Interrupt Eingang viel besser. Und dann noch ne analoge Messung um die steigende Flanke festzustellen, oh je...

Ähnliche Themen

  1. ARDUINO ARDUINO l293D + MegaservoLib
    Von m1ch15inner im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 2
    Letzter Beitrag: 11.07.2011, 12:50
  2. Bascom Variable in for schleife hochzählen
    Von Movie85 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 15.03.2010, 20:46
  3. Variable aus Struktur mit for Schleife abfragen
    Von Matzenerich im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 18.09.2008, 19:57
  4. Schallortung weit ausserhalb der Spezis - Gefährlich für µC?
    Von MeckPommER im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 19.11.2007, 11:32
  5. Schleife mit "word" variable...
    Von mathiasd im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 6
    Letzter Beitrag: 14.10.2004, 15:19

Berechtigungen

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