-         

+ Antworten
Ergebnis 1 bis 5 von 5

Thema: millis Starten Stoppen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.11.2011
    Beiträge
    8

    millis Starten Stoppen

    Anzeige

    GearBest Black Friday Verbraucherelektronik Promotion
    Hey,

    Bei mir ist mal wieder ein Problem aufgetaucht und will nicht gehn.

    Über einen IR Sensor wird ein Wert eingelesen. Beim Überschreiten einer gewissen Spannung (sagen wir 3,5V) soll eine LED eingeschaltet werden, allerdings erst nachdem der Wert länger als 1 Sekunde anliegt. Sollte sich die Spannung innerhalb dießer einen Sekunde unter 3,5V fallen soll die LED nicht an gehen. Eine delay Anwendung ist nicht möglich, da das restliche Programm weiter laufen muss.
    Hier könnte die millis() Anwendung in betracht gezogen werden, da hierbei bei jedem durchlauf die vergangene Zeit in ms gemessen wird. Ist es möglich die millis Anwendung mit einer if Anweisung zu starten und zu stoppen.


    Das Programm unten ist natürlich purer quatsch, damit wollte ich nur verdeutlichen was ich meine.

    if (sensorValue >= 3,5){
    millis} Hier soll gestartet werden

    if (sensorValue <= 3,5){
    millis == 0} Hier soll gestoppt werden

    If (sensorValue >=3,5 && millis >= 1000){
    digitalWrite (LED, HIGH)


    wenn Jemand eine bessere Idee als die millis geschichte hat, nur her damit.
    Schonmal Danke

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Die Funktion millis kenne ich nicht für C(++). Nur diesen Arduino Funktion (http://arduino.cc/en/Reference/millis) die den Anzahl von Milisekunden zurück gibt Seit das anschalten. Ist das das gleiche Prinzip, oder etwas anderes? Gebe mal den Code den du dafür kennst.

    Wenn das so ist, wurde ich den Millis-ausgabewert speichern in einer Variabele auf das moment wenn sensorValue >= 3.5 ist. Danach, bei jeder neue Durchlauf, und wann sensorValue wieder < 3.5, vergleichen ob den letzte Millis wert auf das Moment 1000 größer ist als den alte gespeicherte Millis-wert. Und auf Basis diese Entscheidung die Led anschalten oder wieder ausschalten.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    06.11.2011
    Beiträge
    8
    Super, damit funbktionierts einwandfrei.

    anstat einer led wurde testweise eine serielle Ausgabe genommen.
    Danke

    int var = millis();
    int sensorValue = analogRead(A2);
    float voltage = sensorValue * (3.5 / 400.0);
    if(sensorValue >=350 & var >= summe){
    Serial.println("test");
    digitalWrite(LAMP, 0);
    test = test + 1;


    }

    if(sensorValue >= 350){
    summe = time;
    //Serial.println(time);

    }

    if(sensorValue <=350 & test >= 1){
    Serial.println("test ende");
    test = test = 0;

    }

    if(sensorValue <= 350){
    time = var + 700;
    //Serial.println(time);

    }

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Gut das es für dich nach Wunsch funktioniert. Mir ist das ganze mit den neue Variablen test, time und var aber Mist. Ich verstehe dein Logik nicht. Es ist Empfehlenswert einige Kommentare zu zu fügen damit anderen, aber auch du selbst in den Zukunft, versteht was jeder Teil bedeutet. Muss nicht natürlich, ist aber ein Tipp.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    06.11.2011
    Beiträge
    8
    Ist schon passiert sollte nur ein test sein. Hätte auch einfacher gemacht werden können, aber es funktioniert.

+ Antworten

Ähnliche Themen

  1. Timer per Taste Starten oder Stoppen
    Von Hicki im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 14.01.2013, 23:06
  2. Antworten: 44
    Letzter Beitrag: 28.11.2010, 19:05
  3. Sei() Cli() Atmega 16 Timer starten/stoppen
    Von Jimmy83 im Forum C - Programmierung (GCC u.a.)
    Antworten: 23
    Letzter Beitrag: 08.05.2010, 02:04
  4. Starten|Stoppen (C)
    Von BlackDevil im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 03.07.2008, 11:07
  5. Timer 1 stoppen...?
    Von BASTIUniversal im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 05.01.2006, 12:29

Stichworte

Berechtigungen

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