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
Wiederkehrende Aktion alle XX min, Modulo
19.11.2014, 11:17
Beitrag #9
RE: Wiederkehrende Aktion alle 15 min
Moin,

die Abfrage
Code:
if ( !(minute % 15)
würde bei 60 bedeuten:
Code:
if ( !(0) && sekunde == 0)

Modulo gibt also kein true/false zurück, sondern einen Zahlenwert.

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2014, 11:45
Beitrag #10
RE: Wiederkehrende Aktion alle 15 min
(19.11.2014 11:17)rkuehle schrieb:  ...
Modulo gibt also kein true/false zurück, sondern einen Zahlenwert.
...

Hallo Ricardo,

Ja, das ist so.

Wenn Daniel eine Echtzeituhr laufen hat dann bewegen sich die Minuten von 0 bis 59. 60 gibt es also nicht.

Mein Gedanke mit %15 war die Minutenwerte durch 15 zu teilen und den Zahlenwert des Teilungsrestes auszuwerten. Bei Minute = 0,15,30,45 ist der Teilungsrest = 0.
Ich hatte gehofft, um den Code kurz zu halten, dass man einen Zahlenwert von 0 auch ohne Prüfung (if wert == 0) auf false prüfen kann.

Das scheint aber nach deiner Aussage nicht möglich zu sein.
Man muss also wohl erst aus dem Ergebnis der Modulo-Rechnung eine boolean Variable bilden und kann diese dann erst in der if-Abfrage verwenden.

Sehe ich das so richtig?

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.11.2014, 12:12 (Dieser Beitrag wurde zuletzt bearbeitet: 19.11.2014 13:53 von rkuehle.)
Beitrag #11
RE: Wiederkehrende Aktion alle 15 min
Hallo Arne,

ja genau da wollte ich hin.
Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.11.2014, 12:36 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2014 12:36 von Wampo.)
Beitrag #12
RE: Wiederkehrende Aktion alle 15 min
Hy,

ja das ist richtig ich benutze eine Echtzeituhr (DS1307), diese wird später noch über ein Funkmodul ausgestattet.
Ich muss hier an dieser Stelle nochmal gestehen das ich das mit dem Modulo nich raff. Ok mein ergebnis ist beim Modulo immer iwas mit 0,1,2 oder 3, richtig?

Nehme ich das jetzt richtig auf: Ich kann mit einem Modulo sozusagen immer einen gleichen Abstand eine Aktion ausführen lassen.
Bei if ( !(minute % 7) && sekunde == 0) kommt also meine aktion alle 7 minuten???

Ich könnte ja was ganz was einfaches machen und auf millis() (wie rkuehle es erwähnt hat) die Zeit stoppen, da es aber ne Uhr werden soll laufen mir doch die millis() iwann über oder is das nicht mehr der fall wenn ich eine RTC verwende.


Würdet ihr in diesem fall wie bei mir else if abfrage nehmen oder wäre eine if else sinnvoller!?
Code:
if (( m == 15 || m == 30 || m == 45) && s == 0)
{
  Police(2,15,30); //durchläufe, pixelbreite, geschwindigkeit
}
else if ((m == 00 && s == 00))
{
  Regenbogen(4,2); //durchläufe, geschwindigkeit
}




MfG Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.11.2014, 15:14 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2014 16:12 von rkuehle.)
Beitrag #13
RE: Wiederkehrende Aktion alle 15 min
Hallo Daniel,
Zitat:da es aber ne Uhr werden soll laufen mir doch die millis() iwann über oder is das nicht mehr der fall wenn ich eine RTC verwende.
Davor brauchst du keine Angst haben, wenn du die Abfrage ob die (nächsten) 15 Minuten rum sind, richtig formulierst.
Schau dir mal meinen Eintrag v. 23.02. hier http://www.arduinoforum.de/arduino-Threa...t=overflow an.
Code:
if ( !(minute % 7) && sekunde == 0)
bedeutet übersetzt alle 7 Minuten (also ohne Restwert, also Modulo=0)
Code:
if ( !(0) && sekunde == 0)
Da 0 beim Arduino die Entsprechung von false ist (alle anderen integer Werte bedeuten true) ergibt das dann als Ausdruck
Code:
if ( !(false) && sekunde == 0)
// bzw.
if ( true && sekunde == 0)
Das ergibt dann bei
Sekunde = 0 -> false
Sekunde != 0 -> immer true

Kommt beim Modulo ein Restwert (also if (false &&...) ergibt das immer true

Hoffe das hilft ein wenig weiter.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.11.2014, 19:09
Beitrag #14
RE: Wiederkehrende Aktion alle 15 min
Wäre die Umsetzung mit einem Interrupt nicht vielleicht am ressourcenschonendsten und einfachsten?
Der Modulo-Operator zeigt immer den "Rest" an:

1%1=0 (1-1)
5%3=2 (5-3)
6%3=0 (6-3-3)
7%8=7 (7-8 nicht passend)

Sind meine Beispiele einigermaßen verständlich? Smile

Falls nicht schreib nochmal und ich versuche es nochmal etwas ausführlicher :-)

Liebe Grüße,
xuino
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.11.2014, 01:58
Beitrag #15
RE: Wiederkehrende Aktion alle 15 min
Ok, vielen dank schon mal das ihr mir das so verständlich machen wollt! Wink
ich glaub langsam wirds....Mühsam ernährt sich das eichhörnchen...

nochmal kurz meine andere frage zum thema if oder else if, is bissl untergegangen glaub ich
Code:
if (( m == 15 || m == 30 || m == 45) && s == 0)
{
  Police(2,15,30); //durchläufe, pixelbreite, geschwindigkeit
}
else if ((m == 00 && s == 00))
{
  Regenbogen(4,2); //durchläufe, geschwindigkeit
}

würdet ihr sagen diese if --> else if Anweisung ist hier richtig platziert oder ist hier die if --> else richtiger ???

@Xuino:
1. Mit dem gedanken habe ich auch schon gespielt den Visuellen "GONG" per Interrupt auszulösen, leider hab ich jetzt noch kein plan wo ich den einbinden soll.

2. es soll ein Interrupt per Capacitiven Touchsensor ausgelöst werden, leider ebenfalls noch kein strahl wo ich den einbinden soll.

Greez Wampo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.11.2014, 07:09
Beitrag #16
RE: Wiederkehrende Aktion alle XX min, Modulo
Hi,
Diese else if kannst du meiner Ansicht nach auch durch eine "normale" if-Verzweigung machen. So macht ich das eigentlich meistens und hebe mir den Else-Teil für möglicherweise nicht definierte Zustände oder so und dann dementsprechend Fehlermeldungen auf.

Unter folgendem Link:
http://arduino.cc/en/pmwiki.php?n=Refere...hInterrupt

Wird dir die Verwendung von Interrupts näher gebracht. Oben kannst du direkt sehen welches Board welche interruptfähigen Eingänge hat. Weiter unten werden dir dann kurz die Möglichkeiten geschildert, was dann anschließend durch einen recht anschaulichen Codeschnipsel noch gezeigt werden.

Liebe Grüße,
xuino
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Ankommende Daten(Webserver) am MEGA2560 für eine Aktion auswerten ? arduinofan 0 481 11.12.2015 09:06
Letzter Beitrag: arduinofan
  Arduino alle Speicher auf o setzen Woldeu 0 1.061 23.06.2013 08:43
Letzter Beitrag: Woldeu

Gehe zu:


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